commit 42d1d8adfc7d093a889dbdd908218df7ede47d2e Author: lywsvip Date: Thu May 7 16:02:30 2026 +0800 init diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4fc13c7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[*.{ts,js,vue,css}] +indent_size = 2 diff --git a/.env b/.env new file mode 100644 index 0000000..7e878e0 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +VITE_SOME_KEY=123 +# 打包路径 根据项目不同按需配置 +VITE_BASE_URL = ./ \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..afed627 --- /dev/null +++ b/.env.development @@ -0,0 +1,3 @@ +VITE_SOME_KEY=456 +# 打包路径 +VITE_BASE_URL = ./ diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..7d4202a --- /dev/null +++ b/.env.test @@ -0,0 +1,3 @@ +VITE_SOME_KEY=789 +# 打包路径 +VITE_BASE_URL = ./ diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..66eb01a --- /dev/null +++ b/.eslintignore @@ -0,0 +1,14 @@ +snapshot* +dist +lib +es +esm +node_modules +src/_common +static +cypress +script/test/cypress +_site +temp* +static/ +!.prettierrc.js \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..452e237 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,117 @@ +{ + "extends": [ + "plugin:@typescript-eslint/recommended", + "eslint-config-airbnb-base", + "@vue/typescript/recommended", + "plugin:vue/vue3-recommended", + "plugin:vue-scoped-css/base", + "plugin:prettier/recommended" + ], + "env": { + // 浏览器全局变量 + "browser": true, + "node": true, + "jest": true, + // 启用 ES6 语法支持以及新的 ES6 全局变量或类型 + "es6": true + }, + "globals": { + "defineProps": "readonly", + "defineEmits": "readonly" + }, + "plugins": ["vue", "@typescript-eslint"], + "parserOptions": { + // parser指定解析器,默认的为espree。babel-eslint是一个Babel parser的包装器,这个包装器使得 Babel parser 可以和 ESLint 协调工作 + "parser": "@typescript-eslint/parser", + // 指定来源的类型,'script' (默认) 或 'module'(如果你的代码是 ECMAScript 模块) + "sourceType": "module" + // "allowImportExportEverywhere": true, + // "ecmaFeatures": { + // "jsx": true + // } + }, + "settings": { + "import/extensions": [".js", ".jsx", ".ts", ".tsx"] + }, + "rules": { + "no-console": "off", + "no-continue": "off", + "no-restricted-syntax": "off", + "no-plusplus": "off", + "no-param-reassign": "off", + "no-shadow": "off", + "guard-for-in": "off", + + "import/extensions": "off", + "import/no-unresolved": "off", + "import/no-extraneous-dependencies": "off", + "import/prefer-default-export": "off", + "import/first": "off", // https://github.com/vuejs/vue-eslint-parser/issues/58 + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "vue/first-attribute-linebreak": 0, + + "@typescript-eslint/no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" + } + ], + "no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" + } + ], + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/ban-types": "off", + "class-methods-use-this": "off" // 因为AxiosCancel必须实例化而能静态化所以加的规则,如果有办法解决可以取消 + }, + "overrides": [ + { + "files": ["*.vue"], + "rules": { + // "vue/component-name-in-template-casing": [2, "kebab-case"],//模板中是否将组件名称强制转化成横杠连接的命名 + "vue/require-default-prop": 0, + "vue/multi-word-component-names": 0, + "vue/no-reserved-props": 0, + "vue/no-v-html": 0, + "vue-scoped-css/enforce-style-type": ["error", { "allows": ["scoped"] }], + } + }, + { + "files": ["*.ts", "*.tsx"], // https://github.com/typescript-eslint eslint-recommended + "rules": { + "constructor-super": "off", // ts(2335) & ts(2377) + "getter-return": "off", // ts(2378) + "no-const-assign": "off", // ts(2588) + // 禁止function定义中出现重名参数 + "no-dupe-args": "off", // ts(2300) + "no-dupe-class-members": "off", // ts(2393) & ts(2300) + "no-dupe-keys": "off", // ts(1117) + "no-func-assign": "off", // ts(2539) + "no-import-assign": "off", // ts(2539) & ts(2540) + "no-new-symbol": "off", // ts(2588) + "no-obj-calls": "off", // ts(2349) + "no-redeclare": "off", // ts(2451) + "no-setter-return": "off", // ts(2408) + "no-this-before-super": "off", // ts(2376) + "no-undef": "off", // ts(2304) + //禁止在return、throw、continue、break语句之后出现不可达代码 + "no-unreachable": "off", // ts(7027) + "no-unsafe-negation": "off", // ts(2365) & ts(2360) & ts(2358) + "no-var": "error", // ts transpiles let/const to var, so no need for vars any more + "prefer-const": "error", // ts provides better types with const + "prefer-rest-params": "error", // ts provides better types with rest args over arguments + "prefer-spread": "error", // ts transpiles spread to apply, so no need for manual apply + "valid-typeof": "off", // ts(2367) + "vue/v-on-event-hyphenation":"off", // 事件名中横线 + "vue/no-dupe-keys":"true" // 禁止出现重复的属性 + } + } + ] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4f369c9 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - build + - docs +build: + stage: build + tags: + - aliyun-kubernetes + script: + - node -v + - npm -v + - npm install --registry=http://registry.npm.taobao.org + + # - sudo rm -rf /data/nginx/html/${CI_PROJECT_NAME}/* + # - sudo cp -rf ./dist/* /data/nginx/html/${CI_PROJECT_NAME}/ + # - sudo chown nginx.nginx -R /data/nginx/html/${CI_PROJECT_NAME} + only: + - master + +# docs: +# stage: docs +# tags: +# - aliyun-kubernetes +# script: +# - sudo rm -rf /data/nginx/html/${CI_PROJECT_NAME}-docs/* +# - sudo cp -rf ./docs/* /data/nginx/html/${CI_PROJECT_NAME}-docs/ +# - sudo chown nginx.nginx -R /data/nginx/html/${CI_PROJECT_NAME}-docs +# only: +# - master + diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d4fb4ca --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "spaceBeforeFunctionParen": true, + "tabWidth": 2, + "useTabs": false, + "trailingComma": "none", + "eslintIntegration": true, + "singleQuote": true, + "semi": false, + "endOfLine": "auto" +} \ No newline at end of file diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..1b7da3c --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,8 @@ +# .stylelintignore +# 旧的不需打包的样式库 +*.min.css + +# 其他类型文件 +*.js +*.jpg +*.woff diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4b3d5b4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM nginx +LABEL maintainer="信息中心研发组 " + +COPY ./dist/ /usr/share/nginx/html/ +RUN chmod -R 777 /usr/share/nginx/html/ + +RUN chmod -R 777 /etc/nginx/conf.d/default.conf +COPY ./default.conf /etc/nginx/conf.d/ + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..68bd268 --- /dev/null +++ b/README.md @@ -0,0 +1,186 @@ +# 云岚到家-机构端 +#### 项目简介 +> 当代人们的生活节奏越来越快,很多人因为工作和其他事情没有时间去处理家务事,因此需要家政服务来帮助他们解决日常生活中的问题。云岚到家家政项目是一种在线服务,将家政服务与互联网技术相结合,为用户提供更加便捷的家政服务。 + +项目迭代日志: +23年3月30 - 合并更新 处理无法合并问题 +#### 研发规范遵循: + +- 主体使用驼峰命名 +- 公共样式使用 - 连接命名 +- 内部样式 驼峰命名 +- 页面命名 使用小写开头的驼峰命名 +- 组件使用大写开头命名 + +#### 产品原型及设计 +- 设计稿: https://codesign.qq.com/app/design/P4VlZMr6dzjq6wL/board?team_id=6dqN292MdajaBXe +- 产品原型: https://codesign.qq.com/app/prototype/a4Jd0NaP739AMkb/detail + +#### 运行环境 - 初始开发环境及工具 + +- 项目开发环境: win10 + node: v16.19.0 + npm: 8.12.1 || pnpm: 6.32.8 + +#### 访问地址 + + +#### 技术栈应用 +Vue 3 + TypeScript +Tdesign + Vite + pinia +#### 项目结构 +```html +├── commitlint.config.js - commintlint 规范 +├── docker - docker 部署配置文件 +│ └── nginx.conf - 若开启 browerhistroy 可参考配置 +├── docs - 项目展示图 - 首页截图 +├── globals.d.ts - 通用声明文件 +├── index.html - 主 html 文件 +├── mock - mock 目录 +│ └── index.ts +├── node_modules - 项目依赖 +├── package-lock.json +├── package.json +├── public - 公用资源文件 +│ └── favicon.ico +├── shims-vue.d.ts +├── src - 页面代码 +│ ├── api 请求相关 +│ ├── assets 公共资源 +│ │ ├── images 图片资源 +│ ├── api - 接口 +│ ├── components - 公用组件 +│ │ ├── Delete - 删除弹层:只需从父组件传删除的内容提示 +│ │ ├── Confirm - 确认弹层:只需从父组件传确认的内容提示 +│ │ ├── expBall - 展示版本更新内容的小球球 +│ │ ├── ImageMagnify - 查看图片弹层 +│ │ ├── NoData - 无数据的空页面形式 +│ │ ├── product-card - 产品卡片 +│ │ ├── result - 结果 +│ │ ├── editDialog - 编辑弹窗 +│ │ ├── thumbnail - 缩略图 +│ │ ├── trend - 趋势图 +│ │ ├── Message - 提示弹层 +│ │ │ ├──Success - 成功通知弹窗 +│ │ │ ├──ProdDisabled - 禁用提示弹窗 +│ │ ├── switchBar - tab切换 +│ │ │ ├──switchBar - tab切换 +│ │ │ ├──switchBarindex - 首页tab切换 +│ │ │ ├──switchBartop - 线条tab +│ ├── czriComponents - 组件包:常用,但是原有组件库实现不了,因此进行了二次开发 +│ │ ├──index.less - 组件包样式 +│ ├── layouts - 页面架构 +│ │ ├──components - 页面架构公共组件 +│ │ │ ├──Breadcrumb - 面包屑 +│ │ │ ├──Content - 内置组件,避免重复渲染DOM +│ │ │ ├──Footer - 底部公司名称 +│ │ │ ├──LayoutContentSide - 侧边栏 +│ │ │ ├──LayoutHeader - 侧边栏头部 +│ │ │ ├──Loginfo - 侧边栏退出区域 +│ │ │ ├──Notice - 通知中心,弃用 +│ │ │ ├──Search - 搜索功能 +│ │ ├──simpleComponents - 框架公用内容 +│ │ │ ├──MenuContent - 简版布局 +│ │ │ ├──SideNav - 列表菜单 +│ │──index.vue - 框架布局 +│ │──setting.vue = 设置框架风格 +│ ├── config - 项目配置 +│ │ ├──configuration - 配置项目地址和api +│ │ ├──global - 配重全局内容 +│ │ ├──proxy.ts - 代理样式 +│ │ ├──style.ts - 配置全局样式风格 +│ ├── pages - 页面展示目录 +│ │ ├──dashboard - 首页,工作台 +│ │ ├──coupon - 优惠券管理页 +│ │ │ ├──addCoupon - 新增,编辑优惠券 +│ │ │ ├──index - 列表页 +│ │ ├──coupon - 客户管理页 +│ │ ├──default - 公共缺省页 +│ │ ├──institution - 企业管理 +│ │ │ ├──authentication - 企业认证管理 +│ │ │ ├──information - 企业信息管理 +│ │ ├──personnel - 服务人员管理 +│ │ │ ├──authentication - 服务人员认证管理 +│ │ │ ├──information - 服务人员信息管理 +│ │ ├──order - 订单管理 +│ │ │ ├──dispatchList - 派单列表(已废弃) +│ │ │ ├──historyList - 历史订单列表 +│ │ │ │ ├──orderDetail - 历史订单详情 +│ │ │ │ ├──index - 列表页 +│ │ │ ├──refundList - 退款订单列表(已废弃) +│ │ │ ├──orderList - 订单列表 +│ │ │ │ ├──orderDetail - 历史订单详情 +│ │ │ │ ├──index - 列表页 +│ │ ├──reply - 原评价页面,现修改解决方案,已废弃 +│ │ ├──service - 服务管理 +│ │ │ ├──serviceType - 服务类型管理 +│ │ │ ├──service - 服务项管理 +│ │ │ │ ├──index - 服务项列表 +│ │ │ │ ├──addService - 新增,编辑服务项 +│ │ │ ├──region - 区域管理 +│ │ │ │ ├──editRegion - 设置服务 +│ │ │ │ ├──index - 区域列表 +│ │ │ │ ├──setBusiness - 调度配置 +│ │ ├──login - 登录页 +│ │ ├──user - 个人中心 +│ ├── router - 定义路由页面 +│ ├── style - 样式 +│ │ ├──componentsReast - 组件重置、全局样式 +│ │ ├──theme - 全局颜色值、公用样式 +│ │ index.less - 样式总入口 +│ │ normal.less - 普通框架样式 +│ │ noSecondMenu.less - 普通框架简化版样式 +│ │ top.less - 上左右布局 +│ ├── utils 封装工具目录 +│ ├── main.ts - 项目入口文件 +│ ├── permission.ts - 路有权限控制 +├── tsconfig.json - ts配置文件 +├── README.md - 说明文档 +└── vite.config.js - vite 配置文件 +``` +#### 安装运行 + +``` bash +## 安装依赖 +npm install || yarn +##或 +cnpm install || yarn +## 启动项目 + +# 启动 +npm run dev +# 启动链接测试环境 +npm run start + +## 构建正式环境 - 打包 +npm run build + +``` +#### 插件 +nprogress 进度条 + +viteMockServe vite 的数据模拟插件 + +vueJsx +> 使用jsx 语法 jsx语法可以更好地跟Typescript结合 在阅读UI框架源码时,发现在知名UI组件库Ant Design Vue跟Naive UI皆使用tsx语法开发 +vite-svg-loader + + + +#### 参考 + +vite +vue3 +pinia 中文文档 :类vuex +vue-router +Tdesign +Tdesign-cli + +tsconfig.json配置 +#### 文档 +tsconfig.json 配置整理 +vite.config.js vite配置文件 + +src/config/proxy.ts 后端地址配置, + +​ release:生成环境下的后端地址,使用npm run build有效 , + +vite.config.ts:配置npm run dev的代理地址 + diff --git a/assets/svg/assets-t-logo.svg b/assets/svg/assets-t-logo.svg new file mode 100644 index 0000000..af57f94 --- /dev/null +++ b/assets/svg/assets-t-logo.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/icon-ztsx 2.svg b/assets/svg/icon-ztsx 2.svg new file mode 100644 index 0000000..78f6e9a --- /dev/null +++ b/assets/svg/icon-ztsx 2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/img_logo.svg b/assets/svg/img_logo.svg new file mode 100644 index 0000000..350db17 --- /dev/null +++ b/assets/svg/img_logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..405e185 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,2 @@ +// commit-lint config +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..3745acd --- /dev/null +++ b/default.conf @@ -0,0 +1,52 @@ +server { + listen 80; + listen [::]:80; + server_name jzo2o-operation-test.itheima.net; + client_body_timeout 10m; + client_max_body_size 30m; + #charset koi8-r; + #access_log /var/log/nginx/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + + location /api/ { + proxy_pass https://jzo2o-api-test.itheima.net/; + client_body_timeout 10m; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} \ No newline at end of file diff --git a/docs/_media/icon.png b/docs/_media/icon.png new file mode 100644 index 0000000..e42f02e Binary files /dev/null and b/docs/_media/icon.png differ diff --git a/docs/_media/icon.svg b/docs/_media/icon.svg new file mode 100644 index 0000000..64a383e --- /dev/null +++ b/docs/_media/icon.svg @@ -0,0 +1,155 @@ + + + + diff --git a/docs/_media/image-20230310155201062.png b/docs/_media/image-20230310155201062.png new file mode 100644 index 0000000..4a0d0e6 Binary files /dev/null and b/docs/_media/image-20230310155201062.png differ diff --git a/docs/_media/image-20230310155305993.png b/docs/_media/image-20230310155305993.png new file mode 100644 index 0000000..3e3a780 Binary files /dev/null and b/docs/_media/image-20230310155305993.png differ diff --git a/docs/_media/image-20230313092444215.png b/docs/_media/image-20230313092444215.png new file mode 100644 index 0000000..6956d51 Binary files /dev/null and b/docs/_media/image-20230313092444215.png differ diff --git a/docs/_media/image-20230313104231264.png b/docs/_media/image-20230313104231264.png new file mode 100644 index 0000000..66e8ed0 Binary files /dev/null and b/docs/_media/image-20230313104231264.png differ diff --git a/docs/_media/image-20230313104443270.png b/docs/_media/image-20230313104443270.png new file mode 100644 index 0000000..21550bc Binary files /dev/null and b/docs/_media/image-20230313104443270.png differ diff --git a/docs/_media/image-20230315102553195.png b/docs/_media/image-20230315102553195.png new file mode 100644 index 0000000..05a8058 Binary files /dev/null and b/docs/_media/image-20230315102553195.png differ diff --git a/docs/_media/image-20230315102835351.png b/docs/_media/image-20230315102835351.png new file mode 100644 index 0000000..c65366a Binary files /dev/null and b/docs/_media/image-20230315102835351.png differ diff --git a/docs/_media/image-20230315103016408.png b/docs/_media/image-20230315103016408.png new file mode 100644 index 0000000..63e1288 Binary files /dev/null and b/docs/_media/image-20230315103016408.png differ diff --git a/docs/cover.md b/docs/cover.md new file mode 100644 index 0000000..9d70c14 --- /dev/null +++ b/docs/cover.md @@ -0,0 +1,10 @@ +![logo](_media/icon.png) + +> czri-admin 是由传智研究院研发的基于vue3.x+vite的一套后台基础架构 +- 使用vue最新技术栈:Vue3.x + TypeScript + Vite + pinia +- Prettier 统一代码格式 +- ESlint 检查代码质量和风格问题。 + +[Git](http://git.itcast.cn/development/czri-admin) +[预览](https://czri-admin.itheima.net/) +[快速开始](/zh-cn/) \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..2322b32 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,36 @@ + + + + + CZRI-ADMIN + + + + + + + +
+ + + + + diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md new file mode 100644 index 0000000..c3f64a0 --- /dev/null +++ b/docs/zh-cn/README.md @@ -0,0 +1,234 @@ +# RDesign + +#### 链条式组件库 +- 平时项目开发中,遇到已有组件库中没有涉及的组件但又经常用到,每次都得重新开发很浪费时间,针对这个问题我们进行了二次组件封装或者是重新开发,用的时候直接引入 + +#### 技术栈 +- Vue 3 + TypeScript +Tdesign + Vite + pinia + +#### 运行环境 - 初始开发环境及工具 +- Mac +- node v17.8.0 +- pnpm 6.32.8 +- npm v8.12.1 + +#### 文件架构 + +``` +├── commitlint.config.js - commintlint 规范 +├── docker - docker 部署配置文件 +│ └── nginx.conf - 若开启 browerhistroy 可参考配置 +├── docs - 项目展示图 - 首页截图 +├── globals.d.ts - 通用声明文件 +├── index.html - 主 html 文件 +├── mock - mock 目录 +│ └── index.ts +├── node_modules - 项目依赖 +├── package-lock.json +├── package.json +├── public - 公用资源文件 +│ └── favicon.ico +├── shims-vue.d.ts +├── src - 页面代码 +│ ├── api 请求相关 +│ ├── assets 公共资源 +│ │ ├── images 图片资源 +│ ├── api - 接口 +│ ├── co nponents - 公用组件 +│ │ ├── Delete - 删除弹层:只需从父组件传删除的内容提示 +│ │ ├── ImageMagnify - 查看图片弹层 +│ │ ├── Message - 提示弹层 +│ │ │ ├──Success - 成功通知弹窗 +│ │ │ ├──ProdDisabled - 禁用提示弹窗 +│ │ ├── switchBar - tab切换 +│ │ │ ├──switchBar - tab切换 +│ │ │ ├──switchBarindex - 首页tab切换 +│ │ │ ├──switchBartop - 线条tab +│ ├── czriComponents - 组件包:常用,但是原有组件库实现不了,因此进行了二次开发 +│ │ ├──AddInput - 动态添加input组件 +│ │ ├──CardListCollapse - 折叠列表 +│ │ ├──CardListSort - 带排序的列表 +│ │ ├──dropList - 可下拉展开的列表 +│ │ ├──ListDialog - 常用弹窗5(带列表的弹窗) +│ │ ├──ListScrollDialog - 常用弹窗5(带列表的弹窗、滚动分页) +│ │ ├──TabDialog - 常用弹窗6(带tab的弹窗) +│ │ ├──tabList - 带tab的列表 +│ │ ├──Transfer - 穿梭框(标题有hover状态) +│ │ ├──treeList - 树形列表 +│ │ ├──UnitDialog - 常用弹窗2(带单位和数显) +│ │ ├──index.less - 组件包样式 +│ ├── layouts - 页面架构 +│ │ ├──components - 页面架构公共组件 +│ │ │ ├──Breadcrumb - 面包屑 +│ │ │ ├──Content - 内置组件,避免重复渲染DOM +│ │ │ ├──Footer - 底部公司名称 +│ │ │ ├──LayoutContentSide - 侧边栏 +│ │ │ ├──LayoutHeader - 侧边栏头部 +│ │ │ ├──Loginfo - 侧边栏退出区域 +│ │ │ ├──Notice - 通知中心,弃用 +│ │ │ ├──Search - 搜索功能 +│ │ ├──frame - 页面架构框架 +│ │ ├──simple2Components - 框架二公用内容 +│ │ │ ├──Header - 框架顶部 +│ │ ├──simpleComponents - 框架公用内容 +│ │ │ ├──MenuContent - 简版布局 +│ │ │ ├──SideNav - 列表菜单 +│ │──index.vue - 框架布局 +│ │──setting.vue = 设置框架风格 +│ ├── pages - 页面展示目录 +│ │ ├──dashboard - 首页 +│ │ ├──detail - 详情页 +│ │ │ ├──advanced - 多卡片详情页 +│ │ │ ├──base - 基础详情页 +│ │ │ ├──deploy - 数据详情页 +│ │ │ ├──secondary - 二级详情页 +│ │ ├──form - 表单页 +│ │ │ ├──base - 基础表单页 +│ │ │ ├──step - 分步表单页 +│ │ ├──login - 普通tab登录页 +│ │ ├──login2 - 左右布局登录页 +│ │ ├──module - 组件包调用入口页,调用的组件都在(czriComponents文件加中) +│ │ ├──user - 个人中心 +│ │ ├──list - 列表页 +│ │ │ ├──base - 基础列表页 +│ │ │ ├──upBase - 基础列表页(带图) +│ │ │ ├──noSearch - 基础列表页(不带搜索) +│ │ │ ├──card - 卡片列表页 +│ │ │ ├──noData - 列表无数据页 +│ │ │ ├──statistics - 统计数据列表页 +│ │ │ ├──tab - tab切换 +│ │ │ ├──topTab - 标签列表页(顶部) +│ │ │ ├──tree - 树状筛选列表页 +│ ├── router - 定义路由页面 +│ ├── style - 样式 +│ │ ├──componentsReast - 组件重置、全局样式 +│ │ ├──theme - 全局颜色值、公用样式 +│ │ index.less - 样式总入口 +│ │ normal.less - 普通框架样式 +│ │ noSecondMenu.less - 普通框架简化版样式 +│ │ top.less - 上左右布局 +│ ├── utils 封装工具目录 +│ ├── main.ts - 项目入口文件 +│ ├── permission.ts - 路有权限控制 +├── tsconfig.json - ts配置文件 +├── README.md - 说明文档 +└── vite.config.js - vite 配置文件 +``` + +#### 运行 + +``` bash +## 安装依赖 +npm install || yarn + +## 启动项目 + +## 启动链接mock +npm run dev + +## 启动链接测试环境 +npm run start +``` + +### 构建 + +```bash +## 构建正式环境 - 打包 +npm run build + +``` + +#### 插件 +- [nprogress 进度条 ](https://madewith.cn/23) +- [viteMockServe vite 的数据模拟插件](https://www.csdn.net/tags/MtTaMg1sODE4ODA3LWJsb2cO0O0O.html) +- [vueJsx ](https://zhuanlan.zhihu.com/p/460328418) +> 使用jsx 语法 jsx语法可以更好地跟Typescript结合 在阅读UI框架源码时,发现在知名UI组件库Ant Design Vue跟Naive UI皆使用tsx语法开发 +- [vite-svg-loader](https://www.jianshu.com/p/bd3835d17ad1) + +#### 参考 +- [vite](https://vitejs.cn/guide/#index-html-and-project-root) +- [vue3](https://v3.cn.vuejs.org/guide/introduction.html) +- [pinia 中文文档 :类vuex](https://pinia.web3doc.top/introduction.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E4%BD%BF%E7%94%A8-pinia%EF%BC%9F) +- [vue-router](https://router.vuejs.org/zh/guide/) +- [Tdesign](https://tdesign.tencent.com/vue-next/getting-started) +- [Tdesign-cli](https://tdesign.tencent.com/starter/docs/vue-next/get-started) +- [pnpm](https://zhuanlan.zhihu.com/p/404784010) +#### 配置文件 +- [.prettierrc vscode自动格式化插件配置](https://github.com/prettier/prettier) +- [.eslintrc eslint配置文件](https://cn.eslint.org/docs/rules/) +- [tsconfig.json 配置整理](https://wenku.baidu.com/view/1fc27fe29dc3d5bbfd0a79563c1ec5da50e2d6bd.html) +- [vite.config.js vite配置文件](https://vitejs.cn/config/) + + +#### 兼容性 + +| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Edge >=84 | Firefox >=83 | Chrome >=84 | Safari >=14.1 | + +### 组件概览 + +框架上,当前此组件库共包含 + +三套框架 + +六套主题 + +两种模式 + +页面上,当前共包含 + +列表页9个,包含列表(基础)、列表(带图)、列表(无搜索)、列表(Tab切换列表)、列表(Tab切换页面)、列表(关键数据)、列表(卡片式)、列表(树状筛选)、列表(无数据)等九个列表,位于page下面的list文件夹 + +表单页1个,分布表单页,位于page下的form文件夹下的step文件夹 + +个人页1个,位于page下的user文件夹 + +缺省页共5个,包含服务器出错页、网络异常页、网络断开页、访问页面不存在、无权限页,位于page下的default文件夹 + +组件共11个,包含列表(可排序)、列表(可展开1)、列表(可展开2)、列表(带Tab)、列表(树状)、弹窗(带列表)、弹窗(带Tab)、弹窗(带表单)、禁用提示、动态增加数据、穿梭框。展示位于page文件夹下的module文件夹,具体每个组件源代码位于src下的czriComponents文件夹下。 + +### 关于如何使用框架进行修改使用 + +#### 如何增加和修改主题颜色 + +原理:该组件库的主题颜色的修改主要是通过更改全局应用的less文件来达成换肤的目的,及点击换色时,当前应用的样式文件发生了改变,正因如此,全局使用的色调应尽可能的使用定义好的颜色而不是直接的色值 + +因此当需要添加或者修改全局的主题色时,需要首先,在theme文件夹下定义新的基本样式文件,然后再添加对应的触发方式 + +1、新建样式文件 +![](../_media/image-20230310155201062.png) + +2、在layout下的setting文件中添加对应的触发方式 + +![](../_media/image-20230310155305993.png) + +#### 关于如何修改全局框架导航样式 + +首先,整体框架有三套风格,列表导航风格一共有两套即为简版的无二级导航菜单风格和正常风格,这两种路由配置不同,因此需要动态进行路由配置的切换,使用map语法,对路由进行动态的渲染和挂载 + +![](../_media/image-20230313092444215.png) + +其次,当点击对应的切换布局时,将通过传参的不同,切换不同的配置文件, + +![](../_media/image-20230313104231264.png) + +根据判断传入的参数内容判断需要切换的内容是什么,进行相应的切换 + +![](../_media/image-20230313104443270.png) + +#### 整体切换的原理 + +##### 1、设置全局中需要切换内容的判断,将对应的判断利用vuex或者pinia存储于全局 + +![](../_media/image-20230315102553195.png) + +##### 2、在pinia或者vuex中存储并定义相应的方法,来使之触发,能够修改全局的变量,达成将框架内容对应的变量调节成所需要的值的目的 + +![](../_media/image-20230315102835351.png) + +##### 3、在页面的整体布局layout中定义对于所需要展示的内容设置相应的判断,让他在需要显示的时候能够正常的进行显示,例如下图, + +通过判断settingStore.isSidebarCompact的值,确定显示内容 + +![](../_media/image-20230315103016408.png) diff --git a/docs/相关命令.txt b/docs/相关命令.txt new file mode 100644 index 0000000..5f8d49e --- /dev/null +++ b/docs/相关命令.txt @@ -0,0 +1,9 @@ +#框架文档:https://docsify.js.org/#/zh-cn/quickstart +#全局安装 docsify-cli 工具 +npm i docsify-cli -g + +#初始化项目 +docsify init ./docs + +#本地预览 +docsify serve docs \ No newline at end of file diff --git a/globals.d.ts b/globals.d.ts new file mode 100644 index 0000000..743a703 --- /dev/null +++ b/globals.d.ts @@ -0,0 +1,15 @@ +// 通用声明 +declare type ClassName = { [className: string]: any } | ClassName[] | string; + +declare interface ImportMeta { + env: { + MODE: 'mock' | 'development' | 'test' | 'release'; + }; + // eslint-disable-next-line no-unused-vars + glob: (url: string) => { url }; +} + +declare module '*.svg' { + const CONTENT: string; + export default CONTENT; +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..8034edd --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + 云岚到家 + + +
+ + + \ No newline at end of file diff --git a/mock/index.ts b/mock/index.ts new file mode 100644 index 0000000..d3631b2 --- /dev/null +++ b/mock/index.ts @@ -0,0 +1,592 @@ +import { MockMethod } from 'vite-plugin-mock' +import Mock from 'mockjs' +import { List } from 'tdesign-vue-next' + +const BaseTag = '/api' +export default [ + // 登录 + { + url: `${BaseTag}/accounts/login`, + method: 'post', + response: () => ({ + code: 200, + msg: 'ok', + data: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyIjp7InVzZXJJZCI6MTU2OTg1Mjg2NzIwOTUyMzIwMiwicm9sZUlkIjoyfSwiZXhwIjoxNjczMzM0MDYzfQ.PvsLpM47UHuIO9imEtkKNRCP16d84KielSrwkl0OzJfyDMfkxbT3hzGgPJbUTszpRc2B1spcOjloAI1lkj_YgUBOS8k64AuW33Gb9oe0HzhAKjqG8ztRj0VGyxS29Y4Ozy90ERqltg69hvIXTlc3OHqwPWDjaiB2VawlAOMi8bQGYBKek4f9ubIuuhEavH9kGzma48A_Tkp4TfV3NMWgiByKE-extIPkMK24Ei9niQMCpf5d865heB7FTCJR8jee5Uu2vKN94AnCb5DyIbvvN5AzTHz0M6KTNywngCbnkf5oEPdcfPO-DGsKNi8avGo2mTsV6WUm2MWxIa3zx8V1Xw', + requestId: 'ee052dcfeb4a4af3938e155dcfd3821e' + }) + }, + // 获取用户信息 + { + url: `${BaseTag}/users/me`, + method: 'get', + response: () => ({ + code: 200, + data: { + icon: 'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg', + id: '1569852867209523202', + name: 'admin', + roleName: '管理员', + type: 0, + msg: 'OK', + requestId: 'd2701c0a7a7b4703a4b070aa71491e07' + } + }) + }, + + // 下面是原始数据 暂时不要动 等页面替换的差不多了 直接删掉 + { + url: `${BaseTag}/get-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-1000': [ + { + 'index|+1': 1, // 规则编号 + // 描述 + 'description|1': [ + '测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': [ + 'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg' + ], + 'serviceErrorNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳 + 'list|1-10': [ + { + 'index|1': '@natural(1000, 10000)', // 规则编号 + // 描述 + 'description|1': [ + '测试服务测试', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'], + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳 + } + ] + } + ] + }) + } + }) + }, + // 获取下拉列表数据 + { + url: `${BaseTag}/get-select`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|10': [ + { + 'index|+1': 1, // 规则编号 + 'total|1': '@natural(100, 999)', + // 描述 + 'description|1': [ + '测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'], + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳 + 'list|1-10': [ + { + 'index|+1': 1000, // 规则编号 + // 描述 + 'description|1': [ + '测试服务测试', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'], + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳 + } + ] + } + ] + }) + } + }) + }, + // 带tab的列表 + { + url: `${BaseTag}/get-tab-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-1000': [ + { + 'index|+1': 1, // 规则编号 + // 描述 + 'description|1': [ + '测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务测试服务', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': [ + 'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg' + ], + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')", // 更新时间。时间戳 + 'list|1-10': [ + { + 'index|1': '@natural(1000, 10000)', // 规则编号 + // 描述 + 'description|1': [ + '测试服务测试', + '测试服务1', + '测试服务2', + '测试服务3', + '测试服务4', + '测试服务5' + ], + 'name|1': '@cname', // 服务名称 + 'phoneNumber|1': '@natural(10000000000, 19999999999)', // 服务电话 + // 头像 + 'headPortrait|1': ['@/assets/test-img/pic-touxiang.png'], + 'serviceCallNumber|1': '@natural(100, 1000)', // 服务调用次数 + 'status|1': '@natural(0, 3)', // 状态 + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳 + } + ] + } + ] + }) + } + }) + }, + // 个人信息数据 + { + url: `${BaseTag}/get-personal`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + account: 'admin', + nickname: 'admin', + description: '这是一个管理员', + region: '110114', + address: '西三旗三旗百汇', + phone: '123456789', + headPortrait: + 'https://yjy-oss-videos.oss-accelerate.aliyuncs.com/grzxhz.jpg' + }) + } + }) + }, + // 修改个人信息 + { + url: `${BaseTag}/update-personal`, + method: 'post', + response: ({ body }) => { + const { + account, + nickname, + description, + region, + address, + phone, + headPortrait + } = body + return { + code: 200, + data: { + account, + nickname, + description, + region, + address, + phone, + headPortrait + } + } + } + }, + // 新建和编辑基础列表弹窗,发送的数据 + { + url: `${BaseTag}list-basic/add`, + method: 'post', + // 接收的数据类型 + response: ({ body }) => { + const { index, description, serviceCallNumber, status, updateTime } = body + return { + code: 200, + data: { + index, + description, + serviceCallNumber, + status, + updateTime + } + } + } + }, + // 删除基础列表的数据 + { + url: `${BaseTag}list-basic/delete`, + method: 'post', + // 接收的数据类型 + response: ({ body }) => { + const { index } = body + return { + code: 200, + data: { + index + } + } + } + }, + { + url: `${BaseTag}/detail-basic`, + method: 'get', + response: () => ({ + code: 0, + data: { + ...Mock.mock({ + name: 'td_20023747', + loginType: 'Web', + currentRole: 'Admin', + rightsList: '通用权限', + userStatus: '启用', + language: '简体中文', + timeZone: '(GMT+08:00)中国时区—北京(Asia/Beijing)' + }) + } + }) + }, + // 树形列表的数据 + { + url: `${BaseTag}/get-tree-list`, + method: 'get', + response: () => { + return { + code: 200, + data: { + ...Mock.mock({ + 'list|1': [ + { + // 取货单号 + 'index|+1': '@natural(100000000, 999999999)', + // 状态 + 'status|1': '@natural(0, 3)', + // 销售单号 + 'saleOrderNumber|1': '@natural(10000000000, 19999999999)', + // 子订单 + 'subOrderchildrenNumber|1': '@natural(10000000, 99999999)', + // 用户姓名 + 'userName|1': '@cname', + // 用户手机号 + 'userPhone|1': '@natural(10000000000, 19999999999)', + // 常用仓库 + 'commonWarehouse|1': '菜鸟仓储', + // 取货地址 + 'address|1': '@county(true)' + } + ] + }) + } + } + } + }, + { + url: `${BaseTag}/get-card-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|48-50': [ + { + 'index|+1': 1, + 'type|1': '@natural(1, 3)', + 'modelNumber|1': 'DXQM_@natural(100000, 999999)', + 'name|1': ['验证码', 'SSL证书', 'CVM', '云数据库', '云防火墙'], + 'createTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳 + } + ] + }) + } + }) + }, + { + url: `${BaseTag}/get-project-list`, + method: 'get', + response: () => ({ + code: 0, + data: { + ...Mock.mock({ + 'list|1-50': [ + { + 'index|+1': 1, + adminPhone: '+86 13587609955', + updateTime: '2020-05-30 @date("HH:mm:ss")', + 'adminName|1': ['顾娟 ', '常刚', '郑洋'], + 'name|1': [ + '沧州市办公用品采购项目', + '红河哈尼族彝族自治州办公用品采购项目 ', + '铜川市办公用品采购项目', + '陇南市办公用品采购项目 ', + '六安市办公用品采购项目 ' + ] + } + ] + }) + } + }) + }, + { + url: `${BaseTag}/post`, + method: 'post', + timeout: 2000, + response: { + code: 0, + data: { + name: 'vben' + } + } + }, + // 验证密码 + { + url: `${BaseTag}/validate-password`, + method: 'post', + response: ({ body }) => { + const { password } = body + if (password === '123456') { + return { + code: 200, + data: { + name: 'vben' + } + } + } + return { + code: 200, + msg: '密码错误' + } + } + }, + // 分布表单页接受的数据 + { + url: `${BaseTag}/form/step`, + method: 'post', + // 接收的数据类型 + response: ({ body }) => { + const { name, type, account, payAccount, amount } = body + return { + code: 200, + data: { + name, + type, + account, + payAccount, + amount + } + } + } + }, + // 折叠列表 + { + url: '/api/get-collapse-list', + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-3': [ + { + 'index|+1': 1, // 规则编号 + canUpdate: true, + 'name|1': ['第一章 ', '第二章', '第三章'], + maxIndexOnShelf: 0, + maxSectionIndexOnShelf: 0, + 'id|+1': 1, // 规则编号 + sections: [ + { + 'id|+1': 1, + 'index|+1': 1, // 规则编号 + 'subId|+1': 1, + canUpdate: true, + maxIndexOnShelf: 0, + maxSectionIndexOnShelf: 0, + 'name|1': ['第一小节', '第二小节', '第三小节'], + sort: 1 + } + ] + } + ] + }) + } + }) + }, + // 穿梭框列表 + { + url: '/api/get-transfer-list', + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-5': [ + { + 'name|1': [ + '沧州市办公用品采购项目沧州市办公用品采购项目沧州市办公用品采购项目沧州市办公用品采购项目', + '红河哈尼族彝族自治州办公用品采购项目 ', + '铜川市办公用品采购项目', + '陇南市办公用品采购项目 ', + '六安市办公用品采购项目 ' + ], + 'id|+1': 1 // 规则编号 + } + ] + }) + } + }) + }, + // 卡片列表 + { + url: `${BaseTag}/get-cardsort-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-3': [ + { + 'index|+1': 1, + isShow: false, + 'name|1': ['顾娟 ', '常刚', '郑洋'], + 'photo|1': [ + 'https://tdesign.gtimg.com/starter/cloud-db.jpg', + 'https://tdesign.gtimg.com/starter/cloud-server.jpg', + 'https://tdesign.gtimg.com/starter/ssl.jpg', + 'https://tdesign.gtimg.com/starter/t-sec.jpg', + 'https://tdesign.gtimg.com/starter/face-recognition.jpg' + ], + 'num|1': ['2 ', '3', '8'], + 'phone|1': '@natural(10000000000, 19999999999)', + 'introduce|1': [ + '沧州市办公用品采购项目', + '红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目 ', + '铜川市办公用品采购项目', + '陇南市办公用品采购项目 ', + '六安市办公用品采购项目 ' + ] + } + ] + }) + } + }) + }, + // 列表弹层例表数据 + { + url: `${BaseTag}/get-dialog-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-65': [ + { + 'id|+1': 1, + isShow: false, + 'name|1': ['顾娟 ', '常刚', '郑洋'], + 'photo|1': [ + 'https://tdesign.gtimg.com/starter/cloud-db.jpg', + 'https://tdesign.gtimg.com/starter/cloud-server.jpg', + 'https://tdesign.gtimg.com/starter/ssl.jpg', + 'https://tdesign.gtimg.com/starter/t-sec.jpg', + 'https://tdesign.gtimg.com/starter/face-recognition.jpg' + ], + 'num|1': ['2 ', '3', '8'], + 'phone|1': '@natural(10000000000, 19999999999)', + 'introduce|1': [ + '沧州市办公用品采购项目', + '红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目红河哈尼族彝族自治州办公用品采购项目 ', + '铜川市办公用品采购项目', + '陇南市办公用品采购项目 ', + '六安市办公用品采购项目 ' + ] + } + ] + }) + } + }) + }, + // 数据详情页例表数据 + { + url: `${BaseTag}/get-detail-list`, + method: 'get', + response: () => ({ + code: 200, + data: { + ...Mock.mock({ + 'list|1-65': [ + { + 'id|+1': 1, + 'index|+1': 1, + 'name|1': [ + '沧州市办公用品采购项目', + '红河哈尼族彝族自治州办购项目红河哈尼族彝族自目 ', + '铜川市办公用品采购项目', + '陇南市办公用品采购项目 ', + '六安市办公用品采购项目 ' + ], + 'pdName|1': ['产品1', '产品2', '产品3'], + 'adminName|1': ['admin1', 'admin2', 'admin3'], + 'purchaseNum|1': ['2 ', '3', '8'], + 'pdNum|1': ['2 ', '3', '8'], + 'updateTime|1': "@datetime('yyyy-MM-dd HH:mm:ss')" // 更新时间。时间戳 + } + ] + }) + } + }) + } +] as MockMethod[] diff --git a/mockProdServer.ts b/mockProdServer.ts new file mode 100644 index 0000000..5da302d --- /dev/null +++ b/mockProdServer.ts @@ -0,0 +1,8 @@ +// mockProdServer.ts +import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'; + +import mockModule from './mock/index'; + +export function setupProdMockServer() { + createProdMockServer([...mockModule]); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..03b6bfb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7415 @@ +{ + "name": "Object-admin-pure", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "dev": true + }, + "@babel/core": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "dev": true, + "requires": { + "@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.7", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.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-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.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": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.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": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.7.tgz", + "integrity": "sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==", + "dev": true, + "requires": { + "@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": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/runtime-corejs3": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.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": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/cli": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.3.0.tgz", + "integrity": "sha512-/H0md7TsKflKzVPz226VfXzVafJFO1f9+r2KcFvmBu08V0T56lZU1s8WL7/xlxqLMqBTVaBf7Ixtc4bskdEEZg==", + "dev": true, + "requires": { + "@commitlint/format": "^17.0.0", + "@commitlint/lint": "^17.3.0", + "@commitlint/load": "^17.3.0", + "@commitlint/read": "^17.2.0", + "@commitlint/types": "^17.0.0", + "execa": "^5.0.0", + "lodash.isfunction": "^3.0.9", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" + } + }, + "@commitlint/config-conventional": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.3.0.tgz", + "integrity": "sha512-hgI+fN5xF8nhS9uG/V06xyT0nlcyvHHMkq0kwRSr96vl5BFlRGaL2C0/YY4kQagfU087tmj01bJkG9Ek98Wllw==", + "dev": true, + "requires": { + "conventional-changelog-conventionalcommits": "^5.0.0" + } + }, + "@commitlint/config-validator": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.1.0.tgz", + "integrity": "sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==", + "dev": true, + "requires": { + "@commitlint/types": "^17.0.0", + "ajv": "^8.11.0" + } + }, + "@commitlint/ensure": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.3.0.tgz", + "integrity": "sha512-kWbrQHDoW5veIUQx30gXoLOCjWvwC6OOEofhPCLl5ytRPBDAQObMbxTha1Bt2aSyNE/IrJ0s0xkdZ1Gi3wJwQg==", + "dev": true, + "requires": { + "@commitlint/types": "^17.0.0", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + } + }, + "@commitlint/execute-rule": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz", + "integrity": "sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==", + "dev": true + }, + "@commitlint/format": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.0.0.tgz", + "integrity": "sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==", + "dev": true, + "requires": { + "@commitlint/types": "^17.0.0", + "chalk": "^4.1.0" + } + }, + "@commitlint/is-ignored": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.2.0.tgz", + "integrity": "sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==", + "dev": true, + "requires": { + "@commitlint/types": "^17.0.0", + "semver": "7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@commitlint/lint": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.3.0.tgz", + "integrity": "sha512-VilOTPg0i9A7CCWM49E9bl5jytfTvfTxf9iwbWAWNjxJ/A5mhPKbm3sHuAdwJ87tDk1k4j8vomYfH23iaY+1Rw==", + "dev": true, + "requires": { + "@commitlint/is-ignored": "^17.2.0", + "@commitlint/parse": "^17.2.0", + "@commitlint/rules": "^17.3.0", + "@commitlint/types": "^17.0.0" + } + }, + "@commitlint/load": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.3.0.tgz", + "integrity": "sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==", + "dev": true, + "requires": { + "@commitlint/config-validator": "^17.1.0", + "@commitlint/execute-rule": "^17.0.0", + "@commitlint/resolve-extends": "^17.3.0", + "@commitlint/types": "^17.0.0", + "@types/node": "^14.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4" + } + }, + "@commitlint/message": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.2.0.tgz", + "integrity": "sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==", + "dev": true + }, + "@commitlint/parse": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.2.0.tgz", + "integrity": "sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==", + "dev": true, + "requires": { + "@commitlint/types": "^17.0.0", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.2.2" + } + }, + "@commitlint/read": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.2.0.tgz", + "integrity": "sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==", + "dev": true, + "requires": { + "@commitlint/top-level": "^17.0.0", + "@commitlint/types": "^17.0.0", + "fs-extra": "^10.0.0", + "git-raw-commits": "^2.0.0", + "minimist": "^1.2.6" + } + }, + "@commitlint/resolve-extends": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.3.0.tgz", + "integrity": "sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==", + "dev": true, + "requires": { + "@commitlint/config-validator": "^17.1.0", + "@commitlint/types": "^17.0.0", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + } + }, + "@commitlint/rules": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.3.0.tgz", + "integrity": "sha512-s2UhDjC5yP2utx3WWqsnZRzjgzAX8BMwr1nltC0u0p8T/nzpkx4TojEfhlsOUj1t7efxzZRjUAV0NxNwdJyk+g==", + "dev": true, + "requires": { + "@commitlint/ensure": "^17.3.0", + "@commitlint/message": "^17.2.0", + "@commitlint/to-lines": "^17.0.0", + "@commitlint/types": "^17.0.0", + "execa": "^5.0.0" + } + }, + "@commitlint/to-lines": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.0.0.tgz", + "integrity": "sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==", + "dev": true + }, + "@commitlint/top-level": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.0.0.tgz", + "integrity": "sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "@commitlint/types": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz", + "integrity": "sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@material/material-color-utilities": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@material/material-color-utilities/-/material-color-utilities-0.1.2.tgz", + "integrity": "sha512-uKkkx7Xo1AZJR0eMjH902rAb0vEjDbb3tgXt0cC3SHbpDGkPNhkuDKtxnw147axOM6uKuI7vywHRQlDrjDGhCA==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@rollup/plugin-node-resolve": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.3", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", + "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", + "dev": true, + "requires": { + "@babel/core": "^7.17.9" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/echarts": { + "version": "4.9.16", + "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.16.tgz", + "integrity": "sha512-bfiagfPw3dWauAIJ9fgoJQoL4hLWlGcltqwbE6LGye0NIY5xnbZau+mDmadCzGojic3MWuFDCUiO25kl4sRGeA==", + "dev": true, + "requires": { + "@types/zrender": "*" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", + "dev": true + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/mockjs": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/mockjs/-/mockjs-1.0.7.tgz", + "integrity": "sha512-OCxXz6hEaJOVpRwuJMiVY5a6LtJcih+br9gwB/Q8ooOBikvk5FpBQ31OlNimXo3EqKha1Z7PFBni+q9m+8NCWg==", + "dev": true + }, + "@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-qrhtM7M41EhH4tZQTNw2/RJkxllBx3reiJpTbgWCM2Dx0U1sZ6LwKp9lfNln9uqE26ZMKUaPEYaD4rzvOWYtZw==" + }, + "@types/tinycolor2": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.3.tgz", + "integrity": "sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==" + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/validator": { + "version": "13.7.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.10.tgz", + "integrity": "sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==" + }, + "@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/zrender": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.3.tgz", + "integrity": "sha512-EPI269lkHNsObwILJ1k1z7znLjKyePuWRy/XKK0shSGpBb9cIX307arcwJV4+2NeZj5wEjN06r4D8yFv7sI06g==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" + } + }, + "@typescript-eslint/types": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@vitejs/plugin-vue": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", + "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", + "dev": true + }, + "@vitejs/plugin-vue-jsx": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.3.10.tgz", + "integrity": "sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==", + "dev": true, + "requires": { + "@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" + } + }, + "@volar/language-core": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.0.19.tgz", + "integrity": "sha512-BRxhwqn66VHeLIxxgV4ybY9NDtwMp2bl1w7085qlK7i1pa4jeFR5lJG2U5qd0oI3e0PIWML+PryxSrKNd3+SZw==", + "dev": true, + "requires": { + "@volar/source-map": "1.0.19", + "muggle-string": "^0.1.0" + } + }, + "@volar/source-map": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.0.19.tgz", + "integrity": "sha512-5fYKsl1evR/QAZ9LADto3kzbYKfpjZLWS9reNpxGR3ODPFTpaJgYk4lqghFyq4yU7/e/ZPZ1zLXjEsnL526URw==", + "dev": true, + "requires": { + "muggle-string": "^0.1.0" + } + }, + "@volar/typescript": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.0.19.tgz", + "integrity": "sha512-S6n945uhpc5J1qCVXVV4tz4k1nyxWaoG+wqy9TYdRDazPHeq9l45WDg58g/ehblUWux85TZN8i3zdsLRLkFrdw==", + "dev": true, + "requires": { + "@volar/language-core": "1.0.19" + } + }, + "@volar/vue-language-core": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.0.19.tgz", + "integrity": "sha512-3mIjJvQ+0tNOp+U9+Nggy92HYIqnltf882UMG9RuNHrd0Jn/rdvjRBs0jNTzwYDV9tn3tjDHGIfQak9XrUCaRg==", + "dev": true, + "requires": { + "@volar/language-core": "1.0.19", + "@volar/source-map": "1.0.19", + "@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" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@volar/vue-typescript": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.0.19.tgz", + "integrity": "sha512-HKaLCz/lb5xkJ1SyaMmms0Ww/OVStQ16qWttSbHRnnyRV/IDMFrwlovA/bIAPzHUq8EVoDAznRVsCysr2QCOGA==", + "dev": true, + "requires": { + "@volar/typescript": "1.0.19", + "@volar/vue-language-core": "1.0.19" + } + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "requires": { + "@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": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "requires": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "requires": { + "@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": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/devtools-api": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz", + "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" + }, + "@vue/eslint-config-typescript": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.2.tgz", + "integrity": "sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "vue-eslint-parser": "^9.0.0" + }, + "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" + } + }, + "@typescript-eslint/types": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "requires": { + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "requires": { + "@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/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "requires": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "requires": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "requires": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bezier-easing": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bezier-easing/-/bezier-easing-2.1.0.tgz", + "integrity": "sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "chroma-js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.2.tgz", + "integrity": "sha512-ri/ouYDWuxfus3UcaMxC1Tfp3IE9K5iQzxc2hSxbBRVNQFut1UuGAsZmiAf2mOUubzGJwgMSv9lHg+XqLaz1QQ==", + "requires": { + "cross-env": "^6.0.3" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "commitizen": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.6.tgz", + "integrity": "sha512-RyTM+EiD9GO01DJUn9MRRAet3XUHGfoUZoksLfr+1ym1Xt2q5EYJs9Fg2BtKSb5Mo53i0BtMBmWMHQXVlZ/L9w==", + "dev": true, + "requires": { + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.4", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.6", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + } + } + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz", + "integrity": "sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, + "conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true + }, + "conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "core-js-pure": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.1.tgz", + "integrity": "sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==" + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-env": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "requires": { + "cross-spawn": "^7.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "requires": { + "@commitlint/load": ">6.1.1", + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-passive-events": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/default-passive-events/-/default-passive-events-2.0.0.tgz", + "integrity": "sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==" + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "echarts": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.1.tgz", + "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.4.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + } + }, + "eslint-config-prettier": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", + "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.24.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.1.tgz", + "integrity": "sha512-KSFWhNxPH8OGJwpRJJs+Z7I0a13E2iFQZJIvSnCu6KUs4qmgAm3xN9GYBCSoiGWmwA7gERZPXqYQjcoCROnYhQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.10.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.8.0.tgz", + "integrity": "sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-plugin-vue-scoped-css": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue-scoped-css/-/eslint-plugin-vue-scoped-css-2.2.0.tgz", + "integrity": "sha512-PjjoYAm4crSZvcvRZpsJdHS8WcLc/bbodEkbLkXVpR6VlC9TGs+n7SCJZlKzili/nNwMGeJGhNdpoiySyIaVgg==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "lodash": "^4.17.21", + "postcss": "^8.4.6", + "postcss-safe-parser": "^6.0.0", + "postcss-scss": "^4.0.3", + "postcss-selector-parser": "^6.0.9", + "postcss-styl": "^0.9.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "requires": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + } + }, + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-builtin-module": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", + "dev": true, + "requires": { + "builtin-modules": "^3.3.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "known-css-properties": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "lint-staged": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", + "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^9.3.0", + "debug": "^4.3.4", + "execa": "^5.1.1", + "lilconfig": "2.0.5", + "listr2": "^4.0.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.2", + "pidtree": "^0.5.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.2", + "yaml": "^1.10.2" + }, + "dependencies": { + "commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "dev": true + }, + "supports-color": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.3.1.tgz", + "integrity": "sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==", + "dev": true + } + } + }, + "listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true + }, + "lodash.sortedlastindex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz", + "integrity": "sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==", + "dev": true + }, + "lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dev": true, + "requires": { + "commander": "*" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "muggle-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.1.0.tgz", + "integrity": "sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidtree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", + "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "pinia": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.28.tgz", + "integrity": "sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==", + "requires": { + "@vue/devtools-api": "^6.4.5", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==" + } + } + }, + "pinia-plugin-persistedstate": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.0.2.tgz", + "integrity": "sha512-84vPyUhPA/8Pr+1mT1ioNb2d8z4tvdgYRqMQf8xyauOVBKjo0ZcRBwPQBV7ZAJG43Kwar43nXG2jU+ZMvAFFRQ==" + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "postcss": { + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "dev": true + }, + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-scss": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", + "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-sorting": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-5.0.1.tgz", + "integrity": "sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==", + "dev": true, + "requires": { + "lodash": "^4.17.14", + "postcss": "^7.0.17" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-styl": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/postcss-styl/-/postcss-styl-0.9.0.tgz", + "integrity": "sha512-EgES+TZXUi7LkFnSIf7R6sE80kepOFrlRVLSSxPKn3Bz036VR8PYidcBKvLGwfZ91fe+tEZ9iHGekb0OLtbvfg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fast-diff": "^1.2.0", + "lodash.sortedlastindex": "^4.1.0", + "postcss": "^7.0.27 || ^8.0.0", + "stylus": "^0.55.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "qrcode.vue": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.3.3.tgz", + "integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "requires": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + } + }, + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.0" + } + }, + "remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "requires": { + "global-dirs": "^0.1.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + } + } + }, + "sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true + }, + "stylelint": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "stylelint-config-prettier": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.4.tgz", + "integrity": "sha512-38nIGTGpFOiK5LjJ8Ma1yUgpKENxoKSOhbDNSemY7Ep0VsJoXIW9Iq/2hSt699oB9tReynfWicTAoIHiq8Rvbg==", + "dev": true + }, + "stylelint-less": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/stylelint-less/-/stylelint-less-1.0.6.tgz", + "integrity": "sha512-lL+4HFP8V6WkXuNGXRAirnW83KQYEE6LpBsOCibka0bFHUh2mIcJXwcc4uQu1c9UUopHr8vjIH2YElW61lQBXg==", + "dev": true, + "requires": { + "postcss": "^8.4.14", + "postcss-value-parser": "4.2.0" + } + }, + "stylelint-order": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz", + "integrity": "sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "postcss": "^7.0.31", + "postcss-sorting": "^5.0.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "stylus": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.55.0.tgz", + "integrity": "sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==", + "dev": true, + "requires": { + "css": "^3.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@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" + } + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "tdesign-icons-vue-next": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/tdesign-icons-vue-next/-/tdesign-icons-vue-next-0.1.7.tgz", + "integrity": "sha512-4BwPIo0K1EHPhy0YToc1I2GUnr6SLmiP6vxyNuC993+x0xv2C2jMXzOcDiJGX5QsgicJ7UEHMIfs+fvtDLgbng==", + "requires": { + "@babel/runtime": "^7.16.3" + } + }, + "tdesign-vue-next": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/tdesign-vue-next/-/tdesign-vue-next-0.25.0.tgz", + "integrity": "sha512-5apMUOhEuyLqRyNnOPgVANbmVMMJ4zQ4UQtPGMav2aHhP35pgQgTThYk/sAZhOtkIPuHTHStW6vteYvFzlGYNg==", + "requires": { + "@babel/runtime": "^7.14.8", + "@popperjs/core": "^2.9.3", + "@types/lodash": "4.14.182", + "@types/sortablejs": "^1.10.7", + "@types/tinycolor2": "^1.4.3", + "@types/validator": "^13.6.3", + "dayjs": "^1.9.7", + "lodash": "^4.17.15", + "mitt": "^3.0.0", + "sortablejs": "^1.15.0", + "tdesign-icons-vue-next": "^0.1.5", + "tinycolor2": "^1.4.2", + "validator": "^13.5.1" + }, + "dependencies": { + "@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + } + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tinycolor2": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.5.2.tgz", + "integrity": "sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tvision-color": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/tvision-color/-/tvision-color-1.5.0.tgz", + "integrity": "sha512-9gsV2l9HPoiYTXooQK5CtUtkJAB8EsCuktjdfkUs3aN20CBkDhAG6XP5T+SRdp/onTshb8OXbil4vRDFiUnXvQ==", + "requires": { + "@babel/runtime-corejs3": "7.18.9", + "@material/material-color-utilities": "0.1.2", + "bezier-easing": "^2.1.0", + "chroma-js": "2.1.2" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vite": { + "version": "2.9.15", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", + "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", + "dev": true, + "requires": { + "esbuild": "^0.14.27", + "fsevents": "~2.3.2", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": ">=2.59.0 <2.78.0" + } + }, + "vite-plugin-mock": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-2.9.6.tgz", + "integrity": "sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==", + "dev": true, + "requires": { + "@rollup/plugin-node-resolve": "^13.0.4", + "@types/mockjs": "^1.0.4", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "connect": "^3.7.0", + "debug": "^4.3.2", + "esbuild": "0.11.3", + "fast-glob": "^3.2.7", + "path-to-regexp": "^6.2.0" + }, + "dependencies": { + "esbuild": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.3.tgz", + "integrity": "sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==", + "dev": true + } + } + }, + "vite-svg-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-3.6.0.tgz", + "integrity": "sha512-bZJffcgCREW57kNkgMhuNqeDznWXyQwJ3wKrRhHLMMzwDnP5jr3vXW3cqsmquRR7VTP5mLdKj1/zzPPooGUuPw==", + "dev": true, + "requires": { + "@vue/compiler-sfc": "^3.2.20", + "svgo": "^2.7.0" + } + }, + "vue": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "requires": { + "@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" + } + }, + "vue-clipboard3": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", + "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==", + "requires": { + "clipboard": "^2.0.6" + } + }, + "vue-eslint-parser": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz", + "integrity": "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-router": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz", + "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==", + "requires": { + "@vue/devtools-api": "^6.4.5" + } + }, + "vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-tsc": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.0.19.tgz", + "integrity": "sha512-UuI4G9PwV07Q2U+xYDLP5y3aUXTfuIF0Exy0qXT8+BbLlahubQ2r2PGSodSBnHxAhm/XsrD0KleC2rSzLKXDfQ==", + "dev": true, + "requires": { + "@volar/vue-language-core": "1.0.19", + "@volar/vue-typescript": "1.0.19" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zrender": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.1.tgz", + "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "requires": { + "tslib": "2.3.0" + } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a0c77dd --- /dev/null +++ b/package.json @@ -0,0 +1,98 @@ +{ + "name": "Object-admin-pure", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev:mock": "vite --mode mock", + "dev": "vite --open --mode mock", + "dev:linux": "vite --mode release", + "dev:pro": "vite --mode development", + "build:test": "vite build --mode test", + "build:mock": "vite build --mode mock", + "build:dev": "vite build --mode development", + "build": "vue-tsc --noEmit && vite build --mode release", + "preview": "vite preview", + "lint": "eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0", + "lint:fix": "eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix", + "stylelint": "stylelint src/**/*.{html,vue,sass,less}", + "stylelint:fix": "stylelint --fix src/**/*.{html,vue,vss,sass,less}", + "prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || is-ci || husky install", + "site:preview": "npm run build && cp -r dist _site", + "test": "echo \"no test specified,work in process\"", + "test:coverage": "echo \"no test:coverage specified,work in process\"" + }, + "dependencies": { + "axios": "^1.1.3", + "dayjs": "^1.10.6", + "default-passive-events": "^2.0.0", + "echarts": "^5.4.1", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "nprogress": "^0.2.0", + "pinia": "^2.0.11", + "pinia-plugin-persistedstate": "^3.0.1", + "qrcode.vue": "^3.2.2", + "qs": "^6.10.5", + "tdesign-icons-vue-next": "^0.1.1", + "tdesign-vue-next": "^0.25.0", + "tvision-color": "^1.3.1", + "vue": "^3.2.31", + "vue-clipboard3": "^2.0.0", + "vue-router": "~4.1.5" + }, + "devDependencies": { + "@commitlint/cli": "^17.0.3", + "@commitlint/config-conventional": "^17.0.3", + "@types/echarts": "^4.9.10", + "@types/lodash": "^4.14.182", + "@types/qs": "^6.9.7", + "@types/ws": "^8.2.2", + "@typescript-eslint/eslint-plugin": "^4.29.3", + "@typescript-eslint/parser": "^4.29.3", + "@vitejs/plugin-vue": "^2.3.1", + "@vitejs/plugin-vue-jsx": "^1.1.7", + "@vue/compiler-sfc": "^3.0.5", + "@vue/eslint-config-typescript": "^11.0.0", + "commitizen": "^4.2.4", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^7.32.0", + "eslint-config-airbnb-base": "^14.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.24.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-vue": "^9.2.0", + "eslint-plugin-vue-scoped-css": "^2.2.0", + "husky": "^7.0.4", + "less": "^4.1.1", + "lint-staged": "^12.1.2", + "mockjs": "^1.1.0", + "prettier": "^2.4.1", + "stylelint": "~13.13.1", + "stylelint-config-prettier": "~9.0.3", + "stylelint-less": "^1.0.6", + "stylelint-order": "~4.1.0", + "typescript": "~4.8.4", + "vite": "^2.7.1", + "vite-plugin-mock": "^2.9.6", + "vite-svg-loader": "^3.1.0", + "vue-tsc": "^1.0.8" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "lint-staged": { + "*.{js,jsx,vue,ts,tsx}": [ + "prettier --write", + "npm run lint:fix", + "git add ." + ], + "*.{html,vue,vss,sass,less}": [ + "npm run stylelint:fix", + "git add ." + ] + }, + "description": "yldj" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..b4b5d3d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5928 @@ +lockfileVersion: 5.3 + +specifiers: + '@commitlint/cli': ^17.0.3 + '@commitlint/config-conventional': ^17.0.3 + '@types/echarts': ^4.9.10 + '@types/lodash': ^4.14.182 + '@types/qs': ^6.9.7 + '@types/ws': ^8.2.2 + '@typescript-eslint/eslint-plugin': ^4.29.3 + '@typescript-eslint/parser': ^4.29.3 + '@vitejs/plugin-vue': ^2.3.1 + '@vitejs/plugin-vue-jsx': ^1.1.7 + '@vue/compiler-sfc': ^3.0.5 + '@vue/eslint-config-typescript': ^11.0.0 + axios: ^1.1.3 + commitizen: ^4.2.4 + cz-conventional-changelog: ^3.3.0 + dayjs: ^1.10.6 + default-passive-events: ^2.0.0 + echarts: ^5.4.1 + eslint: ^7.32.0 + eslint-config-airbnb-base: ^14.2.1 + eslint-config-prettier: ^8.3.0 + eslint-plugin-import: ^2.24.1 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-vue: ^9.2.0 + eslint-plugin-vue-scoped-css: ^2.2.0 + husky: ^7.0.4 + less: ^4.1.1 + lint-staged: ^12.1.2 + lodash: ^4.17.21 + mockjs: ^1.1.0 + nprogress: ^0.2.0 + pinia: ^2.0.11 + pinia-plugin-persistedstate: ^3.0.1 + prettier: ^2.4.1 + qrcode.vue: ^3.2.2 + qs: ^6.10.5 + stylelint: ~13.13.1 + stylelint-config-prettier: ~9.0.3 + stylelint-less: ^1.0.6 + stylelint-order: ~4.1.0 + tdesign-icons-vue-next: ^0.1.1 + tdesign-vue-next: ^0.25.0 + tvision-color: ^1.3.1 + typescript: ~4.8.4 + vite: ^2.7.1 + vite-plugin-mock: ^2.9.6 + vite-svg-loader: ^3.1.0 + vue: ^3.2.31 + vue-clipboard3: ^2.0.0 + vue-router: ~4.1.5 + vue-tsc: ^1.0.8 + +dependencies: + axios: 1.2.2 + dayjs: 1.11.7 + default-passive-events: 2.0.0 + echarts: 5.4.1 + lodash: 4.17.21 + nprogress: 0.2.0 + pinia: 2.0.28_typescript@4.8.4+vue@3.2.45 + pinia-plugin-persistedstate: 3.0.2_pinia@2.0.28 + qrcode.vue: 3.3.3_vue@3.2.45 + qs: 6.11.0 + tdesign-icons-vue-next: 0.1.7_vue@3.2.45 + tdesign-vue-next: 0.25.0_vue@3.2.45 + tvision-color: 1.5.0 + vue: 3.2.45 + vue-clipboard3: 2.0.0 + vue-router: 4.1.6_vue@3.2.45 + +devDependencies: + '@commitlint/cli': 17.4.1 + '@commitlint/config-conventional': 17.4.0 + '@types/echarts': 4.9.16 + '@types/lodash': 4.14.191 + '@types/qs': 6.9.7 + '@types/ws': 8.5.4 + '@typescript-eslint/eslint-plugin': 4.33.0_5717ef02ba985de55f36ee939304b942 + '@typescript-eslint/parser': 4.33.0_eslint@7.32.0+typescript@4.8.4 + '@vitejs/plugin-vue': 2.3.4_vite@2.9.15+vue@3.2.45 + '@vitejs/plugin-vue-jsx': 1.3.10 + '@vue/compiler-sfc': 3.2.45 + '@vue/eslint-config-typescript': 11.0.2_f9767614b1524794e95023af407b17ab + commitizen: 4.2.6 + cz-conventional-changelog: 3.3.0 + eslint: 7.32.0 + eslint-config-airbnb-base: 14.2.1_3bd94fa9be989baab6ef2e6b5dec3766 + eslint-config-prettier: 8.6.0_eslint@7.32.0 + eslint-plugin-import: 2.26.0_eslint@7.32.0 + eslint-plugin-prettier: 4.2.1_7642ad2ab48ac424c7f5dad05f5cb168 + eslint-plugin-vue: 9.8.0_eslint@7.32.0 + eslint-plugin-vue-scoped-css: 2.2.0_eslint@7.32.0 + husky: 7.0.4 + less: 4.1.3 + lint-staged: 12.5.0 + mockjs: 1.1.0 + prettier: 2.8.2 + stylelint: 13.13.1 + stylelint-config-prettier: 9.0.4_stylelint@13.13.1 + stylelint-less: 1.0.6_stylelint@13.13.1 + stylelint-order: 4.1.0_stylelint@13.13.1 + typescript: 4.8.4 + vite: 2.9.15_less@4.1.3 + vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.9.15 + vite-svg-loader: 3.6.0 + vue-tsc: 1.0.24_typescript@4.8.4 + +packages: + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@babel/code-frame/7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/compat-data/7.20.10: + resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core/7.20.12: + resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@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.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.20.7: + resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.12 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: + resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@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 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-member-expression-to-functions/7.20.7: + resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-module-transforms/7.20.11: + resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} + engines: {node: '>=6.9.0'} + 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.12 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + engines: {node: '>=6.9.0'} + 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.12 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: true + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers/7.20.7: + resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.20.7: + resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} + engines: {node: '>=6.0.0'} + hasBin: true + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/runtime-corejs3/7.18.9: + resolution: {integrity: sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.27.1 + regenerator-runtime: 0.13.11 + dev: false + + /@babel/runtime/7.20.7: + resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: false + + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 + dev: true + + /@babel/traverse/7.20.12: + resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} + engines: {node: '>=6.9.0'} + 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.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@commitlint/cli/17.4.1: + resolution: {integrity: sha512-W8OJwz+izY+fVwyUt1HveCDmABMZNRVZHSVPw/Bh9Y62tp11SmmQaycgbsYLMiMy7JGn4mAJqEGlSHS9Uti9ZQ==} + engines: {node: '>=v14'} + hasBin: true + dependencies: + '@commitlint/format': 17.4.0 + '@commitlint/lint': 17.4.0 + '@commitlint/load': 17.4.1 + '@commitlint/read': 17.4.0 + '@commitlint/types': 17.4.0 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.6.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + /@commitlint/config-conventional/17.4.0: + resolution: {integrity: sha512-G4XBf45J4ZMspO4NwBFzY3g/1Kb+B42BcIxeikF8wucQxcyxcmhRdjeQpRpS1XEcBq5pdtEEQFipuB9IuiNFhw==} + engines: {node: '>=v14'} + dependencies: + conventional-changelog-conventionalcommits: 5.0.0 + dev: true + + /@commitlint/config-validator/17.4.0: + resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + ajv: 8.12.0 + dev: true + + /@commitlint/ensure/17.4.0: + resolution: {integrity: sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + dev: true + + /@commitlint/execute-rule/17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} + engines: {node: '>=v14'} + dev: true + + /@commitlint/format/17.4.0: + resolution: {integrity: sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + chalk: 4.1.2 + dev: true + + /@commitlint/is-ignored/17.4.0: + resolution: {integrity: sha512-mkRuBlPUaBimvSvJyIHEHEW1/jP1SqEI7NOoaO9/eyJkMbsaiv5b1QgDYL4ZXlHdS64RMV7Y21MVVzuIceImDA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + semver: 7.3.8 + dev: true + + /@commitlint/lint/17.4.0: + resolution: {integrity: sha512-HG2YT4TUbQKs9v8QvpQjJ6OK+fhflsDB8M+D5tLrY79hbQOWA9mDKdRkABsW/AAhpNI9+zeGUWF3jj245jSHKw==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/is-ignored': 17.4.0 + '@commitlint/parse': 17.4.0 + '@commitlint/rules': 17.4.0 + '@commitlint/types': 17.4.0 + dev: true + + /@commitlint/load/17.4.1: + resolution: {integrity: sha512-6A7/LhIaQpL4ieciIDcVvK2d5z/UI1GBrtDaHm6sQSCL0265clB2/F7XKQNTJHXv9yG4LByT2r+QCpM4GugIfw==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': 17.4.0 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.0 + '@commitlint/types': 17.4.0 + '@types/node': 18.11.18 + chalk: 4.1.2 + cosmiconfig: 8.0.0 + cosmiconfig-typescript-loader: 4.3.0_f48aea64269cbb38d3db6452ebfefe84 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.1_ac04029d3cbd63a6e54d5c46a5abbdcb + typescript: 4.8.4 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + /@commitlint/message/17.4.0: + resolution: {integrity: sha512-USGJDU9PPxcgQjKXCzvPUal65KAhxWq3hp+MrU1pNCN2itWM654CLIoY2LMIQ7rScTli9B5dTLH3vXhzbItmzA==} + engines: {node: '>=v14'} + dev: true + + /@commitlint/parse/17.4.0: + resolution: {integrity: sha512-x8opKc5p+Hgs+CrMbq3VAnW2L2foPAX6arW8u9c8nTzksldGgFsENT+XVyPmpSMLlVBswZ1tndcz1xyKiY9TJA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + conventional-changelog-angular: 5.0.13 + conventional-commits-parser: 3.2.4 + dev: true + + /@commitlint/read/17.4.0: + resolution: {integrity: sha512-pGDeZpbkyvhxK8ZoCDUacPPRpauKPWF3n2XpDBEnuGreqUF2clq2PVJpwMMaNN5cHW8iFKCbcoOjXhD01sln0A==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.0 + fs-extra: 11.1.0 + git-raw-commits: 2.0.11 + minimist: 1.2.7 + dev: true + + /@commitlint/resolve-extends/17.4.0: + resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': 17.4.0 + '@commitlint/types': 17.4.0 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + + /@commitlint/rules/17.4.0: + resolution: {integrity: sha512-lz3i1jet2NNjTWpAMwjjQjMZCPWBIHK1Kkja9o09UmUtMjRdALTb8uMLe8gCyeq3DiiZ5lLYOhbsoPK56xGQKA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/ensure': 17.4.0 + '@commitlint/message': 17.4.0 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.0 + execa: 5.1.1 + dev: true + + /@commitlint/to-lines/17.4.0: + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} + engines: {node: '>=v14'} + dev: true + + /@commitlint/top-level/17.4.0: + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} + engines: {node: '>=v14'} + dependencies: + find-up: 5.0.0 + dev: true + + /@commitlint/types/17.4.0: + resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} + engines: {node: '>=v14'} + dependencies: + chalk: 4.1.2 + dev: true + + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.19.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@material/material-color-utilities/0.1.2: + resolution: {integrity: sha512-uKkkx7Xo1AZJR0eMjH902rAb0vEjDbb3tgXt0cC3SHbpDGkPNhkuDKtxnw147axOM6uKuI7vywHRQlDrjDGhCA==} + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + dev: false + + /@rollup/plugin-node-resolve/13.3.0: + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0 + '@types/resolve': 1.17.1 + deepmerge: 4.2.2 + is-builtin-module: 3.2.0 + is-module: 1.0.0 + resolve: 1.22.1 + dev: true + + /@rollup/pluginutils/3.1.0: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@stylelint/postcss-css-in-js/0.37.3_4f7b71a942b8b7a555b8adf78f88122b: + resolution: {integrity: sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==} + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + '@babel/core': 7.20.12 + postcss: 7.0.39 + postcss-syntax: 0.36.2_postcss@7.0.39 + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-markdown/0.36.2_4f7b71a942b8b7a555b8adf78f88122b: + resolution: {integrity: sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==} + deprecated: 'Use the original unforked package instead: postcss-markdown' + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + postcss: 7.0.39 + postcss-syntax: 0.36.2_postcss@7.0.39 + remark: 13.0.0 + unist-util-find-all-after: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + + /@types/echarts/4.9.16: + resolution: {integrity: sha512-bfiagfPw3dWauAIJ9fgoJQoL4hLWlGcltqwbE6LGye0NIY5xnbZau+mDmadCzGojic3MWuFDCUiO25kl4sRGeA==} + dependencies: + '@types/zrender': 4.0.3 + dev: true + + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/lodash/4.14.182: + resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} + dev: false + + /@types/lodash/4.14.191: + resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} + dev: true + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/mockjs/1.0.7: + resolution: {integrity: sha512-OCxXz6hEaJOVpRwuJMiVY5a6LtJcih+br9gwB/Q8ooOBikvk5FpBQ31OlNimXo3EqKha1Z7PFBni+q9m+8NCWg==} + dev: true + + /@types/node/18.11.18: + resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: true + + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 18.11.18 + dev: true + + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: true + + /@types/sortablejs/1.15.0: + resolution: {integrity: sha512-qrhtM7M41EhH4tZQTNw2/RJkxllBx3reiJpTbgWCM2Dx0U1sZ6LwKp9lfNln9uqE26ZMKUaPEYaD4rzvOWYtZw==} + dev: false + + /@types/tinycolor2/1.4.3: + resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==} + dev: false + + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + + /@types/validator/13.7.10: + resolution: {integrity: sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==} + dev: false + + /@types/ws/8.5.4: + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + dependencies: + '@types/node': 18.11.18 + dev: true + + /@types/zrender/4.0.3: + resolution: {integrity: sha512-EPI269lkHNsObwILJ1k1z7znLjKyePuWRy/XKK0shSGpBb9cIX307arcwJV4+2NeZj5wEjN06r4D8yFv7sI06g==} + dev: true + + /@typescript-eslint/eslint-plugin/4.33.0_5717ef02ba985de55f36ee939304b942: + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0_eslint@7.32.0+typescript@4.8.4 + '@typescript-eslint/parser': 4.33.0_eslint@7.32.0+typescript@4.8.4 + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin/5.48.1_071695f10be053b182d3706ea0b2d562: + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.48.1_eslint@7.32.0+typescript@4.8.4 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/type-utils': 5.48.1_eslint@7.32.0+typescript@4.8.4 + '@typescript-eslint/utils': 5.48.1_eslint@7.32.0+typescript@4.8.4 + debug: 4.3.4 + eslint: 7.32.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/4.33.0_eslint@7.32.0+typescript@4.8.4: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/4.33.0_eslint@7.32.0+typescript@4.8.4: + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.48.1_eslint@7.32.0+typescript@4.8.4: + resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.8.4 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/scope-manager/5.48.1: + resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 + dev: true + + /@typescript-eslint/type-utils/5.48.1_eslint@7.32.0+typescript@4.8.4: + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.8.4 + '@typescript-eslint/utils': 5.48.1_eslint@7.32.0+typescript@4.8.4 + debug: 4.3.4 + eslint: 7.32.0 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types/5.48.1: + resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.8.4: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/5.48.1_typescript@4.8.4: + resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.48.1_eslint@7.32.0+typescript@4.8.4: + resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.8.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys/5.48.1: + resolution: {integrity: sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.48.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@vitejs/plugin-vue-jsx/1.3.10: + resolution: {integrity: sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==} + engines: {node: '>=12.0.0'} + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.12 + '@rollup/pluginutils': 4.2.1 + '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.20.12 + hash-sum: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.45: + resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 + dependencies: + vite: 2.9.15_less@4.1.3 + vue: 3.2.45 + dev: true + + /@volar/language-core/1.0.24: + resolution: {integrity: sha512-vTN+alJiWwK0Pax6POqrmevbtFW2dXhjwWiW/MW4f48eDYPLdyURWcr8TixO7EN/nHsUBj2udT7igFKPtjyAKg==} + dependencies: + '@volar/source-map': 1.0.24 + muggle-string: 0.1.0 + dev: true + + /@volar/source-map/1.0.24: + resolution: {integrity: sha512-Qsv/tkplx18pgBr8lKAbM1vcDqgkGKQzbChg6NW+v0CZc3G7FLmK+WrqEPzKlN7Cwdc6XVL559Nod8WKAfKr4A==} + dependencies: + muggle-string: 0.1.0 + dev: true + + /@volar/typescript/1.0.24: + resolution: {integrity: sha512-f8hCSk+PfKR1/RQHxZ79V1NpDImHoivqoizK+mstphm25tn/YJ/JnKNjZHB+o21fuW0yKlI26NV3jkVb2Cc/7A==} + dependencies: + '@volar/language-core': 1.0.24 + dev: true + + /@volar/vue-language-core/1.0.24: + resolution: {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.2 + vue-template-compiler: 2.7.14 + dev: true + + /@volar/vue-typescript/1.0.24: + resolution: {integrity: sha512-9a25oHDvGaNC0okRS47uqJI6FxY4hUQZUsxeOUFHcqVxZEv8s17LPuP/pMMXyz7jPygrZubB/qXqHY5jEu/akA==} + dependencies: + '@volar/typescript': 1.0.24 + '@volar/vue-language-core': 1.0.24 + dev: true + + /@vue/babel-helper-vue-transform-on/1.0.2: + resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} + dev: true + + /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.20.12: + resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 + '@vue/babel-helper-vue-transform-on': 1.0.2 + camelcase: 6.3.0 + html-tags: 3.2.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@vue/compiler-core/3.2.45: + resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} + dependencies: + '@babel/parser': 7.20.7 + '@vue/shared': 3.2.45 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.45: + resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} + dependencies: + '@vue/compiler-core': 3.2.45 + '@vue/shared': 3.2.45 + + /@vue/compiler-sfc/3.2.45: + resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} + dependencies: + '@babel/parser': 7.20.7 + '@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.9 + postcss: 8.4.21 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.45: + resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} + dependencies: + '@vue/compiler-dom': 3.2.45 + '@vue/shared': 3.2.45 + + /@vue/devtools-api/6.4.5: + resolution: {integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==} + dev: false + + /@vue/eslint-config-typescript/11.0.2_f9767614b1524794e95023af407b17ab: + resolution: {integrity: sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.48.1_071695f10be053b182d3706ea0b2d562 + '@typescript-eslint/parser': 5.48.1_eslint@7.32.0+typescript@4.8.4 + eslint: 7.32.0 + eslint-plugin-vue: 9.8.0_eslint@7.32.0 + typescript: 4.8.4 + vue-eslint-parser: 9.1.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/reactivity-transform/3.2.45: + resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} + dependencies: + '@babel/parser': 7.20.7 + '@vue/compiler-core': 3.2.45 + '@vue/shared': 3.2.45 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.45: + resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} + dependencies: + '@vue/shared': 3.2.45 + + /@vue/runtime-core/3.2.45: + resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} + dependencies: + '@vue/reactivity': 3.2.45 + '@vue/shared': 3.2.45 + dev: false + + /@vue/runtime-dom/3.2.45: + resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} + dependencies: + '@vue/runtime-core': 3.2.45 + '@vue/shared': 3.2.45 + csstype: 2.6.21 + dev: false + + /@vue/server-renderer/3.2.45_vue@3.2.45: + resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} + peerDependencies: + vue: 3.2.45 + dependencies: + '@vue/compiler-ssr': 3.2.45 + '@vue/shared': 3.2.45 + vue: 3.2.45 + dev: false + + /@vue/shared/3.2.45: + resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} + + /JSONStream/1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.1 + dev: true + + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles/6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-ify/1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + get-intrinsic: 1.1.3 + is-string: 1.0.7 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + es-shim-unscopables: 1.0.0 + dev: true + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /atob/2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer/9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001442 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axios/1.2.2: + resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==} + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /bail/1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /balanced-match/2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bezier-easing/2.1.0: + resolution: {integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==} + dev: false + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001442 + electron-to-chromium: 1.4.284 + node-releases: 2.0.8 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /cachedir/2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite/1.0.30001442: + resolution: {integrity: sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /character-entities-legacy/1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities/1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid/1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chroma-js/2.1.2: + resolution: {integrity: sha512-ri/ouYDWuxfus3UcaMxC1Tfp3IE9K5iQzxc2hSxbBRVNQFut1UuGAsZmiAf2mOUubzGJwgMSv9lHg+XqLaz1QQ==} + dependencies: + cross-env: 6.0.3 + dev: false + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners/2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-truncate/3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: true + + /cli-width/3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /clipboard/2.0.11: + resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + dev: false + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-regexp/2.2.0: + resolution: {integrity: sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==} + engines: {node: '>=6'} + dependencies: + is-regexp: 2.1.0 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /commander/9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /commitizen/4.2.6: + resolution: {integrity: sha512-RyTM+EiD9GO01DJUn9MRRAet3XUHGfoUZoksLfr+1ym1Xt2q5EYJs9Fg2BtKSb5Mo53i0BtMBmWMHQXVlZ/L9w==} + engines: {node: '>= 12'} + hasBin: true + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0 + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.4 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.6 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + /compare-func/2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect/3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + dev: true + + /conventional-changelog-angular/5.0.13: + resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} + engines: {node: '>=10'} + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + dev: true + + /conventional-changelog-conventionalcommits/5.0.0: + resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} + engines: {node: '>=10'} + dependencies: + compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 + dev: true + + /conventional-commit-types/3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + dev: true + + /conventional-commits-parser/3.2.4: + resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} + engines: {node: '>=10'} + hasBin: true + dependencies: + is-text-path: 1.0.1 + JSONStream: 1.3.5 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /copy-anything/2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /core-js-pure/3.27.1: + resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==} + requiresBuild: true + dev: false + + /cosmiconfig-typescript-loader/4.3.0_f48aea64269cbb38d3db6452ebfefe84: + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=3' + dependencies: + '@types/node': 18.11.18 + cosmiconfig: 8.0.0 + ts-node: 10.9.1_ac04029d3cbd63a6e54d5c46a5abbdcb + typescript: 4.8.4 + dev: true + + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cosmiconfig/8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: true + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-env/6.0.3: + resolution: {integrity: sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==} + engines: {node: '>=8.0'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: false + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css/3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /csstype/2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + dev: false + + /cz-conventional-changelog/3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + dependencies: + chalk: 2.4.2 + commitizen: 4.2.6 + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.3 + optionalDependencies: + '@commitlint/load': 17.4.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + + /dargs/7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + + /dayjs/1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + + /de-indent/1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + dependencies: + ms: 2.1.3 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.4_supports-color@9.3.1: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 9.3.1 + dev: true + + /decamelize-keys/1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decode-uri-component/0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /default-passive-events/2.0.0: + resolution: {integrity: sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==} + dev: false + + /defaults/1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /delegate/3.2.0: + resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + dev: false + + /detect-file/1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /dot-prop/5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /echarts/5.4.1: + resolution: {integrity: sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==} + dependencies: + tslib: 2.3.0 + zrender: 5.4.1 + dev: false + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /entities/1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract/1.21.0: + resolution: {integrity: sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.3 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.4 + is-array-buffer: 3.0.1 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: true + + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.3 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.11.3: + resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} + hasBin: true + requiresBuild: true + dev: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-airbnb-base/14.2.1_3bd94fa9be989baab6ef2e6b5dec3766: + resolution: {integrity: sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==} + engines: {node: '>= 6'} + peerDependencies: + eslint: ^5.16.0 || ^6.8.0 || ^7.2.0 + eslint-plugin-import: ^2.22.1 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 7.32.0 + eslint-plugin-import: 2.26.0_eslint@7.32.0 + object.assign: 4.1.4 + object.entries: 1.1.6 + dev: true + + /eslint-config-prettier/8.6.0_eslint@7.32.0: + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-import-resolver-node/0.3.6: + resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + dependencies: + debug: 3.2.7 + resolve: 1.22.1 + dev: true + + /eslint-module-utils/2.7.4_eslint@7.32.0: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + debug: 3.2.7 + eslint: 7.32.0 + dev: true + + /eslint-plugin-import/2.26.0_eslint@7.32.0: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.4_eslint@7.32.0 + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + dev: true + + /eslint-plugin-prettier/4.2.1_7642ad2ab48ac424c7f5dad05f5cb168: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.32.0 + eslint-config-prettier: 8.6.0_eslint@7.32.0 + prettier: 2.8.2 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-vue-scoped-css/2.2.0_eslint@7.32.0: + resolution: {integrity: sha512-PjjoYAm4crSZvcvRZpsJdHS8WcLc/bbodEkbLkXVpR6VlC9TGs+n7SCJZlKzili/nNwMGeJGhNdpoiySyIaVgg==} + engines: {node: ^12.22 || ^14.17 || >=16} + peerDependencies: + eslint: '>=5.0.0' + vue-eslint-parser: '>=7.1.0' + dependencies: + eslint: 7.32.0 + eslint-utils: 3.0.0_eslint@7.32.0 + lodash: 4.17.21 + postcss: 8.4.21 + postcss-safe-parser: 6.0.0_postcss@8.4.21 + postcss-scss: 4.0.6_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-styl: 0.9.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-vue/9.8.0_eslint@7.32.0: + resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 7.32.0 + eslint-utils: 3.0.0_eslint@7.32.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.11 + semver: 7.3.8 + vue-eslint-parser: 9.1.0_eslint@7.32.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@7.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.19.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.3.8 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.1 + acorn-jsx: 5.3.2_acorn@8.8.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execall/2.0.0: + resolution: {integrity: sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==} + engines: {node: '>=8'} + dependencies: + clone-regexp: 2.2.0 + dev: true + + /expand-tilde/2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff/1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastest-levenshtein/1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler/1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + dev: true + + /find-node-modules/2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + dev: true + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /findup-sync/4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + resolve-dir: 1.0.1 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fs-extra/11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + dev: true + + /git-raw-commits/2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs/0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + dependencies: + ini: 1.3.8 + dev: true + + /global-modules/1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + dev: true + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix/1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + dev: true + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals/13.19.0: + resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.4 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globjoin/0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /gonzales-pe/4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /good-listener/1.2.2: + resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + dependencies: + delegate: 3.2.0 + dev: false + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-sum/2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /homedir-polyfill/1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /html-tags/3.2.0: + resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + engines: {node: '>=8'} + dev: true + + /htmlparser2/3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /husky/7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + optional: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /image-size/0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /inquirer/8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /internal-slot/1.0.4: + resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.3 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /is-alphabetical/1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical/1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + + /is-array-buffer/3.0.1: + resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-typed-array: 1.1.10 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal/1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-fullwidth-code-point/4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hexadecimal/1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-regexp/2.1.0: + resolution: {integrity: sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==} + engines: {node: '>=6'} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-text-path/1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-utf8/0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-what/3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-windows/1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5/1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonparse/1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /known-css-properties/0.21.0: + resolution: {integrity: sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==} + dev: true + + /less/4.1.3: + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.4.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.10 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.2.0 + source-map: 0.6.1 + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig/2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /lint-staged/12.5.0: + resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.19 + commander: 9.5.0 + debug: 4.3.4_supports-color@9.3.1 + execa: 5.1.1 + lilconfig: 2.0.5 + listr2: 4.0.5 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-inspect: 1.12.2 + pidtree: 0.5.0 + string-argv: 0.3.1 + supports-color: 9.3.1 + yaml: 1.10.2 + transitivePeerDependencies: + - enquirer + dev: true + + /listr2/4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.19 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.0 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.isfunction/3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase/4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.map/4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.snakecase/4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.sortedlastindex/4.1.0: + resolution: {integrity: sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==} + dev: true + + /lodash.startcase/4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst/4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /longest-streak/2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + dev: true + + /longest/2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + optional: true + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /mathml-tag-names/2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /mdast-util-from-markdown/0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-markdown/0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + dependencies: + '@types/unist': 2.0.6 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + dev: true + + /mdast-util-to-string/2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /meow/8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /meow/9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge/2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromark/2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.2: + resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + dev: true + + /mitt/3.0.0: + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} + dev: false + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mockjs/1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + dependencies: + commander: 9.5.0 + dev: true + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /muggle-string/0.1.0: + resolution: {integrity: sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==} + dev: true + + /mute-stream/0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /needle/3.2.0: + resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.6.3 + sax: 1.2.4 + dev: true + optional: true + + /node-releases/2.0.8: + resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.11.0 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-selector/0.2.0: + resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nprogress/0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + dev: true + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + dev: true + + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + dev: true + + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /ora/5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.7.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-entities/2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-node-version/1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse-passwd/1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-to-regexp/6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors/0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pidtree/0.5.0: + resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + optional: true + + /pinia-plugin-persistedstate/3.0.2_pinia@2.0.28: + resolution: {integrity: sha512-84vPyUhPA/8Pr+1mT1ioNb2d8z4tvdgYRqMQf8xyauOVBKjo0ZcRBwPQBV7ZAJG43Kwar43nXG2jU+ZMvAFFRQ==} + peerDependencies: + pinia: ^2.0.0 + dependencies: + pinia: 2.0.28_typescript@4.8.4+vue@3.2.45 + dev: false + + /pinia/2.0.28_typescript@4.8.4+vue@3.2.45: + resolution: {integrity: sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.4.5 + typescript: 4.8.4 + vue: 3.2.45 + vue-demi: 0.13.11_vue@3.2.45 + dev: false + + /postcss-html/0.36.0_4f7b71a942b8b7a555b8adf78f88122b: + resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + dependencies: + htmlparser2: 3.10.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2_postcss@7.0.39 + dev: true + + /postcss-less/3.1.4: + resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} + engines: {node: '>=6.14.4'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-media-query-parser/0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-resolve-nested-selector/0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser/4.0.2: + resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-safe-parser/6.0.0_postcss@8.4.21: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.21 + dev: true + + /postcss-sass/0.4.4: + resolution: {integrity: sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==} + dependencies: + gonzales-pe: 4.3.0 + postcss: 7.0.39 + dev: true + + /postcss-scss/2.1.1: + resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-scss/4.0.6_postcss@8.4.21: + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.19 + dependencies: + postcss: 8.4.21 + dev: true + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-sorting/5.0.1: + resolution: {integrity: sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==} + engines: {node: '>=8.7.0'} + dependencies: + lodash: 4.17.21 + postcss: 7.0.39 + dev: true + + /postcss-styl/0.9.0: + resolution: {integrity: sha512-EgES+TZXUi7LkFnSIf7R6sE80kepOFrlRVLSSxPKn3Bz036VR8PYidcBKvLGwfZ91fe+tEZ9iHGekb0OLtbvfg==} + engines: {node: ^8.10.0 || ^10.13.0 || ^11.10.1 || >=12.13.0} + dependencies: + debug: 4.3.4 + fast-diff: 1.2.0 + lodash.sortedlastindex: 4.1.0 + postcss: 8.4.21 + stylus: 0.55.0 + transitivePeerDependencies: + - supports-color + dev: true + + /postcss-syntax/0.36.2_postcss@7.0.39: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss/7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + dev: true + + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers/1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier/2.8.2: + resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /proxy-from-env/1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + optional: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /q/1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /qrcode.vue/3.3.3_vue@3.2.45: + resolution: {integrity: sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==} + peerDependencies: + vue: ^3.0.0 + dependencies: + vue: 3.2.45 + dev: false + + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: false + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /remark-parse/9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-stringify/9.0.1: + resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /remark/13.0.0: + resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} + dependencies: + remark-parse: 9.0.0 + remark-stringify: 9.0.1 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /repeat-string/1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-dir/1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-global/1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + dependencies: + global-dirs: 0.1.1 + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async/2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + dependencies: + tslib: 2.4.1 + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-regex: 1.1.4 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + + /select/1.1.2: + resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + dev: false + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /sortablejs/1.15.0: + resolution: {integrity: sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==} + dev: false + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-resolve/0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids/3.0.12: + resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true + + /specificity/0.4.1: + resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + hasBin: true + dev: true + + /split2/3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.0 + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /string-argv/0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: true + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + dev: true + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.0 + dev: true + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-search/0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /stylelint-config-prettier/9.0.4_stylelint@13.13.1: + resolution: {integrity: sha512-38nIGTGpFOiK5LjJ8Ma1yUgpKENxoKSOhbDNSemY7Ep0VsJoXIW9Iq/2hSt699oB9tReynfWicTAoIHiq8Rvbg==} + engines: {node: '>= 12'} + hasBin: true + peerDependencies: + stylelint: '>=11.0.0' + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-less/1.0.6_stylelint@13.13.1: + resolution: {integrity: sha512-lL+4HFP8V6WkXuNGXRAirnW83KQYEE6LpBsOCibka0bFHUh2mIcJXwcc4uQu1c9UUopHr8vjIH2YElW61lQBXg==} + peerDependencies: + stylelint: ^14.9.1 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + stylelint: 13.13.1 + dev: true + + /stylelint-order/4.1.0_stylelint@13.13.1: + resolution: {integrity: sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==} + peerDependencies: + stylelint: ^10.0.1 || ^11.0.0 || ^12.0.0 || ^13.0.0 + dependencies: + lodash: 4.17.21 + postcss: 7.0.39 + postcss-sorting: 5.0.1 + stylelint: 13.13.1 + dev: true + + /stylelint/13.13.1: + resolution: {integrity: sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@stylelint/postcss-css-in-js': 0.37.3_4f7b71a942b8b7a555b8adf78f88122b + '@stylelint/postcss-markdown': 0.36.2_4f7b71a942b8b7a555b8adf78f88122b + autoprefixer: 9.8.8 + balanced-match: 2.0.0 + chalk: 4.1.2 + cosmiconfig: 7.1.0 + debug: 4.3.4 + execall: 2.0.0 + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + get-stdin: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.4 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + known-css-properties: 0.21.0 + lodash: 4.17.21 + log-symbols: 4.1.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-selector: 0.2.0 + postcss: 7.0.39 + postcss-html: 0.36.0_4f7b71a942b8b7a555b8adf78f88122b + postcss-less: 3.1.4 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 4.0.2 + postcss-sass: 0.4.4 + postcss-scss: 2.1.1 + postcss-selector-parser: 6.0.11 + postcss-syntax: 0.36.2_postcss@7.0.39 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + slash: 3.0.0 + specificity: 0.4.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + sugarss: 2.0.0 + svg-tags: 1.0.0 + table: 6.8.1 + v8-compile-cache: 2.3.0 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /stylus/0.55.0: + resolution: {integrity: sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==} + hasBin: true + dependencies: + css: 3.0.0 + debug: 3.1.0 + glob: 7.2.3 + mkdirp: 1.0.4 + safer-buffer: 2.1.2 + sax: 1.2.4 + semver: 6.3.0 + source-map: 0.7.4 + dev: true + + /sugarss/2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/9.3.1: + resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} + engines: {node: '>=12'} + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svg-tags/1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /table/6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tdesign-icons-vue-next/0.1.7_vue@3.2.45: + resolution: {integrity: sha512-4BwPIo0K1EHPhy0YToc1I2GUnr6SLmiP6vxyNuC993+x0xv2C2jMXzOcDiJGX5QsgicJ7UEHMIfs+fvtDLgbng==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@babel/runtime': 7.20.7 + vue: 3.2.45 + dev: false + + /tdesign-vue-next/0.25.0_vue@3.2.45: + resolution: {integrity: sha512-5apMUOhEuyLqRyNnOPgVANbmVMMJ4zQ4UQtPGMav2aHhP35pgQgTThYk/sAZhOtkIPuHTHStW6vteYvFzlGYNg==} + peerDependencies: + vue: '>=3.1.0' + dependencies: + '@babel/runtime': 7.20.7 + '@popperjs/core': 2.11.6 + '@types/lodash': 4.14.182 + '@types/sortablejs': 1.15.0 + '@types/tinycolor2': 1.4.3 + '@types/validator': 13.7.10 + dayjs: 1.11.7 + lodash: 4.17.21 + mitt: 3.0.0 + sortablejs: 1.15.0 + tdesign-icons-vue-next: 0.1.7_vue@3.2.45 + tinycolor2: 1.5.2 + validator: 13.7.0 + vue: 3.2.45 + dev: false + + /text-extensions/1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /through2/4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.0 + dev: true + + /tiny-emitter/2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + dev: false + + /tinycolor2/1.5.2: + resolution: {integrity: sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==} + dev: false + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /trough/1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /ts-node/10.9.1_ac04029d3cbd63a6e54d5c46a5abbdcb: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.11.18 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.8.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.7 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /tsutils/3.21.0_typescript@4.8.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.8.4 + dev: true + + /tvision-color/1.5.0: + resolution: {integrity: sha512-9gsV2l9HPoiYTXooQK5CtUtkJAB8EsCuktjdfkUs3aN20CBkDhAG6XP5T+SRdp/onTshb8OXbil4vRDFiUnXvQ==} + dependencies: + '@babel/runtime-corejs3': 7.18.9 + '@material/material-color-utilities': 0.1.2 + bezier-easing: 2.1.0 + chroma-js: 2.1.2 + dev: false + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typescript/4.8.4: + resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unified/9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /unist-util-find-all-after/3.0.2: + resolution: {integrity: sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-is/4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + + /unist-util-stringify-position/2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /validator/13.7.0: + resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} + engines: {node: '>= 0.10'} + dev: false + + /vfile-message/2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile/4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.9.15: + resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} + engines: {node: '>=12.0.0'} + peerDependencies: + mockjs: '>=1.1.0' + vite: '>=2.0.0' + dependencies: + '@rollup/plugin-node-resolve': 13.3.0 + '@types/mockjs': 1.0.7 + chalk: 4.1.2 + chokidar: 3.5.3 + connect: 3.7.0 + debug: 4.3.4 + esbuild: 0.11.3 + fast-glob: 3.2.12 + mockjs: 1.1.0 + path-to-regexp: 6.2.1 + vite: 2.9.15_less@4.1.3 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /vite-svg-loader/3.6.0: + resolution: {integrity: sha512-bZJffcgCREW57kNkgMhuNqeDznWXyQwJ3wKrRhHLMMzwDnP5jr3vXW3cqsmquRR7VTP5mLdKj1/zzPPooGUuPw==} + dependencies: + '@vue/compiler-sfc': 3.2.45 + svgo: 2.8.0 + dev: true + + /vite/2.9.15_less@4.1.3: + resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.54 + less: 4.1.3 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vue-clipboard3/2.0.0: + resolution: {integrity: sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==} + dependencies: + clipboard: 2.0.11 + dev: false + + /vue-demi/0.13.11_vue@3.2.45: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.45 + dev: false + + /vue-eslint-parser/9.1.0_eslint@7.32.0: + resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 7.32.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + lodash: 4.17.21 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-router/4.1.6_vue@3.2.45: + resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.4.5 + vue: 3.2.45 + dev: false + + /vue-template-compiler/2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc/1.0.24_typescript@4.8.4: + resolution: {integrity: sha512-mmU1s5SAqE1nByQAiQnao9oU4vX+mSdsgI8H57SfKH6UVzq/jP9+Dbi2GaV+0b4Cn361d2ln8m6xeU60ApiEXg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': 1.0.24 + '@volar/vue-typescript': 1.0.24 + typescript: 4.8.4 + dev: true + + /vue/3.2.45: + resolution: {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@3.2.45 + '@vue/shared': 3.2.45 + dev: false + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + 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.8 + yargs-parser: 21.1.1 + dev: true + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zrender/5.4.1: + resolution: {integrity: sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==} + dependencies: + tslib: 2.3.0 + dev: false + + /zwitch/1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..bb41e58 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..e42f02e Binary files /dev/null and b/public/logo.png differ diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..d882278 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/api/coupon.ts b/src/api/coupon.ts new file mode 100644 index 0000000..31f3b52 --- /dev/null +++ b/src/api/coupon.ts @@ -0,0 +1,34 @@ +import { request } from '@/utils/request' +// 运营端分页查询活动优惠券 +export function getCouponList(data) { + return request.get({ + url: '/market/operation/activity/page', + params: data + }) +} +// 根据活动id查询活动优惠券领取记录 +export function getCouponRecordList(data) { + return request.get({ + url: '/market/operation/coupon/page', + params: data + }) +} +// 活动保存 +export function saveCoupon(data) { + return request.post({ + url: '/market/operation/activity/save', + data + }) +} +// 查询活动详情 +export function getCouponDetail(id) { + return request.get({ + url: '/market/operation/activity/' + id, + }) +} +// 活动撤销,即删除优惠券 +export function deleteCoupon(id) { + return request.post({ + url: '/market/operation/activity/revoke/' + id, + }) +} \ No newline at end of file diff --git a/src/api/custom.ts b/src/api/custom.ts new file mode 100644 index 0000000..03131df --- /dev/null +++ b/src/api/custom.ts @@ -0,0 +1,17 @@ +import { request } from '@/utils/request' +import type { customListRequest, customFreezeRequest } from '@/api/model/customModel' + +// 普通用户分页查询 +export function getCustomList(data: customListRequest) { + return request.get({ + url: '/customer/operation/common-user/page', + params: data + }) +} +// 冻结/解冻 +export function customFreeze(data: customFreezeRequest) { + return request.put({ + url: '/customer/operation/common-user/updateStatus', + data: data + }) +} \ No newline at end of file diff --git a/src/api/detail.ts b/src/api/detail.ts new file mode 100644 index 0000000..4f1451f --- /dev/null +++ b/src/api/detail.ts @@ -0,0 +1,23 @@ +import { request } from '@/utils/request' +import type { ListResult } from '@/api/model/listModel' + +export function getProjectList() { + return request.get({ + url: '/get-detail-list' + }) +} +// 首页数据 +export function getDashBoardData(params) { + return request.get({ + url: '/orders-history/operation/orders-statistics/homePage', + params + }) +} +// 导出统计数据 +export function exportStatisticsData(params) { + return request.get({ + url: '/orders-history/operation/orders-statistics/downloadStatistics', + params, + responseType: 'blob' + }) +} diff --git a/src/api/form.ts b/src/api/form.ts new file mode 100644 index 0000000..0b3b132 --- /dev/null +++ b/src/api/form.ts @@ -0,0 +1,16 @@ +import { request } from '@/utils/request' +import type { FormStep, FormSteppassword } from '@/api/model/formModel' +// 分布式表单提交 +export function addList(params: FormStep) { + return request.post({ + url: '/form/step', + data: params + }) +} +// 密码验证 +export function validatePassword(params: FormSteppassword) { + return request.post({ + url: '/validate-password', + data: params + }) +} diff --git a/src/api/list.ts b/src/api/list.ts new file mode 100644 index 0000000..3cb335d --- /dev/null +++ b/src/api/list.ts @@ -0,0 +1,79 @@ +import { request } from '@/utils/request' +import type { + CardListResult, + ListResult, + addListParams, + deleteListParams, + ListCollapseResult, + ListTransferModel, + ListCardsortResult +} from '@/api/model/listModel' + +export function getList() { + return request.get({ + url: '/get-list' + }) +} + +export function getCardList() { + return request.get({ + url: '/get-card-list' + }) +} +// 新增和编辑基础列表的数据 +export function addList(params: addListParams) { + return request.post({ + url: '/list-basic/add', + data: params + }) +} +// 删除基础列表的数据 +export function deleteList(params: deleteListParams) { + return request.post({ + url: '/list-basic/delete', + data: params + }) +} +// 折叠列表数据 +export function getCollapseList() { + return request.get({ + url: '/get-collapse-list' + }) +} + +// 穿梭框数据 +export function getTransferList() { + return request.get({ + url: '/get-transfer-list' + }) +} +// 卡片数据 +export function getcardSortList() { + return request.get({ + url: '/get-cardsort-list' + }) +} +// 列表弹层例表数据 +export function getDialogList() { + return request.get({ + url: '/get-dialog-list' + }) +} +// 树形列表数据 +export function getTreeList() { + return request.get({ + url: '/get-tree-list' + }) +} +// 下拉列表数据 +export function getSelectList() { + return request.get({ + url: '/get-select' + }) +} +// 带tab的列表 +export function getTabList() { + return request.get({ + url: '/get-tab-list' + }) +} diff --git a/src/api/model/customModel.ts b/src/api/model/customModel.ts new file mode 100644 index 0000000..dcce364 --- /dev/null +++ b/src/api/model/customModel.ts @@ -0,0 +1,14 @@ +export interface customListRequest { + page: number + pageSize: number + orderBy1: string + isAsc1: boolean + nickName?: string + phone?: string +} +// 冻结/解冻 +export interface customFreezeRequest { + id: string + status: number + accountLockReason?: string +} \ No newline at end of file diff --git a/src/api/model/detailModel.ts b/src/api/model/detailModel.ts new file mode 100644 index 0000000..5acab55 --- /dev/null +++ b/src/api/model/detailModel.ts @@ -0,0 +1,23 @@ +export interface PurchaseListResult { + list: Array +} +export interface PurchaseInfo { + adminName: string + index: string + pdName: string + pdNum: string + pdType: string + purchaseNum: number + updateTime: Date +} + +export interface ProjectListResult { + list: Array +} +export interface ProjectInfo { + adminName: string + adminPhone: string + index: number + name: string + updateTime: Date +} diff --git a/src/api/model/formModel.ts b/src/api/model/formModel.ts new file mode 100644 index 0000000..9a2e766 --- /dev/null +++ b/src/api/model/formModel.ts @@ -0,0 +1,12 @@ +// 提交分布式表单的数据 +export interface FormStep { + name: string + type: string + account: string + payAccount: string + amount: string +} +// 密码验证 +export interface FormSteppassword { + password: string +} diff --git a/src/api/model/listModel.ts b/src/api/model/listModel.ts new file mode 100644 index 0000000..272acdd --- /dev/null +++ b/src/api/model/listModel.ts @@ -0,0 +1,86 @@ +export interface ListResult { + data: any[] + list: Array +} +export interface ListModel { + adminName: string + amount: string + contractType: number + index: number + name: string + no: string + paymentType: number + status: number + updateTime: Date +} + +export interface CardListResult { + data: any + [x: string]: any + list: Array +} +export interface CardList { + banner: string + description: string + index: number + isSetup: boolean + name: string + type: number +} +// 新增和编辑基础列表的数据 +export interface addListParams { + index: number + description: string + serviceCallNumber: number + status: number + updateTime: Date +} +// 删除基础列表的数据 +export interface deleteListParams { + index: number +} +// 折叠树列表 +export interface ListCollapseResult { + data: any[] + list: Array +} +export interface ListCollapseModel { + index: number + canUpdate: boolean + name: string + maxIndexOnShelf: number + maxSectionIndexOnShelf: number + id: string + sections: [ + { + index: number + maxIndexOnShelf: number + maxSectionIndexOnShelf: number + name: string + sort: number + } + ] +} + +// 穿梭框 +export interface ListTransferResult { + data: any[] + list: Array +} +export interface ListTransferModel { + name: string + id: string +} +// 卡片带排序 +export interface ListCardsortResult { + data: any[] + list: Array +} +export interface ListCardsortModel { + name: string + id: string + isShow: boolean + introduce: string + num: number + phone: string +} diff --git a/src/api/model/serviceModel.ts b/src/api/model/serviceModel.ts new file mode 100644 index 0000000..3217e9f --- /dev/null +++ b/src/api/model/serviceModel.ts @@ -0,0 +1,58 @@ +export interface serviceTypeResult { + isAsc1: string + isAsc2: string + orderBy1: string + orderBy2: string + pageNo: number + pageSize: number +} +export interface serviceTypeStatus { + id: string + flag: number +} +export interface serviceTypeAdd { + img: string + serveTypeIcon: string + name: string + sortNum: number +} +export interface serviceTypeItemList { + isAsc1: string + isAsc2: string + orderBy1: string + orderBy2: string + pageNo: number + pageSize: number + name: string + serveTypeId: string +} +export interface serviceItemTypeAdd { + serveTypeId: string + img: string + description: string + referencePrice: string + unit: string + serveItemIcon: string + detailImg: string + name: string + sortNum: string +} +export interface regionTypeAdd { + cityCode: string + name: string + managerName: string + managerPhone: string +} +export interface regionTypeEdit { + managerName: string + managerPhone: string +} +export interface serviceListType { + isAsc1: string + isAsc2: string + orderBy1: string + orderBy2: string + pageNo: number + pageSize: number + regionId: string +} diff --git a/src/api/model/userModel.ts b/src/api/model/userModel.ts new file mode 100644 index 0000000..6ec2683 --- /dev/null +++ b/src/api/model/userModel.ts @@ -0,0 +1,19 @@ +export interface loginResult { + code: number + msg: string + data: string + requestId: string +} + +export interface userInfoResult { + code: number + msg: string + data: { + icon: string + id: string + name: string + roleName: string + type: number + requestId: string + } +} diff --git a/src/api/order.ts b/src/api/order.ts new file mode 100644 index 0000000..3290041 --- /dev/null +++ b/src/api/order.ts @@ -0,0 +1,35 @@ +import { request } from '@/utils/request' + +// 根据订单id查询 +export function getOrderById(id) { + return request.get({ + url: '/orders-manager/operation/orders/aggregation/' + id + }) +} +// 订单分页查询 +export function getOrderList(value :any) { + return request.get({ + url: '/orders-manager/operation/orders/page', + params: value + }) +} +// 订单退款 +export function refundOrder(value :any) { + return request.put({ + url: '/orders-manager/operation/orders/cancel', + data: value + }) +} +// 历史订单分页查询 +export function getHistoryOrderList(value :any) { + return request.get({ + url: '/orders-history/operation/orders/page', + params: value + }) +} +// 查询历史订单详情 +export function getHistoryOrderById(id) { + return request.get({ + url: '/orders-history/operation/orders/' + id + }) +} \ No newline at end of file diff --git a/src/api/service.ts b/src/api/service.ts new file mode 100644 index 0000000..6cafa4f --- /dev/null +++ b/src/api/service.ts @@ -0,0 +1,318 @@ +import { request } from '@/utils/request' +import type { + serviceTypeResult, + serviceTypeStatus, + serviceTypeAdd, + serviceTypeItemList, + serviceItemTypeAdd, + regionTypeAdd, + regionTypeEdit, + serviceListType +} from '@/api/model/serviceModel' + +// 获取服务类型列表数据 +export function getServiceTypeList(value :serviceTypeResult) { + return request.get({ + url: '/foundations/operation/serve-type/page', + params: value + }) +} +// 服务类型启用 +export function serviceTypeActiveStatus(id) { + return request.put({ + url: `/foundations/operation/serve-type/activate/${id}`, + + }) +} +// 服务类型禁用 +export function serviceTypeInactiveStatus(id) { + return request.put({ + url: `/foundations/operation/serve-type/deactivate/${id}`, + }) +} +// 服务类型新增 +export function serviceTypeAdd(value :serviceTypeAdd) { + return request.post({ + url: '/foundations/operation/serve-type', + data: value + }) +} +// 服务类型编辑 +export function serviceTypeEdit(value :serviceTypeAdd, id :string) { + return request.put({ + url: '/foundations/operation/serve-type/' + id, + data: value + }) +} +// 服务类型删除 +export function serviceTypeDelete(id :string) { + return request.delete({ + url: '/foundations/operation/serve-type/' + id + }) +} +// 服务类型简略列表,用于下拉框 +export function serviceTypeSimpleList(val?) { + return request.get({ + url: '/foundations/operation/serve-type/queryServeTypeListByActiveStatus', + params: val + }) +} +// 分页查询服务项 +export function serviceItemList(value :serviceTypeItemList) { + return request.get({ + url: '/foundations/operation/serve-item/page', + params: value + }) +} +// 服务项启用 +export function serviceItemActivateStatus(id) { + return request.put({ + url: `/foundations/operation/serve-item/activate/${id}`, + }) +} +// 服务项禁用 +export function serviceItemDeactivateStatus(id) { + return request.put({ + url: `/foundations/operation/serve-item/deactivate/${id}`, + }) +} +// 服务项新增 +export function serviceItemAdd(value :serviceItemTypeAdd) { + return request.post({ + url: '/foundations/operation/serve-item', + data: value + }) +} +// 服务项删除 +export function serviceItemDelete(id :string) { + return request.delete({ + url: '/foundations/operation/serve-item/' + id + }) +} + +// 根据id查询服务项 +export function serviceItemById(id :string) { + return request.get({ + url: '/foundations/operation/serve-item/' + id + }) +} +// 服务项编辑 +export function serviceItemEdit(value :serviceItemTypeAdd, id) { + return request.put({ + url: '/foundations/operation/serve-item/' + id, + data: value + }) +} +// 区域分页查询 +export function regionList(value :serviceTypeResult) { + return request.get({ + url: '/foundations/operation/region/page', + params: value + }) +} +// 区域新增 +export function regionAdd(value :regionTypeAdd) { + return request.post({ + url: '/foundations/operation/region', + data: value + }) +} +// 区域编辑 +export function regionEdit(value :regionTypeEdit, id :string) { + return request.put({ + url: '/foundations/operation/region/' + id + '?' + 'managerName=' + value.managerName + '&' + 'managerPhone=' + value.managerPhone, + data: value + }) +} +// 区域删除 +export function regionDelete(id :string) { + return request.delete({ + url: '/foundations/operation/region/' + id + }) +} +// 根据id查询区域 +export function regionById(id) { + return request.get({ + url: '/foundations/operation/region/' + id + }) +} +// 服务分页查询 +export function serviceList(value :serviceListType) { + return request.get({ + url: '/foundations/operation/serve/page', + params: value + }) +} +// 服务批量新增 +export function serviceAdd(value) { + return request.post({ + url: '/foundations/operation/serve/batch', + data: value + }) +} +// 服务编辑(只有价格) +export function serviceEdit(value) { + return request.put({ + url: '/foundations/operation/serve/' + value.id + '?' + 'price=' + value.price, + }) +} +// 区域服务设置热门 +export function serviceOnHot(id) { + return request.put({ + url: '/foundations/operation/serve/onHot/' + id, + }) +} +// 区域服务取消热门 +export function serviceOffHot(id) { + return request.put({ + url: '/foundations/operation/serve/offHot/' + id, + }) +} +// 服务启用 +export function serviceActiveStatus(id) { + return request.put({ + url: `/foundations/operation/serve/onSale/${id}`, + }) +} +// 服务禁用 +export function serviceInactiveStatus(id) { + return request.put({ + url: `/foundations/operation/serve/offSale/${id}`, + }) +} +// 服务删除 +export function serviceDelete(id) { + return request.delete({ + url: '/foundations/operation/serve/' + id + }) +} +// 接口名称:机构分页查询 +export function serviceInstitutionList(value) { + return request.get({ + url: '/customer/operation/serve-provider/pageQueryAgency', + params: value + }) +} +// 服务人员分页查询 +export function servicePersonList(value) { + return request.get({ + url: '/customer/operation/serve-provider/pageQueryWorker', + params: value + }) +} +// 服务人员、机构详情 +export function servicePersonDetail(id) { + return request.get({ + url: '/customer/operation/serve-provider/basicInformation/' + id + }) +} +// 服务人员、机构冻结/解冻 +export function servicePersonStatus(value) { + return request.put({ + url: '/customer/operation/serve-provider/updateStatus', + data: value + }) +} +// 机构下属服务人员相关接口分页查询 +export function servicePersonItemList(value) { + return request.get({ + url: '/customer/operation/institution-staff/page', + params: value + }) +} +// 根据id查询调度配置 +export function servicePersonItemById(id) { + return request.get({ + url: '/foundations/operation/config-region/' + id + }) +} +// 更新调度配置 +export function servicePersonItemEdit(value) { + return request.put({ + url: `/foundations/operation/config-region/${value.id}`, + data: value + }) +} +// 区域启用 +export function regionActiveStatus(id) { + return request.put({ + url: `/foundations/operation/region/activate/${id}`, + }) +} +// 区域禁用 +export function regionInactiveStatus(id) { + return request.put({ + url: `/foundations/operation/region/deactivate/${id}`, + }) +} +// 已开通服务区域列表 +export function regionOpenList() { + return request.get({ + url: '/foundations/operation/region/activeRegionList', + }) +} +// 刷新区域相关缓存 +export function regionRefreshCache(id) { + return request.put({ + url: `/foundations/operation/region/refreshRegionRelateCaches/${id}`, + }) +} +// 机构认真审核信息分页查询 +export function serviceInstitutionAuditList(value) { + return request.get({ + url: '/customer/operation/agency-certification-audit/page', + params: value + }) +} +// 服务人员认证审核信息分页查询 +export function servicePersonAuditList(value) { + return request.get({ + url: '/customer/operation/worker-certification-audit/page', + params: value + }) +} +// 审核机构认证信息 +export function serviceInstitutionAudit(value, id) { + return request.put({ + url: '/customer/operation/agency-certification-audit/audit/' + id + '?' + 'rejectReason='+ value.rejectReason + '&' + 'certificationStatus=' + value.certificationStatus, + data: value + }) +} +// 审核服务人员认证信息 +export function servicePersonAudit(value, id) { + return request.put({ + url: '/customer/operation/worker-certification-audit/audit/' + id + '?' + 'rejectReason='+ value.rejectReason + '&' + 'certificationStatus=' + value.certificationStatus, + data: value + }) +} +// 根据机构id查询认证信息 +export function serviceInstitutionAuditDetail(id) { + return request.get({ + url: '/customer/operation/agency-certification/' + id + }) +} +// 根据服务人员id查询认证信息 +export function servicePersonAuditDetail(id) { + return request.get({ + url: '/customer/operation/worker-certification/' + id + }) +} +// 根据服务人员/机构id查询银行账户信息 +export function servicePersonBankDetail(id) { + return request.get({ + url: '/customer/operation/bank-account/' + id + }) +} +// 获取评价系统token +export function serviceToken() { + return request.get({ + url: '/customer/operation/evaluation/token' + }) +} +// 查询服务人员/机构服务数据 +export function servicePersonData(value) { + return request.get({ + url: '/orders-manager/operation/ordersServe/pageQueryByServeProvider', + params: value + }) +} \ No newline at end of file diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100644 index 0000000..25fbffa --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,38 @@ +import { request } from '@/utils/request' +import type { loginResult, userInfoResult } from '@/api/model/userModel' + +// 登录 +// 账号登录 +export const userLogins = (params) => + request.post({ + url: `/foundations/open/login`, + data: params + }) +// 获取用户信息 +export const getUserInfo = () => + request.get({ + url: `/users/me` + }) + +// 注册 +export function register() { + return request.post({ + url: '/login' + }) +} +// 个人中心 +export function getpersonal() { + return request.get({ + url: '/get-personal?test=1&name=2', + params: { + c: 3 + } + }) +} +// 修改个人信息 +export function updatepersonal(params) { + return request.post({ + url: '/update-personal', + data: params + }) +} diff --git a/src/assets/assets-setting-auto.svg b/src/assets/assets-setting-auto.svg new file mode 100644 index 0000000..66f57de --- /dev/null +++ b/src/assets/assets-setting-auto.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/assets-setting-dark.svg b/src/assets/assets-setting-dark.svg new file mode 100644 index 0000000..0f15649 --- /dev/null +++ b/src/assets/assets-setting-dark.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/assets-setting-light.svg b/src/assets/assets-setting-light.svg new file mode 100644 index 0000000..ffa8f34 --- /dev/null +++ b/src/assets/assets-setting-light.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/btn_clean.png b/src/assets/btn_clean.png new file mode 100644 index 0000000..739334c Binary files /dev/null and b/src/assets/btn_clean.png differ diff --git a/src/assets/btn_delete_hover.png b/src/assets/btn_delete_hover.png new file mode 100644 index 0000000..ef0172d Binary files /dev/null and b/src/assets/btn_delete_hover.png differ diff --git a/src/assets/btn_delete_nor.png b/src/assets/btn_delete_nor.png new file mode 100644 index 0000000..9fd34a6 Binary files /dev/null and b/src/assets/btn_delete_nor.png differ diff --git a/src/assets/btn_pinglun_hover.png b/src/assets/btn_pinglun_hover.png new file mode 100644 index 0000000..626dba4 Binary files /dev/null and b/src/assets/btn_pinglun_hover.png differ diff --git a/src/assets/btn_pinglun_nor.png b/src/assets/btn_pinglun_nor.png new file mode 100644 index 0000000..fb7f6ab Binary files /dev/null and b/src/assets/btn_pinglun_nor.png differ diff --git a/src/assets/btn_shuaxin@2x.png b/src/assets/btn_shuaxin@2x.png new file mode 100644 index 0000000..ad4fe92 Binary files /dev/null and b/src/assets/btn_shuaxin@2x.png differ diff --git a/src/assets/btn_tuijian_nor.png b/src/assets/btn_tuijian_nor.png new file mode 100644 index 0000000..71dd382 Binary files /dev/null and b/src/assets/btn_tuijian_nor.png differ diff --git a/src/assets/btn_zan_nor@3x.png b/src/assets/btn_zan_nor@3x.png new file mode 100644 index 0000000..97d94cb Binary files /dev/null and b/src/assets/btn_zan_nor@3x.png differ diff --git a/src/assets/btn_zhiding_nor.png b/src/assets/btn_zhiding_nor.png new file mode 100644 index 0000000..43ba6b5 Binary files /dev/null and b/src/assets/btn_zhiding_nor.png differ diff --git a/src/assets/default/404@2x.png b/src/assets/default/404@2x.png new file mode 100644 index 0000000..a7cb0c9 Binary files /dev/null and b/src/assets/default/404@2x.png differ diff --git a/src/assets/default/500@2x.png b/src/assets/default/500@2x.png new file mode 100644 index 0000000..2039b47 Binary files /dev/null and b/src/assets/default/500@2x.png differ diff --git a/src/assets/default/duanwang@2x.png b/src/assets/default/duanwang@2x.png new file mode 100644 index 0000000..fcbc314 Binary files /dev/null and b/src/assets/default/duanwang@2x.png differ diff --git a/src/assets/default/noAuthority@2x.png b/src/assets/default/noAuthority@2x.png new file mode 100644 index 0000000..dc6206b Binary files /dev/null and b/src/assets/default/noAuthority@2x.png differ diff --git a/src/assets/default/wuwang@2x.png b/src/assets/default/wuwang@2x.png new file mode 100644 index 0000000..40f600f Binary files /dev/null and b/src/assets/default/wuwang@2x.png differ diff --git a/src/assets/default/zwnr@2x.png b/src/assets/default/zwnr@2x.png new file mode 100644 index 0000000..19777ec Binary files /dev/null and b/src/assets/default/zwnr@2x.png differ diff --git a/src/assets/goBack.png b/src/assets/goBack.png new file mode 100644 index 0000000..4c36741 Binary files /dev/null and b/src/assets/goBack.png differ diff --git a/src/assets/head@3x.png b/src/assets/head@3x.png new file mode 100644 index 0000000..35efe74 Binary files /dev/null and b/src/assets/head@3x.png differ diff --git a/src/assets/icon-fangda.svg b/src/assets/icon-fangda.svg new file mode 100644 index 0000000..2dbfd7c --- /dev/null +++ b/src/assets/icon-fangda.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icon-shangjia1.png b/src/assets/icon-shangjia1.png new file mode 100644 index 0000000..b8781b1 Binary files /dev/null and b/src/assets/icon-shangjia1.png differ diff --git a/src/assets/icon-shangjia2.png b/src/assets/icon-shangjia2.png new file mode 100644 index 0000000..9ddda05 Binary files /dev/null and b/src/assets/icon-shangjia2.png differ diff --git a/src/assets/icon-shangjia3.png b/src/assets/icon-shangjia3.png new file mode 100644 index 0000000..2235eb5 Binary files /dev/null and b/src/assets/icon-shangjia3.png differ diff --git a/src/assets/icon-shangjia4.png b/src/assets/icon-shangjia4.png new file mode 100644 index 0000000..c0aa792 Binary files /dev/null and b/src/assets/icon-shangjia4.png differ diff --git a/src/assets/icon-shangjia5.png b/src/assets/icon-shangjia5.png new file mode 100644 index 0000000..6f0da8b Binary files /dev/null and b/src/assets/icon-shangjia5.png differ diff --git a/src/assets/icon-shangjia6.png b/src/assets/icon-shangjia6.png new file mode 100644 index 0000000..810f9ae Binary files /dev/null and b/src/assets/icon-shangjia6.png differ diff --git a/src/assets/icon-ztsx-hover.svg b/src/assets/icon-ztsx-hover.svg new file mode 100644 index 0000000..3f94c48 --- /dev/null +++ b/src/assets/icon-ztsx-hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon-ztsx.svg b/src/assets/icon-ztsx.svg new file mode 100644 index 0000000..c5a4d00 --- /dev/null +++ b/src/assets/icon-ztsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon_beizhu@2x.png b/src/assets/icon_beizhu@2x.png new file mode 100644 index 0000000..a6b21f7 Binary files /dev/null and b/src/assets/icon_beizhu@2x.png differ diff --git a/src/assets/icon_beizhu_sel@2x.png b/src/assets/icon_beizhu_sel@2x.png new file mode 100644 index 0000000..cc42f99 Binary files /dev/null and b/src/assets/icon_beizhu_sel@2x.png differ diff --git a/src/assets/icon_dingdan.svg b/src/assets/icon_dingdan.svg new file mode 100644 index 0000000..dd46091 --- /dev/null +++ b/src/assets/icon_dingdan.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icon_fuwu.svg b/src/assets/icon_fuwu.svg new file mode 100644 index 0000000..cf82d61 --- /dev/null +++ b/src/assets/icon_fuwu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icon_kehu.svg b/src/assets/icon_kehu.svg new file mode 100644 index 0000000..3830b0f --- /dev/null +++ b/src/assets/icon_kehu.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icon_linjin@2x.png b/src/assets/icon_linjin@2x.png new file mode 100644 index 0000000..a852f6e Binary files /dev/null and b/src/assets/icon_linjin@2x.png differ diff --git a/src/assets/icon_menu_tongzhi@2x.png b/src/assets/icon_menu_tongzhi@2x.png new file mode 100644 index 0000000..b0899db Binary files /dev/null and b/src/assets/icon_menu_tongzhi@2x.png differ diff --git a/src/assets/icon_qiye.svg b/src/assets/icon_qiye.svg new file mode 100644 index 0000000..11e8280 --- /dev/null +++ b/src/assets/icon_qiye.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icon_quyu.svg b/src/assets/icon_quyu.svg new file mode 100644 index 0000000..f8dea10 --- /dev/null +++ b/src/assets/icon_quyu.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icon_renyuan.svg b/src/assets/icon_renyuan.svg new file mode 100644 index 0000000..b3fe3f1 --- /dev/null +++ b/src/assets/icon_renyuan.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icon_team_guanbi.png b/src/assets/icon_team_guanbi.png new file mode 100644 index 0000000..cc4897d Binary files /dev/null and b/src/assets/icon_team_guanbi.png differ diff --git a/src/assets/icon_team_guanbi2.png b/src/assets/icon_team_guanbi2.png new file mode 100644 index 0000000..59e99e9 Binary files /dev/null and b/src/assets/icon_team_guanbi2.png differ diff --git a/src/assets/icon_zhuyi@2x.png b/src/assets/icon_zhuyi@2x.png new file mode 100644 index 0000000..bce1afa Binary files /dev/null and b/src/assets/icon_zhuyi@2x.png differ diff --git a/src/assets/img_denglu-bg@2x.png b/src/assets/img_denglu-bg@2x.png new file mode 100644 index 0000000..a198bdf Binary files /dev/null and b/src/assets/img_denglu-bg@2x.png differ diff --git a/src/assets/logBlackTem.png b/src/assets/logBlackTem.png new file mode 100644 index 0000000..a051a2c Binary files /dev/null and b/src/assets/logBlackTem.png differ diff --git a/src/assets/logBlackTemFull.png b/src/assets/logBlackTemFull.png new file mode 100644 index 0000000..8a581e9 Binary files /dev/null and b/src/assets/logBlackTemFull.png differ diff --git a/src/assets/logo-full.svg b/src/assets/logo-full.svg new file mode 100644 index 0000000..b2e0391 --- /dev/null +++ b/src/assets/logo-full.svg @@ -0,0 +1,23 @@ + + 1.Base基础/3.Icon图标/logos/TDesign-logo2@2x + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..8bc7e23 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,19 @@ + + 编组 31@2x + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/logoBlackTem.svg b/src/assets/logoBlackTem.svg new file mode 100644 index 0000000..3c29159 --- /dev/null +++ b/src/assets/logoBlackTem.svg @@ -0,0 +1,12 @@ + + + logo2-fanbai@2x + + + + + + + + + \ No newline at end of file diff --git a/src/assets/noSecondMenu-menu-headPic.png b/src/assets/noSecondMenu-menu-headPic.png new file mode 100644 index 0000000..362a1b3 Binary files /dev/null and b/src/assets/noSecondMenu-menu-headPic.png differ diff --git a/src/assets/noSecondMenu-menu-hover.png b/src/assets/noSecondMenu-menu-hover.png new file mode 100644 index 0000000..1550a1d Binary files /dev/null and b/src/assets/noSecondMenu-menu-hover.png differ diff --git a/src/assets/pic-biaoyu.png b/src/assets/pic-biaoyu.png new file mode 100644 index 0000000..346d876 Binary files /dev/null and b/src/assets/pic-biaoyu.png differ diff --git a/src/assets/pic-biaoyu@2x.png b/src/assets/pic-biaoyu@2x.png new file mode 100644 index 0000000..d4604b5 Binary files /dev/null and b/src/assets/pic-biaoyu@2x.png differ diff --git a/src/assets/pic-touxiang@2x(1).png b/src/assets/pic-touxiang@2x(1).png new file mode 100644 index 0000000..42f57e4 Binary files /dev/null and b/src/assets/pic-touxiang@2x(1).png differ diff --git a/src/assets/pic-touxiang@2x.png b/src/assets/pic-touxiang@2x.png new file mode 100644 index 0000000..a4af747 Binary files /dev/null and b/src/assets/pic-touxiang@2x.png differ diff --git a/src/assets/test-img/Shape.svg b/src/assets/test-img/Shape.svg new file mode 100644 index 0000000..31ef7c6 --- /dev/null +++ b/src/assets/test-img/Shape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/Shapehover.svg b/src/assets/test-img/Shapehover.svg new file mode 100644 index 0000000..0b5244b --- /dev/null +++ b/src/assets/test-img/Shapehover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/assets-empty.svg b/src/assets/test-img/assets-empty.svg new file mode 100644 index 0000000..374d27d --- /dev/null +++ b/src/assets/test-img/assets-empty.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/test-img/assets-logo-full.svg b/src/assets/test-img/assets-logo-full.svg new file mode 100644 index 0000000..b2e0391 --- /dev/null +++ b/src/assets/test-img/assets-logo-full.svg @@ -0,0 +1,23 @@ + + 1.Base基础/3.Icon图标/logos/TDesign-logo2@2x + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-403.svg b/src/assets/test-img/assets-result-403.svg new file mode 100644 index 0000000..343a25e --- /dev/null +++ b/src/assets/test-img/assets-result-403.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-404.svg b/src/assets/test-img/assets-result-404.svg new file mode 100644 index 0000000..db1cb36 --- /dev/null +++ b/src/assets/test-img/assets-result-404.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-500.svg b/src/assets/test-img/assets-result-500.svg new file mode 100644 index 0000000..08784af --- /dev/null +++ b/src/assets/test-img/assets-result-500.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-ie.svg b/src/assets/test-img/assets-result-ie.svg new file mode 100644 index 0000000..ebaf5ba --- /dev/null +++ b/src/assets/test-img/assets-result-ie.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-maintenance.svg b/src/assets/test-img/assets-result-maintenance.svg new file mode 100644 index 0000000..388fd0b --- /dev/null +++ b/src/assets/test-img/assets-result-maintenance.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-result-wifi.svg b/src/assets/test-img/assets-result-wifi.svg new file mode 100644 index 0000000..eeee8b5 --- /dev/null +++ b/src/assets/test-img/assets-result-wifi.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/assets-slide-logout.svg b/src/assets/test-img/assets-slide-logout.svg new file mode 100644 index 0000000..8ee1558 --- /dev/null +++ b/src/assets/test-img/assets-slide-logout.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/test-img/assets-t-logo.svg b/src/assets/test-img/assets-t-logo.svg new file mode 100644 index 0000000..3f95cba --- /dev/null +++ b/src/assets/test-img/assets-t-logo.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/test-img/background-login.png b/src/assets/test-img/background-login.png new file mode 100644 index 0000000..ea3dda3 Binary files /dev/null and b/src/assets/test-img/background-login.png differ diff --git a/src/assets/test-img/bj2.png b/src/assets/test-img/bj2.png new file mode 100644 index 0000000..6362661 Binary files /dev/null and b/src/assets/test-img/bj2.png differ diff --git a/src/assets/test-img/btn_kaiguan.svg b/src/assets/test-img/btn_kaiguan.svg new file mode 100644 index 0000000..59dd1ed --- /dev/null +++ b/src/assets/test-img/btn_kaiguan.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/test-img/btn_quit.svg b/src/assets/test-img/btn_quit.svg new file mode 100644 index 0000000..69f8142 --- /dev/null +++ b/src/assets/test-img/btn_quit.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/test-img/cutter@2x.png b/src/assets/test-img/cutter@2x.png new file mode 100644 index 0000000..6d33d2e Binary files /dev/null and b/src/assets/test-img/cutter@2x.png differ diff --git a/src/assets/test-img/delete-active.png b/src/assets/test-img/delete-active.png new file mode 100644 index 0000000..fd7e1ca Binary files /dev/null and b/src/assets/test-img/delete-active.png differ diff --git a/src/assets/test-img/delete-hover.png b/src/assets/test-img/delete-hover.png new file mode 100644 index 0000000..119fd9c Binary files /dev/null and b/src/assets/test-img/delete-hover.png differ diff --git a/src/assets/test-img/delete.png b/src/assets/test-img/delete.png new file mode 100644 index 0000000..d98620f Binary files /dev/null and b/src/assets/test-img/delete.png differ diff --git a/src/assets/test-img/dh-bottom.png b/src/assets/test-img/dh-bottom.png new file mode 100644 index 0000000..1433e7d Binary files /dev/null and b/src/assets/test-img/dh-bottom.png differ diff --git a/src/assets/test-img/dh-top.png b/src/assets/test-img/dh-top.png new file mode 100644 index 0000000..738f8e7 Binary files /dev/null and b/src/assets/test-img/dh-top.png differ diff --git a/src/assets/test-img/icon_ddgl_nor.svg b/src/assets/test-img/icon_ddgl_nor.svg new file mode 100644 index 0000000..439be4f --- /dev/null +++ b/src/assets/test-img/icon_ddgl_nor.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/test-img/icon_fwry_nor.svg b/src/assets/test-img/icon_fwry_nor.svg new file mode 100644 index 0000000..c45abf4 --- /dev/null +++ b/src/assets/test-img/icon_fwry_nor.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/test-img/icon_jggl_nor.svg b/src/assets/test-img/icon_jggl_nor.svg new file mode 100644 index 0000000..4f1fc4f --- /dev/null +++ b/src/assets/test-img/icon_jggl_nor.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/test-img/icon_khgl_nor.svg b/src/assets/test-img/icon_khgl_nor.svg new file mode 100644 index 0000000..99a61cc --- /dev/null +++ b/src/assets/test-img/icon_khgl_nor.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/test-img/icon_menu_cheliang.svg b/src/assets/test-img/icon_menu_cheliang.svg new file mode 100644 index 0000000..1c8f6c4 --- /dev/null +++ b/src/assets/test-img/icon_menu_cheliang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/icon_menu_diaodu.svg b/src/assets/test-img/icon_menu_diaodu.svg new file mode 100644 index 0000000..65253fb --- /dev/null +++ b/src/assets/test-img/icon_menu_diaodu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/icon_menu_grzx.svg b/src/assets/test-img/icon_menu_grzx.svg new file mode 100644 index 0000000..8bd1b7d --- /dev/null +++ b/src/assets/test-img/icon_menu_grzx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/icon_menu_service.svg b/src/assets/test-img/icon_menu_service.svg new file mode 100644 index 0000000..ee09f09 --- /dev/null +++ b/src/assets/test-img/icon_menu_service.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/test-img/icon_menu_shuju.svg b/src/assets/test-img/icon_menu_shuju.svg new file mode 100644 index 0000000..cf0ccda --- /dev/null +++ b/src/assets/test-img/icon_menu_shuju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/icon_menu_zhuye.svg b/src/assets/test-img/icon_menu_zhuye.svg new file mode 100644 index 0000000..96c2ca6 --- /dev/null +++ b/src/assets/test-img/icon_menu_zhuye.svg @@ -0,0 +1,12 @@ + + + + icon_gzt_nor@2x + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/test-img/icon_menu_zj.svg b/src/assets/test-img/icon_menu_zj.svg new file mode 100644 index 0000000..d1653e3 --- /dev/null +++ b/src/assets/test-img/icon_menu_zj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/icon_more.png b/src/assets/test-img/icon_more.png new file mode 100644 index 0000000..729c239 Binary files /dev/null and b/src/assets/test-img/icon_more.png differ diff --git a/src/assets/test-img/icon_more@3x.png b/src/assets/test-img/icon_more@3x.png new file mode 100644 index 0000000..53b3ac1 Binary files /dev/null and b/src/assets/test-img/icon_more@3x.png differ diff --git a/src/assets/test-img/icon_pjgl_nor.svg b/src/assets/test-img/icon_pjgl_nor.svg new file mode 100644 index 0000000..4f1f4ef --- /dev/null +++ b/src/assets/test-img/icon_pjgl_nor.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/test-img/icon_xq.svg b/src/assets/test-img/icon_xq.svg new file mode 100644 index 0000000..6784c40 --- /dev/null +++ b/src/assets/test-img/icon_xq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/test-img/img_mobile@2x.png b/src/assets/test-img/img_mobile@2x.png new file mode 100644 index 0000000..8d5a090 Binary files /dev/null and b/src/assets/test-img/img_mobile@2x.png differ diff --git a/src/assets/test-img/jia.png b/src/assets/test-img/jia.png new file mode 100644 index 0000000..be7a64d Binary files /dev/null and b/src/assets/test-img/jia.png differ diff --git a/src/assets/test-img/jia2.png b/src/assets/test-img/jia2.png new file mode 100644 index 0000000..bae8192 Binary files /dev/null and b/src/assets/test-img/jia2.png differ diff --git a/src/assets/test-img/jian.png b/src/assets/test-img/jian.png new file mode 100644 index 0000000..ddbc57c Binary files /dev/null and b/src/assets/test-img/jian.png differ diff --git a/src/assets/test-img/jian2.png b/src/assets/test-img/jian2.png new file mode 100644 index 0000000..48882aa Binary files /dev/null and b/src/assets/test-img/jian2.png differ diff --git a/src/assets/test-img/logo.png b/src/assets/test-img/logo.png new file mode 100644 index 0000000..2c3d9f9 Binary files /dev/null and b/src/assets/test-img/logo.png differ diff --git a/src/assets/test-img/logofull.png b/src/assets/test-img/logofull.png new file mode 100644 index 0000000..fc114ae Binary files /dev/null and b/src/assets/test-img/logofull.png differ diff --git a/src/assets/test-img/modify-anxia.png b/src/assets/test-img/modify-anxia.png new file mode 100644 index 0000000..94a7043 Binary files /dev/null and b/src/assets/test-img/modify-anxia.png differ diff --git a/src/assets/test-img/modify-hover.png b/src/assets/test-img/modify-hover.png new file mode 100644 index 0000000..3071e89 Binary files /dev/null and b/src/assets/test-img/modify-hover.png differ diff --git a/src/assets/test-img/modify.png b/src/assets/test-img/modify.png new file mode 100644 index 0000000..8c7478b Binary files /dev/null and b/src/assets/test-img/modify.png differ diff --git a/src/assets/test-img/pic-touxiang.png b/src/assets/test-img/pic-touxiang.png new file mode 100644 index 0000000..9652479 Binary files /dev/null and b/src/assets/test-img/pic-touxiang.png differ diff --git a/src/assets/test-img/tx.png b/src/assets/test-img/tx.png new file mode 100644 index 0000000..c58cc7f Binary files /dev/null and b/src/assets/test-img/tx.png differ diff --git a/src/assets/touxiang.png b/src/assets/touxiang.png new file mode 100644 index 0000000..6c19564 Binary files /dev/null and b/src/assets/touxiang.png differ diff --git a/src/assets/upload.svg b/src/assets/upload.svg new file mode 100644 index 0000000..1c64056 --- /dev/null +++ b/src/assets/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/xiaohouzi@2x.png b/src/assets/xiaohouzi@2x.png new file mode 100644 index 0000000..9f565ad Binary files /dev/null and b/src/assets/xiaohouzi@2x.png differ diff --git a/src/components/Confirm/index.vue b/src/components/Confirm/index.vue new file mode 100644 index 0000000..9af0124 --- /dev/null +++ b/src/components/Confirm/index.vue @@ -0,0 +1,70 @@ + + + diff --git a/src/components/Delete/index.vue b/src/components/Delete/index.vue new file mode 100644 index 0000000..3ab4838 --- /dev/null +++ b/src/components/Delete/index.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/ImageMagnify/index.vue b/src/components/ImageMagnify/index.vue new file mode 100644 index 0000000..e9fd103 --- /dev/null +++ b/src/components/ImageMagnify/index.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/Message/ProdDisabled.vue b/src/components/Message/ProdDisabled.vue new file mode 100644 index 0000000..a2db9be --- /dev/null +++ b/src/components/Message/ProdDisabled.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/src/components/Message/Success.vue b/src/components/Message/Success.vue new file mode 100644 index 0000000..6a60097 --- /dev/null +++ b/src/components/Message/Success.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/src/components/editDialog/index.vue b/src/components/editDialog/index.vue new file mode 100644 index 0000000..8b4e244 --- /dev/null +++ b/src/components/editDialog/index.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/components/expBall/ExpBall.vue b/src/components/expBall/ExpBall.vue new file mode 100644 index 0000000..ec13808 --- /dev/null +++ b/src/components/expBall/ExpBall.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/components/noData/index.vue b/src/components/noData/index.vue new file mode 100644 index 0000000..bd3b95b --- /dev/null +++ b/src/components/noData/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/product-card/index.vue b/src/components/product-card/index.vue new file mode 100644 index 0000000..6e2efe2 --- /dev/null +++ b/src/components/product-card/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/components/result/index.vue b/src/components/result/index.vue new file mode 100644 index 0000000..3ed51fa --- /dev/null +++ b/src/components/result/index.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/components/switchBar/switchBar.vue b/src/components/switchBar/switchBar.vue new file mode 100644 index 0000000..01ed436 --- /dev/null +++ b/src/components/switchBar/switchBar.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/components/switchBar/switchBarindex.vue b/src/components/switchBar/switchBarindex.vue new file mode 100644 index 0000000..9ec9bd8 --- /dev/null +++ b/src/components/switchBar/switchBarindex.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/components/switchBar/switchBartop.vue b/src/components/switchBar/switchBartop.vue new file mode 100644 index 0000000..056cfc6 --- /dev/null +++ b/src/components/switchBar/switchBartop.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/switchBar/type.ts b/src/components/switchBar/type.ts new file mode 100644 index 0000000..85ade0d --- /dev/null +++ b/src/components/switchBar/type.ts @@ -0,0 +1,5 @@ +export default interface Type { + id: any + name: string + value?: any +} diff --git a/src/components/thumbnail/index.vue b/src/components/thumbnail/index.vue new file mode 100644 index 0000000..10f8ab6 --- /dev/null +++ b/src/components/thumbnail/index.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/trend/index.vue b/src/components/trend/index.vue new file mode 100644 index 0000000..e72d181 --- /dev/null +++ b/src/components/trend/index.vue @@ -0,0 +1,114 @@ + + + + diff --git a/src/config/configuration.ts b/src/config/configuration.ts new file mode 100644 index 0000000..9b30593 --- /dev/null +++ b/src/config/configuration.ts @@ -0,0 +1,4 @@ +export const urlPrefix = '/api' +export const evaluationBaseUrl = 'http://localhost:8083/evaluationadmin/' +export const evaluationBackUrl = 'http://localhost:8083/' +export const evaluationUrlPrefix = '/evaluationapi' diff --git a/src/config/global.ts b/src/config/global.ts new file mode 100644 index 0000000..8924af3 --- /dev/null +++ b/src/config/global.ts @@ -0,0 +1,2 @@ +export const prefix = 'yldj' +export const TOKEN_NAME = 'xzb' diff --git a/src/config/proxy.ts b/src/config/proxy.ts new file mode 100644 index 0000000..f49b0c0 --- /dev/null +++ b/src/config/proxy.ts @@ -0,0 +1,21 @@ +export default { + isRequestProxy: true, + development: { + // 开发环境接口请求 + host: 'http://192.168.101.1:11500', + // 开发环境 cdn 路径 + cdn: '' + }, + test: { + // 测试环境接口地址 + host: '', + // 测试环境 cdn 路径 + cdn: '' + }, + release: { + // 正式环境接口地址 + host: 'http://192.168.101.1:11500', + // 正式环境 cdn 路径 + cdn: '' + } +} diff --git a/src/config/style.ts b/src/config/style.ts new file mode 100644 index 0000000..72a4bcd --- /dev/null +++ b/src/config/style.ts @@ -0,0 +1,11 @@ +export default { + showApiModal: false, // 是否展示接口测试工具 + showSidebar: true, // 是否显示侧边栏 + isSidebarCompact: false, // 侧边栏是否展开(这里设置没有用,在SideNav组件中再onMounted中会自动将该值设置为false,也就是默认展开侧边栏) + showBreadcrumb: true, // 是否展示面包屑 + mode: 'light', // 主题模式 light black + brandTheme: 'default', // 主题色配置(mode1/mode2/mode3/mode4/mode5) + layout: 'side', // 整体布局 'side'左右;"top" 上左右; + style: 'normal', // 侧边栏菜单风格(noSecondMenu无二级导航菜单风格、normal正常风格) + isUseTabsRouter: false // 是否使用多标签页功能(tab标签方式记录) +} diff --git a/src/constants/index.ts b/src/constants/index.ts new file mode 100644 index 0000000..207d3a5 --- /dev/null +++ b/src/constants/index.ts @@ -0,0 +1,131 @@ +// 合同状态枚举 +export const CONTRACT_STATUS = { + FAIL: 0, + AUDIT_PENDING: 1, + EXEC_PENDING: 2, + EXECUTING: 3, + FINISH: 4 +} + +export const CONTRACT_STATUS_OPTIONS = [ + { value: CONTRACT_STATUS.FAIL, label: '审核失败' }, + { value: CONTRACT_STATUS.AUDIT_PENDING, label: '待审核' }, + { value: CONTRACT_STATUS.EXEC_PENDING, label: '待履行' }, + { value: CONTRACT_STATUS.EXECUTING, label: '审核成功' }, + { value: CONTRACT_STATUS.FINISH, label: '已完成' } +] + +// 合同类型枚举 +export const CONTRACT_TYPES = { + MAIN: 0, + SUB: 1, + SUPPLEMENT: 2 +} + +export const CONTRACT_TYPE_OPTIONS = [ + { value: CONTRACT_TYPES.MAIN, label: '主合同' }, + { value: CONTRACT_TYPES.SUB, label: '子合同' }, + { value: CONTRACT_TYPES.SUPPLEMENT, label: '补充合同' } +] + +// 合同收付类型枚举 +export const CONTRACT_PAYMENT_TYPES = { + PAYMENT: 0, + RECEIPT: 1 +} + +// 通知的优先级对应的TAG类型 +export const NOTIFICATION_TYPES = { + low: 'primary', + middle: 'warning', + high: 'danger' +} +// 状态 +export const STATUS = [ + { value: 0, label: '禁用' }, + { value: 1, label: '启用' } +] +// 服务项状态 +export const SERVICE_STATUS = [ + { value: 0, label: '草稿' }, + { value: 1, label: '禁用' }, + { value: 2, label: '启用' } +] +export const STATU = [ + { value: 0, label: '上架' }, + { value: 1, label: '下架' } +] +// 单位 +export const UNIT = [ + { value: 1, label: '小时' }, + { value: 2, label: '天' }, + { value: 3, label: '次' }, + { value: 4, label: '台' }, + { value: 5, label: '个' }, + { value: 6, label: '㎡' }, + { value: 7, label: '米' } +] +// 冻结时间 +export const FREEZE_TIME = [ + { value: 0, label: '3天' }, + { value: 1, label: '7天' }, + { value: 2, label: '30天' }, + { value: 3, label: '360天' }, + { value: 4, label: '永久' } +] +// 订单状态 +export const ORDER_STATUS = [ + { value: 0, label: '待支付' }, + { value: 100, label: '派单中' }, + { value: 200, label: '待服务' }, + { value: 300, label: '服务中' }, + // { value: 400, label: '待评价' }, + { value: 500, label: '已完成' }, + { value: 600, label: '已取消' }, + { value: 700, label: '已关闭' } +] +// 交易状态 +export const TRADE_STATUS = [ + { value: 2, label: '未支付' }, + { value: 4, label: '已支付' } +] +// 退款状态 +export const REFUND_STATUS = [ + { value: 1, label: '退款中' }, + { value: 2, label: '退款成功' }, + { value: 3, label: '退款失败' } +] +// 评分 +export const Score = [ + { value: 1, label: '差评(0-1.9分)' }, + { value: 2, label: '中评(2-3.9分)' }, + { value: 3, label: '好评(4-5分)' } +] +// 认证状态 +export const AUTH_STATUS = [ + { value: 0, label: '未认证' }, + { value: 1, label: '已认证' } +] +// 审核状态 +export const AUDIT_STATUS = [ + { value: 0, label: '待审核' }, + { value: 1, label: '已审核' } +] +// 驳回原因 +export const REJECT_REASON = [ + { value: 0, label: '公司信息不完整或不准确' }, + { value: 1, label: '未满足认证要求' }, + { value: 2, label: '风险审核未通过' } +] +// 优惠券类型 +export const COUPON_TYPE = [ + { value: 1, label: '满减券' }, + { value: 2, label: '折扣券' } +] +// 发放状态 +export const GRANT_STATUS = [ + { value: 2, label: '进行中' }, + { value: 3, label: '已失效' }, + { value: 1, label: '待生效' }, + { value: 4, label: '作废' } +] diff --git a/src/czriComponents/index.less b/src/czriComponents/index.less new file mode 100644 index 0000000..3446bfd --- /dev/null +++ b/src/czriComponents/index.less @@ -0,0 +1,460 @@ +// 穿梭框重置样式 +.t-transfer { + .t-transfer__operations { + margin: auto 12px; + gap:0; + min-width: 25px; + .t-button{ + margin-bottom: 16px; + } + } + + // 宽度 + .t-transfer__list { + width: 500px; + height: 300px; + } + + .t-transfer__list-source, + .t-transfer__list-target { + border: 1px solid var(--color-border); //边框线 + border-radius: 3px; //圆角 + } + + // 标题的宽度与高度 + .t-transfer__list-header { + width: calc(100% - var(--td-comp-margin-s) * 2); + } + + .t-transfer__list-header+ :not(.t-transfer__list--with-search) { + border-top: 1px solid var(--color-border); //内容上边框线 + } + + + //当前选中的背景底色 + .t-transfer__list-item { + border-radius: 2px; + height: 32px; + line-height: 32px; + + &:hover { + background: var(--color-bk9); + .t-checkbox__input{ + border: 1px solid var(--color-main); + } + } + + &.t-is-checked { + background: var(--color-bk9); + + .t-checkbox__label { + color: var(--color-main); + } + } + + .t-checkbox__label, + .t-checkbox__label span { + max-height: 24px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; + } + } + + // 向左向右箭头背景色 + .t-button--variant-outline { + + &:hover { + border: 1px solid var(--color-main); + background: var(--color-main); + color: var(--color-white); + } + + &.t-is-disabled { + background: #eee; + border-color: var(--color-border); + color: #ccc; + } + + } + + // 点击左右箭头没有松开鼠标的样式 + .t-button:not(.t-is-disabled):not(.t-button--ghost) { + --ripple-color: var(--color-main); + } +} + +// 自定义卡片列表 +.cradList { + .itemCon { + margin-top: 6px; + + .headTitle { + height: 54px; + line-height: 54px; + background: var(--color-aux3); + border: 1px solid #DBE4F2; + color: var(--color-bk2); + border-radius: 2px; + font-weight: 600; + padding: 0 18px 0 12px; + margin-bottom: 24px; + display: flex; + } + + .item { + li { + min-height: 65px; + max-height: 100px; + line-height: 20px; + padding: 12px 18px 12px 12px; + background: var(--color-white); + color: var(--color-bk3); + box-shadow: 0 2px 13px 0 rgba(0, 0, 0, 0.07); + border-radius: 2px; + margin-bottom: 24px; + position: relative; + align-items: center; + justify-content: center; + display: flex; + + .con { + width: 100%; + display: flex; + align-items: center; + + .textDefault { + margin: 0 9px; + } + + .upload-demo { + display: inline-block; + + .el-button--primary { + background: none; + border: 0 none; + color: var(--color-main); + padding: 0; + font-size: 14px; + font-weight: 400; + } + } + } + } + + .el-switch__label.is-active { + color: var(--color-font1); + } + } + + .head { + display: flex; + align-items: center; + + img { + width: 32px; + height: 32px; + border-radius: 4px; + vertical-align: middle; + + } + + .tdesign-demo-image-viewer__ui-image { + margin-right: 10px; + } + } + + .headTitle, + .item li .con { + + &>span, + &>div { + padding: 0 20px; + text-align: left; + + &.padl { + padding-left: 100px; + } + + &:nth-child(1) { + min-width: 68px; + + } + + &:nth-child(2) { + min-width: 200px; + width: 20%; + } + + &:nth-child(3) { + width: 320px; + } + + &:nth-child(4) { + min-width: 150px; + width: 25%; + // flex: 1; + } + + &:nth-child(5) { + min-width: 180px; + width: 25%; + // flex: 1; + } + + &:nth-child(6) { + min-width: 80px; + // flex: 1; + float: right; + padding-right: 9px; + padding-left: 0; + + span { + padding: 0 5px; + + &:first-child { + padding-left: 0; + } + } + } + } + } + } +} + +.sortIcon { + display: flex; + align-items: center; + + // justify-content: center; + span { + display: inline-block; + width: 21px; + height: 20px; + margin: 0 16px 0 0; + + &.up { + background: url(./assets/btn-up.png) no-repeat; + background-size: contain; + cursor: pointer; + + &:hover { + opacity: 0.8; + } + } + + &.upforbid { + background: url(./assets/btn-upforbid.png) no-repeat; + background-size: contain; + cursor: no-drop; + } + + &.down { + background: url(./assets/btn-down.png) no-repeat; + background-size: contain; + cursor: pointer; + + &:hover { + opacity: 0.8; + } + } + + &.downforbid { + background: url(./assets/btn-downforbid.png) no-repeat; + background-size: contain; + cursor: no-drop; + } + } +} + +.editIcon { + width: 16px; + height: 16px; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + background: url(./assets/editIcon.png) no-repeat; + background-size: contain; +} + +.t-dialog__ctx .t-dialog { + .t-dialog__body { + .t-form { + display: flex; + flex-wrap: wrap; + justify-content: center; + } + } + + .t-form:not(.t-form-inline) .t-form__item:last-of-type { + position: relative; + right: -155px; + } +} + +.dialogTable { + .t-dialog__ctx .t-dialog { + + .t-form:not(.t-form-inline) .t-form__item:last-of-type { + position: static; + } + } + .dialog-footer { + padding-right: 18px; + padding-top: 32px; + } +} +.sortBox{ + .dialog-footer{ + padding-right: 0; + padding-bottom: 0; + } +} +.t-table__async-loading{ + padding-top: 8px; +} +// 弹框样式 +.dialogBox { + .t-dialog { + position: absolute; + width: 764px; + max-height: 700px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + .t-form { + padding-bottom: 24px; + + .bt { + margin-left: 16px; + } + } + + .t-dialog__body { + padding-left: 32px; + padding-right: 32px; + padding-bottom: 0; + .t-form{ + display: block; + } + } + + .t-table { + min-width: auto; + height: 434px; + ::-webkit-scrollbar { + width: 4px; + } + + + + } + + .footTip { + margin: 0 -14px 0 -32px; + height: 5px; + background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 0%, rgba(99, 97, 96, 0.10) 100%); + } + + .footInfo { + text-align: center; + color: var(--color-bk4); + height: 50px; + line-height: 50px; + // line-height: 22px; + // padding: 15px 0 14px; + position: relative; + } + + } + + .headBox { + margin-bottom: 24px; + } + + &.dialogTable { + .t-dialog .t-dialog__body { + padding-right: 14px; + } + + .t-table__content { + padding-right: 14px; + } + } + .dialog-footer{ + padding-top: 32px; + } + .t-table__pagination{ + padding: 20px 11px 0 0; + } + .t-dialog__ctx .t-dialog__position.t-dialog--top{ + padding-top: 8vh; + } +} + +.scrollTable { + .t-dialog { + .t-table { + tr { + &:last-child { + &:hover { + background: none; + } + } + + &:last-child td { + border: 0 none; + + } + } + } + + + } + +} + + +// 动态加input +.addInput { + display: flex; + align-items: center; + margin-bottom: 10px; + + .t-input__wrap { + margin-right: 10px; + } + + .input-w { + width: 332px; + } + + .t-icon-minus-rectangle { + color: var(--color-error); + } + + .t-icon-add-rectangle { + color: var(--color-main); + } + + .t-icon { + font-size: 22px; + margin-left: 10px; + } +} + +.dialogHeight { + height: 433px; + // .t-table__content{ + // height: 400px; + // } +} + +.heighta { + height: 383px; + // .t-table__content{ + // height:350px; + // } +} diff --git a/src/hooks/event/useWindowSizeFn.ts b/src/hooks/event/useWindowSizeFn.ts new file mode 100644 index 0000000..034635a --- /dev/null +++ b/src/hooks/event/useWindowSizeFn.ts @@ -0,0 +1,38 @@ +import debounce from 'lodash/debounce' +import { onUnmounted, onMounted } from 'vue' + +interface WindowSizeOptions { + immediate?: boolean +} + +interface Fn { + (...arg: T[]): R +} + +export function useWindowSizeFn( + fn: Fn, + options?: WindowSizeOptions, + wait = 150 +) { + const handleSize: () => void = debounce(fn, wait) + + const start = () => { + if (options && options.immediate) { + fn() + } + window.addEventListener('resize', handleSize) + } + + const stop = () => { + window.removeEventListener('resize', handleSize) + } + + onMounted(() => { + start() + }) + + onUnmounted(() => { + stop() + }) + return [start, stop] +} diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 0000000..e922b7b --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,62 @@ +import { ref, Ref, onUnmounted, onMounted } from 'vue' +import * as echarts from 'echarts/core' + +/** + * eChart hook + * @param domId + * @param chart + */ +export const useChart = (domId: string): Ref => { + let chartContainer: HTMLCanvasElement + const selfChart = ref() + const updateContainer = () => { + // TODO resize 报错,响应式的问题,待处理 + selfChart.value.resize({ + width: chartContainer.clientWidth, + height: chartContainer.clientHeight + }) + } + + onMounted(() => { + if (!chartContainer) { + chartContainer = document.getElementById(domId) as HTMLCanvasElement + } + selfChart.value = echarts.init(chartContainer) + }) + + window.addEventListener('resize', updateContainer, false) + + onUnmounted(() => { + window.removeEventListener('resize', updateContainer) + }) + + return selfChart +} + +/** + * counter utils + * @param duration + * @returns + */ +export const useCounter = (duration = 60): [Ref, () => void] => { + let intervalTimer + onUnmounted(() => { + clearInterval(intervalTimer) + }) + const countDown = ref(0) + + return [ + countDown, + () => { + countDown.value = duration + intervalTimer = setInterval(() => { + if (countDown.value > 0) { + countDown.value -= 1 + } else { + clearInterval(intervalTimer) + countDown.value = 0 + } + }, 1000) + } + ] +} diff --git a/src/layouts/components/Breadcrumb.vue b/src/layouts/components/Breadcrumb.vue new file mode 100644 index 0000000..744584e --- /dev/null +++ b/src/layouts/components/Breadcrumb.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/layouts/components/Content.vue b/src/layouts/components/Content.vue new file mode 100644 index 0000000..6fe7437 --- /dev/null +++ b/src/layouts/components/Content.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/layouts/components/EaseRequest.vue b/src/layouts/components/EaseRequest.vue new file mode 100644 index 0000000..c210fe5 --- /dev/null +++ b/src/layouts/components/EaseRequest.vue @@ -0,0 +1,492 @@ + + + + + diff --git a/src/layouts/components/Footer.vue b/src/layouts/components/Footer.vue new file mode 100644 index 0000000..8ed8d83 --- /dev/null +++ b/src/layouts/components/Footer.vue @@ -0,0 +1,18 @@ + + + + + + diff --git a/src/layouts/components/LayoutContentSide.vue b/src/layouts/components/LayoutContentSide.vue new file mode 100644 index 0000000..325c1e8 --- /dev/null +++ b/src/layouts/components/LayoutContentSide.vue @@ -0,0 +1,192 @@ + + + + diff --git a/src/layouts/components/LayoutSideNav.vue b/src/layouts/components/LayoutSideNav.vue new file mode 100644 index 0000000..90923f4 --- /dev/null +++ b/src/layouts/components/LayoutSideNav.vue @@ -0,0 +1,26 @@ + + + + diff --git a/src/layouts/components/LogInfo.vue b/src/layouts/components/LogInfo.vue new file mode 100644 index 0000000..9232cac --- /dev/null +++ b/src/layouts/components/LogInfo.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/src/layouts/components/Notice.vue b/src/layouts/components/Notice.vue new file mode 100644 index 0000000..50a0343 --- /dev/null +++ b/src/layouts/components/Notice.vue @@ -0,0 +1,224 @@ + + + + + + diff --git a/src/layouts/components/Search.vue b/src/layouts/components/Search.vue new file mode 100644 index 0000000..f0a0927 --- /dev/null +++ b/src/layouts/components/Search.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/layouts/index.vue b/src/layouts/index.vue new file mode 100644 index 0000000..8cd1569 --- /dev/null +++ b/src/layouts/index.vue @@ -0,0 +1,93 @@ + + + + + + diff --git a/src/layouts/simpleComponents/MenuContent.vue b/src/layouts/simpleComponents/MenuContent.vue new file mode 100644 index 0000000..05abf1d --- /dev/null +++ b/src/layouts/simpleComponents/MenuContent.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/layouts/simpleComponents/SideNav.vue b/src/layouts/simpleComponents/SideNav.vue new file mode 100644 index 0000000..6073f1b --- /dev/null +++ b/src/layouts/simpleComponents/SideNav.vue @@ -0,0 +1,179 @@ + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..899b381 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,20 @@ +// 项目入口文件 +import { createApp } from 'vue' + +import TDesign from 'tdesign-vue-next' +import 'tdesign-vue-next/es/style/index.css' +import 'default-passive-events' + +import { store } from './store' +import router from './router' +import '@/style/index.less' +import './permission' // permission是路由权限控制 +import App from './App.vue' + +const app = createApp(App) + +app.use(TDesign) +app.use(store) +app.use(router) + +app.mount('#app') diff --git a/src/pages/coupon/couponList/addCoupon.vue b/src/pages/coupon/couponList/addCoupon.vue new file mode 100644 index 0000000..c3bfde7 --- /dev/null +++ b/src/pages/coupon/couponList/addCoupon.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/src/pages/coupon/couponList/components/SearchForm.vue b/src/pages/coupon/couponList/components/SearchForm.vue new file mode 100644 index 0000000..d6d5a53 --- /dev/null +++ b/src/pages/coupon/couponList/components/SearchForm.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/src/pages/coupon/couponList/components/TableList.vue b/src/pages/coupon/couponList/components/TableList.vue new file mode 100644 index 0000000..b479a43 --- /dev/null +++ b/src/pages/coupon/couponList/components/TableList.vue @@ -0,0 +1,232 @@ + + + + + + + + diff --git a/src/pages/coupon/couponList/components/assignDialog.vue b/src/pages/coupon/couponList/components/assignDialog.vue new file mode 100644 index 0000000..78e8ce6 --- /dev/null +++ b/src/pages/coupon/couponList/components/assignDialog.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/pages/coupon/couponList/constants.ts b/src/pages/coupon/couponList/constants.ts new file mode 100644 index 0000000..538601d --- /dev/null +++ b/src/pages/coupon/couponList/constants.ts @@ -0,0 +1,223 @@ +import dayjs from 'dayjs' +export const COLUMNS = [ + { + title: '活动编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '活动名称', width: 180, minWidth: '180px', colKey: 'name' }, + { + title: '优惠券类型', + minWidth: '180px', + colKey: 'type', + sortType: 'all', + cell: (h, { row }) => { + const statusList = { + 1: { + label: '满减' + }, + 2: { + label: '折扣' + } + } + return h('span', statusList[row.type].label) + } + }, + { + title: '满额限制(元)', + colKey: 'amountCondition', + width: 150, + minWidth: '150px', + cell: (h, { row }) => + h('span', row.amountCondition === 0 ? '无门槛' : row.amountCondition) + }, + { + title: '折扣金额(元)/比例', + colKey: 'discountRate', + width: 200, + minWidth: '288px', + cell: (h, { row }) => + h( + 'span', + row.type === 1 ? row.discountAmount + '元' : row.discountRate + '%' + ) + }, + { + title: '使用范围', + colKey: 'serveAddress', + width: 130, + minWidth: '130px', + cell: (h, { row }) => h('span', '全场通用') + }, + { + title: '适用对象', + colKey: 'serveAddress', + width: 130, + minWidth: '130px', + cell: (h) => h('span', '全部用户') + }, + { + title: '发放时间', + minWidth: '320px', + colKey: 'distributeStartTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + dayjs(row.distributeStartTime).format(' YYYY-MM-DD HH:mm') + + ' ~ ' + + dayjs(row.distributeEndTime).format(' YYYY-MM-DD HH:mm') + ) + }, + { + title: '使用期限(天)', + colKey: 'validityDays', + width: 150, + minWidth: '150px' + }, + { + title: '发放数量(张)', + colKey: 'totalNum', + width: 150, + minWidth: '150px', + cell: (h, { row }) => + h('span', row.totalNum === 0 ? '无限制' : row.totalNum) + }, + { + title: '每人限领(张)', + colKey: 'serveAddress', + width: 150, + minWidth: '150px', + cell: (h) => h('span', 1) + }, + { + title: '发放状态', + colKey: 'status', + width: 120, + minWidth: '120px', + // 添加筛选 + cell: (h, { row }) => { + const statusList = { + 2: { + label: '进行中' + }, + 3: { + label: '已失效' + }, + 1: { + label: '待生效' + }, + 4: { + label: '作废' + } + } + return h( + 'span', + { + class: `status-dot status-dot-${ + row.status === 3 || row.status === 4 ? 1 : row.status === 1 ? 0 : 2 + }` + }, + statusList[row.status].label + ) + } + }, + { + title: '创建时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.createTime + ? dayjs(row.createTime).format('YYYY-MM-DD HH:mm') + : '-' + ) + }, + { + align: 'left', + fixed: 'right', + width: 190, + minWidth: '190px', + colKey: 'op', + title: '操作' + } +] +export const PERSON_COLUMNS = [ + { + title: '用户手机号', + align: 'left', + width: 147, + minWidth: '147px', + colKey: 'userPhone', + cell: (h, { row }) => h('span', row.userPhone || '-') + }, + { + title: '领取时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.createTime + ? dayjs(row.createTime).format('YYYY-MM-DD HH:mm') + : '-' + ) + }, + { + title: '使用时间', + minWidth: '184px', + width: 184, + colKey: 'useTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.useTime + ? dayjs(row.useTime).format('YYYY-MM-DD HH:mm') + : '-' + ) + }, + { + title: '优惠券状态', + colKey: 'status', + minWidth: '104px', + cell: (h, { row }) => { + const statusList = { + 1: { + label: '待使用' + }, + 2: { + label: '已使用' + }, + 3: { + label: '已过期' + }, + 4: { + label: '作废' + } + } + return h( + 'span', + { + class: `status-dot status-dot-${ + row.status === 3 || row.status === 4 ? 1 : row.status === 1 ? 0 : 2 + }` + }, + statusList[row.status].label + ) + } + }, + { + title: '使用订单', + minWidth: '180px', + width: 180, + colKey: 'ordersId', + sortType: 'all', + cell: (h, { row }) => h('span', row.ordersId || '-') + } +] diff --git a/src/pages/coupon/couponList/index.vue b/src/pages/coupon/couponList/index.vue new file mode 100644 index 0000000..a27bc8b --- /dev/null +++ b/src/pages/coupon/couponList/index.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/src/pages/coupon/index.less b/src/pages/coupon/index.less new file mode 100644 index 0000000..162ac9a --- /dev/null +++ b/src/pages/coupon/index.less @@ -0,0 +1,293 @@ +.bgTable { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + + .formBox { + + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + + .t-col-2 { + display: flex; + } + + .baseList { + padding-top: 20px; + min-height: 674px; + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + + :deep(.t-table__body) { + tr { + + &:nth-last-child(3) &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px; + ; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + + .t-tree__line::before { + height: 37px; + } +} + +.citySelect { + height: 32px; + + :deep(.t-form__controls) { + background: #F74346; + float: right; + border-radius: 2px; + + .t-input:hover { + border-color: transparent; + } + + .t-input--focused { + box-shadow: none; + } + + .t-input.t-is-readonly { + width: 100px; + background: var(--color-main); + color: #fff; + + .t-input__inner { + color: #fff; + + &::placeholder { + color: #fff; + } + } + } + + .t-select .t-fake-arrow { + color: #fff; + } + } +} \ No newline at end of file diff --git a/src/pages/custom/index.less b/src/pages/custom/index.less new file mode 100644 index 0000000..f7b8038 --- /dev/null +++ b/src/pages/custom/index.less @@ -0,0 +1,259 @@ +.bgTable { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + + .formBox { + + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + + .t-col-2 { + display: flex; + } + + .baseList { + padding-top: 20px; + min-height: 674px; + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + + :deep(.t-table__body) { + tr { + &:nth-last-child(3) + &:nth-last-child(3) + &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + top: auto; + bottom: 63px; + ; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + + .t-tree__line::before { + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/custom/management/components/SearchForm.vue b/src/pages/custom/management/components/SearchForm.vue new file mode 100644 index 0000000..f046d36 --- /dev/null +++ b/src/pages/custom/management/components/SearchForm.vue @@ -0,0 +1,63 @@ + + + + + + + diff --git a/src/pages/custom/management/components/TableList.vue b/src/pages/custom/management/components/TableList.vue new file mode 100644 index 0000000..4e9194e --- /dev/null +++ b/src/pages/custom/management/components/TableList.vue @@ -0,0 +1,142 @@ + + + + + + + + diff --git a/src/pages/custom/management/constants.ts b/src/pages/custom/management/constants.ts new file mode 100644 index 0000000..7d663d7 --- /dev/null +++ b/src/pages/custom/management/constants.ts @@ -0,0 +1,58 @@ +import dayjs from 'dayjs' +// 服务人员信息列表 +export const COLUMNS = [ + { + title: '客户编号', + align: 'left', + width: 250, + minWidth: '250px', + colKey: 'id' + }, + { title: '客户姓名', width: 150, minWidth: '150px', colKey: 'nickname' }, + { + title: '手机号码', + minWidth: '200px', + sortType: 'all', + colKey: 'phone' + }, + { + title: '创建时间', + minWidth: '180px', + colKey: 'createTime', + sorter: true, + sortType: 'all', + cell: (h, { row }) => h('span',row.createTime ? dayjs(row.createTime).format('YYYY-MM-DD HH:mm') : '-') + }, + { + title: '状态', + colKey: 'status', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '正常' + }, + 1: { + label: '冻结' + } + } + const status = row.status === 0 ? '2' : 1 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.status].label + ) + } + }, + { + align: 'left', + fixed: 'right', + width: 70, + minWidth: '70px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/custom/management/index.vue b/src/pages/custom/management/index.vue new file mode 100644 index 0000000..ed998b5 --- /dev/null +++ b/src/pages/custom/management/index.vue @@ -0,0 +1,186 @@ + + + + diff --git a/src/pages/dashboard/base/components/MiddleChart.vue b/src/pages/dashboard/base/components/MiddleChart.vue new file mode 100644 index 0000000..f917aaf --- /dev/null +++ b/src/pages/dashboard/base/components/MiddleChart.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/pages/dashboard/base/components/OutputOverview.vue b/src/pages/dashboard/base/components/OutputOverview.vue new file mode 100644 index 0000000..a80fbf9 --- /dev/null +++ b/src/pages/dashboard/base/components/OutputOverview.vue @@ -0,0 +1,265 @@ + + + + + + + + diff --git a/src/pages/dashboard/base/components/TopPanel.vue b/src/pages/dashboard/base/components/TopPanel.vue new file mode 100644 index 0000000..16adb5a --- /dev/null +++ b/src/pages/dashboard/base/components/TopPanel.vue @@ -0,0 +1,228 @@ + + + + + + + + diff --git a/src/pages/dashboard/base/components/operate.vue b/src/pages/dashboard/base/components/operate.vue new file mode 100644 index 0000000..d61e3d8 --- /dev/null +++ b/src/pages/dashboard/base/components/operate.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/pages/dashboard/base/constants.ts b/src/pages/dashboard/base/constants.ts new file mode 100644 index 0000000..4f7cbc3 --- /dev/null +++ b/src/pages/dashboard/base/constants.ts @@ -0,0 +1,9 @@ +export interface DashboardPanel { + title: string + number?: string | number + leftType?: string + upTrend?: string + downTrend?: string + url?: string, + path?: string +} diff --git a/src/pages/dashboard/base/index.less b/src/pages/dashboard/base/index.less new file mode 100644 index 0000000..c9e2499 --- /dev/null +++ b/src/pages/dashboard/base/index.less @@ -0,0 +1,317 @@ +.headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } +} + +.formBox { + + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } +} + +.tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; +} + +.t-col-2 { + display: flex; +} + + +.operate { + margin-left: 21px; + margin-bottom: 15px; + font-family: PingFangSC-SNaNpxibold; + font-weight: 600; + font-size: 16px; + color: var(--color-bk1); + + span { + height: 22px; + font-family: PingFangSC-Regular; + font-weight: 400; + font-size: 12px; + color: #999999; + letter-spacing: 0; + line-height: 22px; + margin-left: 7px; + } +} + +.statistics { + background-color: #fff; + padding: 16px 21px 20px; + margin-bottom: 20px; + + .tips { + height: 40px; + background: #e8f6ff; + line-height: 40px; + padding-left: 20px; + display: flex; + align-items: center; + border-radius: 2px; + margin-bottom: 20px; + color: var(--color-bk1); + font-size: 14px; + + span { + background-image: url('../../../assets/icon_zhuyi@2x.png'); + display: inline-block; + background-size: 100% 100%; + width: 19px; + height: 19px; + margin-right: 10px; + } + } + + .export { + display: flex; + justify-content: space-between; + + .bt { + width: 78px; + } + } +} + +.home-wrapper { + :deep(.t-card__header-wrapper) { + font-family: PingFangSC-Regular; + font-weight: 400; + font-size: 14px; + color: var(--color-bk1); + } + + .division { + height: 24.5px; + width: 100%; + background-color: #fafafa; + display: inline-block; + // 独占一行 + vertical-align: top; + } + + .row-container:not(:last-child) { + margin-bottom: 16px; + } + + :deep(.t-card__body) { + padding-top: 0; + } + + :deep(a) { + cursor: pointer; + } + + :deep(a:active) { + color: #1c55cf; + } + + :deep(a:hover) { + color: rgba(0, 97, 253, 0.8); + } + + :deep(.t-range-input.t-is-disabled) { + background-color: transparent; + } + + :deep(.t-input.t-is-disabled) { + background-color: transparent; + } + + :deep(.t-date-range-picker) { + width: 270px; + } + + :deep(.t-input.t-is-disabled .t-input__inner) { + color: var(--color-bk3); + margin-left: 18px; + } + + .analysis { + margin-bottom: 20px; + display: flex; + width: 100%; + + .leftCard, + .rightCard { + padding: 18px 21px; + height: 166px; + background-color: #fff; + + .title { + margin-bottom: 25px; + font-family: PingFangSC-Regular; + font-weight: 400; + font-size: 14px; + color: var(--color-bk1); + display: flex; + align-items: center; + position: relative; + + .description { + display: flex; + margin-left: 4px; + + .beizhu { + background-image: url('@/assets/icon_beizhu@2x.png'); + background-size: 100% 100%; + width: 18px; + height: 18px; + display: inline-block; + } + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + width: 334px; + top: 30px; + right: -165px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 47.5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .beizhu { + background-image: url('@/assets/icon_beizhu_sel@2x.png'); + background-size: 100% 100%; + } + + .hover { + display: block; + } + } + } + } + + .cardBox { + display: flex; + + .card { + width: 33.333%; + position: relative; + + .body { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + .num { + font-family: PingFangSC-SNaNpxibold; + font-weight: 600; + font-size: 32px; + height: 39px; + line-height: 39px; + color: var(--color-bk1); + + span { + font-size: 14px; + } + } + + .title { + font-family: PingFangSC-Regular; + font-weight: 400; + font-size: 14px; + height: 22px; + line-height: 22px; + margin-bottom: 13px; + color: var(--color-bk4); + } + } + + .line { + width: 1px; + height: 40px; + background-color: #e0e0e0; + position: absolute; + top: 13px; + } + + &:first-child { + .line { + display: none; + } + } + } + } + } + + .leftCard { + // 宽为父元素宽减20px后的53.6% + width: calc((100% - 20px) * 0.546); + margin-right: 20px; + } + + .rightCard { + // 宽为父元素宽减20px后的 + width: calc((100% - 20px) * 0.454); + + .cardBox { + .card { + width: 50%; + + &:last-child { + .description { + .hover { + width: 246px; + right: -70px; + + &::after { + left: 66.5%; + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/pages/dashboard/base/index.ts b/src/pages/dashboard/base/index.ts new file mode 100644 index 0000000..1691f53 --- /dev/null +++ b/src/pages/dashboard/base/index.ts @@ -0,0 +1,530 @@ +import dayjs from 'dayjs' +// import { TChartColor } from '@/config/color' +import { getChartListColor } from '@/utils/color' +import { getRandomArray } from '@/utils/charts' +import { floor } from 'lodash' + +/** 柱状图数据源 */ +export function constructInitDataset({ + dateTime = [], + placeholderColor, + borderColor +}: { dateTime: Array } & any) { + const divideNum = 10 + const timeArray = [] + const outArray = [] + for (let i = 0; i < divideNum; i++) { + if (dateTime.length > 0) { + const dateAbsTime: number = + (new Date(dateTime[1]).getTime() - new Date(dateTime[0]).getTime()) / + divideNum + const enhandTime: number = + new Date(dateTime[0]).getTime() + dateAbsTime * i + timeArray.push(dayjs(enhandTime).format('YYYY-MM-DD')) + } else { + timeArray.push( + dayjs() + .subtract(divideNum - i, 'day') + .format('YYYY-MM-DD') + ) + } + outArray.push(getRandomArray().toString()) + } + const courses = [ + 'Java-基础课', + 'Java-进阶课', + 'Java-高手班', + 'Python-基础课', + 'Python-进阶课', + 'Python-高手班', + '大数据-基础课', + '大数据-进阶课', + '大数据-高手班', + '数据结构' + ] + + const dataset = { + color: getChartListColor(), + tooltip: { + trigger: 'item' + }, + xAxis: { + type: 'category', + data: courses, + axisLabel: { + color: '#999999', + show: true + }, + axisLine: { + lineStyle: { + width: 1, + color: '#ccc' + } + } + }, + yAxis: { + type: 'value', // 值轴 + axisLabel: { + color: '#999999' + }, + splitLine: { + lineStyle: { + type: 'dashed', + color: '#e5e5e5' + } + } + }, + grid: { + top: '15px', + left: '0', + right: 0, + bottom: '0', + containLabel: true + // 单位 + }, + legend: { + show: false, + icon: 'rect', + itemWidth: 12, + itemHeight: 4, + itemGap: 48, + textStyle: { + fontSize: 12 + }, + left: 'center', + bottom: '0', + orient: 'horizontal', + data: ['综合评分'] + }, + series: [ + { + name: '综合评分', + data: outArray, + type: 'bar', + color: '#0061fd', + barWidth: '40%', + barMaxWidth: '50px' + } + ] + } + + return dataset +} + +/** + * 线性图表数据源 + * + * @export + * @param {Array} [dateTime=[]] + * @returns {*} + */ +export function getLineChartDataSet({ + count = [], + countDate = [], + placeholderColor +}: { count?: Array; countDate?: Array } & any) { + let intervalNum = 0 + intervalNum = Math.ceil(countDate.length / 15) + // if (countDate.length <= 15) { + // intervalNum = 0 + // } else if (countDate.length <= 30 && countDate.length > 15) { + // intervalNum = 1 + // } else if (countDate.length > 30 && countDate.length <= 90) { + // intervalNum = 5 + // } + const dataSet = { + color: getChartListColor(), + tooltip: { + trigger: 'axis', + formatter: function (params) { + // params 是当前 tooltip 的内容 + // 你可以从 params 中提取数据并自定义 tooltip 显示的内容 + var content = + '
' + + '
' + + '' + + '日期:' + + '' + + '' + + params[0].name + + '' + + '
' + + '
' + + '' + + '订单总量:' + + '' + + '' + + params[0].value + + '笔' + + '' + + '
' + + '
' + return content + } + }, + grid: { + left: '0', + right: '20px', + top: '15px', + bottom: '0', + containLabel: true + }, + legend: { + show: false, + icon: 'rect', + itemWidth: 12, + itemHeight: 4, + itemGap: 48, + left: 'center', + bottom: '0', + orient: 'horizontal', + textStyle: { + fontSize: 12 + } + }, + xAxis: { + data: countDate, + boundaryGap: false, // 坐标轴两边留白 + axisLabel: { + color: '#999999', + interval: intervalNum + }, + axisLine: { + lineStyle: { + width: 1, + color: '#ccc' + } + }, + splitLine: { + show: false // 禁用 x 轴的分割线 + } + }, + yAxis: { + type: 'value', + axisLabel: { + color: '#999999' + }, + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + color: '#e5e5e5' + } + }, + axisLine: { + lineStyle: { + width: 1 + } + } + }, + series: [ + { + name: '订单数', + data: count, + type: 'line', + color: '#F74346', + symbol: 'circle', + symbolSize: 8, // 设置拐点的大小 + areaStyle: { + normal: { + color: { + type: 'linear', + x: 0, // 渐变色起始点 x 坐标 + y: 0, // 渐变色起始点 y 坐标 + x2: 0, // 渐变色结束点 x 坐标 + y2: 1, // 渐变色结束点 y 坐标 + colorStops: [ + { offset: 0, color: 'rgba(247, 67, 70, 0.6)' }, // 渐变色起始颜色和透明度 + { offset: 1, color: 'rgba(247, 119, 112, 0.0)' } // 渐变色结束颜色和透明度 + ] + } + } + }, + emphasis: { + // hover 状态下的配置 + symbol: 'emptyCircle', // 设置拐点为空心圆球 + symbolSize: 9, // 设置空心圆球的大小 + itemStyle: { + borderWidth: 2, // 设置空心圆球的边框宽度,非零值表示空心 + borderColor: '#F74346', // 设置空心圆球的边框颜色 + color: '#FFF' // 设置空心圆球的填充颜色 + } + } + } + ] + } + return dataSet +} +// 双折线图 +export function getDoubleLineChartDataSet({ + count = [], + count2 = [], + countDate = [], + placeholderColor +}: { + count?: Array + count2?: Array + countDate?: Array +} & any) { + let intervalNum = 0 + if (countDate.length <= 15) { + intervalNum = 0 + } else if (countDate.length <= 30 && countDate.length > 15) { + intervalNum = 1 + } else if (countDate.length > 30 && countDate.length <= 90) { + intervalNum = 5 + } + count = [1220, 1332, 1031, 1344, 905, 230, 210, 1201, 1323, 1301, 344, 590] + count2 = [820, 932, 901, 934, 1290, 1330, 1320, 1230, 1230, 1290, 1330, 1320] + countDate = [ + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + '10月', + '11月', + '12月' + ] + const dataSet = { + color: getChartListColor(), + tooltip: { + trigger: 'axis', + formatter: function (params) { + var data1 = + '
' + + '' + + params[0].seriesName + + params[0].axisValue + + '平均支付笔数:' + + '' + + '' + + params[0].value + + '笔' + + '' + + '
' + var data2 = '' + if (params.length == 2) { + data2 = + '
' + + '' + + params[1].seriesName + + params[1].axisValue + + '平均支付笔数:' + + '' + + '' + + params[1].value + + '笔' + '' + '
' + } else { + data2 = '' + } + + // params 是当前 tooltip 的内容 + // 你可以从 params 中提取数据并自定义 tooltip 显示的内容 + var content = + '
' + + data1 + data2 + + '
' + return content + } + }, + grid: { + left: '0', + right: '20px', + top: '15px', + bottom: '40px', + containLabel: true + }, + legend: { + icon: 'rect', + itemWidth: 12, + itemHeight: 4, + itemGap: 48, + left: 'center', + bottom: '0', + orient: 'horizontal', + textStyle: { + fontSize: 12 + } + }, + xAxis: { + data: countDate, + boundaryGap: false, // 坐标轴两边留白 + axisLabel: { + color: '#999999', + interval: intervalNum + }, + axisLine: { + lineStyle: { + width: 1, + color: '#ccc' + } + }, + splitLine: { + show: false // 禁用 x 轴的分割线 + } + }, + yAxis: { + type: 'value', + axisLabel: { + color: '#999999' + }, + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + color: '#e5e5e5' + } + }, + axisLine: { + lineStyle: { + width: 1 + } + } + }, + series: [ + { + name: '2022年', + data: count, + type: 'line', + color: '#F74346', + symbol: 'circle', + symbolSize: 6 // 设置拐点的大小 + }, + { + name: '2023年', + data: count2, + type: 'line', + color: '#0398FF', + symbol: 'circle', + symbolSize: 6 // 设置拐点的大小 + } + ] + } + return dataSet +} +// 漏斗图数据 +export function getFunnelDataSet({ + count = [], + count2 = [], + countDate = [], + placeholderColor +}: { + count?: Array + count2?: Array + countDate?: Array +} & any) { + const dataSet = { + tooltip: { + trigger: 'item', + formatter: '{b} : {c}' + }, + series: [ + { + name: '漏斗图', + type: 'funnel', + left: '10%', + top: 20, + bottom: 10, + width: '80%', // 漏斗图的宽度 + minSize: '30%', // 设置最小值 + maxSize: '90%', // 设置最大值 + sort: 'descending', + funnelAlign: 'center', // 将漏斗底部形状设置为平坦 + label: { + show: true, // 显示标签 + position: 'inside', // 标签位置,可以设置为 'inside'、'top'、'bottom' 等 + fontSize: 12, // 标签字体大小 + color: '#fff', // 标签文字颜色 + formatter: function (params) { + // 自定义标签内容为 name + value + return params.name + ' ' + params.value + } + }, + data: [ + { + value: count[0].value, + name: count[0].name, + itemStyle: { color: '#F74346' } + }, + { + value: count[1].value, + name: count[1].name, + itemStyle: { color: '#FFAB2D' } + }, + { + value: count[2].value, + name: count[2].name, + itemStyle: { color: '#0398FF' } + } + ], + z: 100 + }, + { + name: 'Actual', + type: 'funnel', + left: '10%', + top: 20, + width: '80%', + minSize: '30%', + maxSize: '90%', + bottom: 10, + label: { + position: 'right', // 标签位置 + fontSize: 12, // 标签字体大小 + color: 'black', // 标签文字颜色 + formatter: function (params) { + // 自定义标签内容为 name + value + const ratio = + ((params.value / count[0].value) * 100).toFixed(0) + '%' + // 自定义标签内容为 name + 比重 + return params.name + ' ' + ratio + } + }, + tooltip: { + // 自定义tooltip内容 + formatter: function (params) { + const ratio = + ((params.value / count[0].value) * 100).toFixed(0) + '%' + return params.name + ' ' + ratio // 自定义tooltip内容为 name + 比重 + } + }, + labelLine: { + length: 30, // 设置标签线的长度 + lineStyle: { + color: 'black', // 设置标签线的颜色 + width: 1, // 设置标签线的宽度 + type: 'solid' // 设置标签线的类型为实线 + } + }, + itemStyle: { + opacity: 1, + borderColor: 'transparent' + }, + data: [ + { + value: count[0].value, + name: '', + itemStyle: { color: '#F74346' }, + label: { show: false } + }, + { + value: count[1].value, + name: '下单转换率', + itemStyle: { color: '#FFAB2D' } + }, + { + value: count[2].value, + name: '付款转换率', + itemStyle: { color: '#0398FF' } + } + ] + } + ] + } + return dataSet +} diff --git a/src/pages/dashboard/base/index.vue b/src/pages/dashboard/base/index.vue new file mode 100644 index 0000000..2726eba --- /dev/null +++ b/src/pages/dashboard/base/index.vue @@ -0,0 +1,203 @@ + + + + + + diff --git a/src/pages/dashboard/base/type.ts b/src/pages/dashboard/base/type.ts new file mode 100644 index 0000000..2ec3067 --- /dev/null +++ b/src/pages/dashboard/base/type.ts @@ -0,0 +1,135 @@ +export interface loadDataType { + id: string + evaluatorInfo: { + avatar: string + nickName: string + } + isTop: number + content: string + createTime: string + statistics?: { + replyNumber: number + likeNumber: number + } + replyArray: Array<{ + replierInfo: { + avatar: string + nickName: string + } + targetReplierInfo: { + nickName: string + } + parentId: string | number + content: string + createTime: string + replierId: number + id: string + }> +} +// 定义一个对象的类型,第一层是对象,第二层是数组,第三层是对象,第一层的对象名字不确定可以是任意的字符串,第二层没有名字 +export interface MoreReplayDataType { + [key: string]: Array<{ + avatar: any + nickName: any + id: string + createTime: string + content: string + evaluationId: string + hotScore: string + ownerId: string + parentId: string | number + pictureArray: Array<{}> + replierId: string + updateTime: string + replierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + targetReplierId: string + targetReplierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + }> +} +// 定义详情数据的类型 +export interface DetailDataType { + appendArray: Array<{}> // 追加评价 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + scoreArray: Array<{ + itemId: string + score: number + itemName: string + }> // 评价评分 + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreLevel: number // 评价评分 + statistics: { + replyNumber: number + likeNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 +} +// 分页 +export interface paginationType { + pageSizeOptions?: Array + defaultPageSize?: number + total?: number + defaultCurrent?: number // 默认当前页 + infoType?: number + targetType?: any +} +export interface dataType { + [x: string]: any + [key: number]: { + appendArray: Array<{}> // 追加评价 + scoreArray: Array<{ + itemId?: string + score: number + itemName: string + }> // 评价评分 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreLevel: number // 评价评分 + statistics: { + likeNumber: number + replyNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 + }[] +} diff --git a/src/pages/default/404.vue b/src/pages/default/404.vue new file mode 100644 index 0000000..4f1b166 --- /dev/null +++ b/src/pages/default/404.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/pages/default/forbidden.vue b/src/pages/default/forbidden.vue new file mode 100644 index 0000000..2a3d724 --- /dev/null +++ b/src/pages/default/forbidden.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/pages/default/netWorkAnomaly.vue b/src/pages/default/netWorkAnomaly.vue new file mode 100644 index 0000000..591a67a --- /dev/null +++ b/src/pages/default/netWorkAnomaly.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/pages/default/netWorkDisconnection.vue b/src/pages/default/netWorkDisconnection.vue new file mode 100644 index 0000000..d83a9b6 --- /dev/null +++ b/src/pages/default/netWorkDisconnection.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/pages/default/serviceError.vue b/src/pages/default/serviceError.vue new file mode 100644 index 0000000..e23526f --- /dev/null +++ b/src/pages/default/serviceError.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/pages/institution/authentication/components/ApplyDialog.vue b/src/pages/institution/authentication/components/ApplyDialog.vue new file mode 100644 index 0000000..887c935 --- /dev/null +++ b/src/pages/institution/authentication/components/ApplyDialog.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/pages/institution/authentication/components/DialogForm.vue b/src/pages/institution/authentication/components/DialogForm.vue new file mode 100644 index 0000000..b922394 --- /dev/null +++ b/src/pages/institution/authentication/components/DialogForm.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/pages/institution/authentication/components/SearchForm.vue b/src/pages/institution/authentication/components/SearchForm.vue new file mode 100644 index 0000000..3e06464 --- /dev/null +++ b/src/pages/institution/authentication/components/SearchForm.vue @@ -0,0 +1,100 @@ + + + + + + diff --git a/src/pages/institution/authentication/components/TableList.vue b/src/pages/institution/authentication/components/TableList.vue new file mode 100644 index 0000000..dab276f --- /dev/null +++ b/src/pages/institution/authentication/components/TableList.vue @@ -0,0 +1,293 @@ + + + + + + diff --git a/src/pages/institution/authentication/constants.ts b/src/pages/institution/authentication/constants.ts new file mode 100644 index 0000000..beb1236 --- /dev/null +++ b/src/pages/institution/authentication/constants.ts @@ -0,0 +1,208 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +// 服务人员信息列表 +export const COLUMNS = [ + { + title: '企业名称', + align: 'left', + width: 150, + minWidth: '150px', + colKey: 'name' + }, + { + title: '统一社会信用代码', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'idNumber' + }, + { title: '法定代表人姓名', width: 150, minWidth: '150px', colKey: 'legalPersonName' }, + { + title: '身份证号', + width: 250, + minWidth: '170px', + sortType: 'all', + colKey: 'legalPersonIdCardNo' + }, + { + title: '营业执照', + width: 150, + minWidth: '150px', + colKey: 'businessLicense' + }, + { + title: '审核状态', + colKey: 'auditStatus', + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待审核' + }, + 1: { + label: '已审核' + } + } + const status = row.auditStatus === 1 ? 2 : 0 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.auditStatus].label + ) + } + }, + { + title: '认证状态', + colKey: 'certificationStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 1: { + label: '待认证' + }, + 2: { + label: '认证成功' + }, + 3: { + label: '认证失败' + } + } + // const status = row.saleStatus === 2 ? '1' : 0 + return h( + 'span', + { + class: `status-dot status-dot-${row.certificationStatus}` + }, + statusList[row.certificationStatus].label + ) + } + }, + { + title: '驳回原因', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'rejectReason', + cell: (h, { row }) => h('span', row.rejectReason ? row.rejectReason : '-') + }, + { + title: '申请时间', + width: 180, + minWidth: '180px', + colKey: 'createTime', + sorter: true, + sortType: 'all', + cell: (h, { row }) => + h('span', formatDateTimeToDateTimeString(new Date(row.createTime))) + }, + { + title: '审核人', + align: 'left', + width: 150, + minWidth: '150px', + colKey: 'auditorName', + cell: (h, { row }) => h('span', row.auditorName ? row.auditorName : '-') + }, + { + title: '审核时间', + width: 180, + minWidth: '180px', + colKey: 'auditTime', + sorter: true, + sortType: 'all', + cell: (h, { row }) => + h('span', row.auditTime ? formatDateTimeToDateTimeString(new Date(row.auditTime)) : '-') + }, + { + align: 'left', + fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'op', + title: '操作' + } +] +// 申请记录 +export const Apply_DATA = [ + { + title: '序号', + align: 'left', + width: 68, + minWidth: '68px', + colKey: 'Num' + }, + { + title: '认证状态', + colKey: 'verifyStatus', + width: 118, + minWidth: '118px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '-', + value: 0 + }, + { + label: '认证通过', + value: 1 + }, + { + label: '认证失败', + value: 2 + } + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '-' + }, + 1: { + label: '认证通过' + }, + 2: { + label: '认证失败' + }, + 3: { + label: '未认证' + } + } + // const status = row.saleStatus === 2 ? '1' : 0 + return h( + 'span', + { + class: `status-dot status-dot-${row.verifyStatus}` + }, + statusList[row.verifyStatus].label + ) + } + }, + { + title: '驳回原因', + width: 184, + minWidth: '184px', + colKey: 'nam', + cell: (h, { row }) => h('span', row.nam ? row.nam : '-') + }, + { + title: '申请时间', + minWidth: '155px', + colKey: 'updateTime', + sortType: 'all', + cell: (h, { row }) => + h('span', formatDateTimeToDateTimeString(new Date(row.updateTime))) + }, + { + title: '审核时间', + minWidth: '155px', + colKey: 'auditTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.auditTime ? formatDateTimeToDateTimeString(new Date(row.auditTime)) : '-') + } +] diff --git a/src/pages/institution/authentication/index.vue b/src/pages/institution/authentication/index.vue new file mode 100644 index 0000000..ac3ce96 --- /dev/null +++ b/src/pages/institution/authentication/index.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/pages/institution/index.less b/src/pages/institution/index.less new file mode 100644 index 0000000..9dc74b4 --- /dev/null +++ b/src/pages/institution/index.less @@ -0,0 +1,250 @@ +.bgTable { + min-width: 1107px; + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + .formBox { + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + .t-col-2 { + display: flex; + } + .baseList { + padding-top: 20px; + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + :deep(.t-table__body) { + tr { + + &:nth-last-child(3) + &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px;; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + .t-tree__line::before{ + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/institution/information/components/DialogForm.vue b/src/pages/institution/information/components/DialogForm.vue new file mode 100644 index 0000000..ae9ee79 --- /dev/null +++ b/src/pages/institution/information/components/DialogForm.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/pages/institution/information/components/SearchForm.vue b/src/pages/institution/information/components/SearchForm.vue new file mode 100644 index 0000000..7c1ebf5 --- /dev/null +++ b/src/pages/institution/information/components/SearchForm.vue @@ -0,0 +1,100 @@ + + + + + + + diff --git a/src/pages/institution/information/components/TableList.vue b/src/pages/institution/information/components/TableList.vue new file mode 100644 index 0000000..1e104f6 --- /dev/null +++ b/src/pages/institution/information/components/TableList.vue @@ -0,0 +1,309 @@ + + + + + + diff --git a/src/pages/institution/information/constants.ts b/src/pages/institution/information/constants.ts new file mode 100644 index 0000000..2b0c55a --- /dev/null +++ b/src/pages/institution/information/constants.ts @@ -0,0 +1,203 @@ +import {formatDateTimeToDateTimeString } from '@/utils/date' +// 服务人员信息列表 +export const COLUMNS = [ + { + title: '企业名称', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'name' + }, + { + title: '登录账号', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'phone' + }, + { + title: '统一社会信用代码', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'idNumber' + }, + // { title: '服务分类',width:250, minWidth: '150px', colKey: 'name' }, + { + title: '服务城市', + width:250, + minWidth: '170px', + sortType: 'all', + colKey: 'cityName' + }, + { + title: '接单状态', + colKey: 'canPickUp', + minWidth: '120px', + // 添加筛选 + cell: (h, { row }) => { + const statusList = { + 0: { + label: '休息中' + }, + 1: { + label: '接单中' + }, + '-1': { + label: '未设置' + }, + } + // const status = row.canPickUp === -1 ? 2 : row.canPickUp + return h( + 'span', + { + class: `status-dot status-dot-${row.canPickUp + 1}` + }, + statusList[row.canPickUp].label + ) + } + }, + { + title: '账号状态', + colKey: 'status', + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '正常', + value: 0 + }, + { + label: '冻结', + value: 1 + }, + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '正常' + }, + 1: { + label: '冻结' + }, + } + const status = row.status === 0 ? '2' : 1 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.status].label + ) + } + }, + { + title: '认证时间', + width: 250, + minWidth: '180px', + colKey: 'certificationTime', + cell: (h, { row }) => h('span',row.certificationTime ? formatDateTimeToDateTimeString(new Date(row.certificationTime)) : '-') + }, + { + align: 'left', + fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'op', + title: '操作' + } +] +// 服务数据 +export const SERVE_DATA = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { title: '评价评分(分)', width: 150, minWidth: '150px', colKey: 'score' }, + { + title: '实付金额(元)', + minWidth: '288px', + sortType: 'all', + colKey: 'ordersAmount' + }, + { title: '服务人员', width: 150, minWidth: '150px', colKey: 'institutionStaffName' }, + { + title: '服务完成时间', + minWidth: '180px', + colKey: 'realServeEndTime', + sortType: 'all', + cell: (h, { row }) => { + if(row.realServeEndTime){ + return h('span',formatDateTimeToDateTimeString(new Date(row.realServeEndTime))) + }else{ + return h('span','--') + } + } + }, + { + title: '服务前照片', + minWidth: '180px', + colKey: 'serveBeforeImgs', + sortType: 'all' + }, + { + title: '服务后照片', + minWidth: '180px', + colKey: 'serveAfterImgs', + sortType: 'all' + }, + { + align: 'left', + // fixed: 'right', + width: 100, + minWidth: '100px', + colKey: 'op2', + title: '操作' + } +] +// 服务人员信息 +export const SERVE_COLUMNS = [ + { title: '服务人员姓名', width: 150, minWidth: '150px', colKey: 'name' }, + { + title: '服务人员手机', + minWidth: '170px', + sortType: 'all', + colKey: 'phone' + }, + { + title: '身份证号', + minWidth: '185px', + colKey: 'idCardNo', + }, + { + title: '证明资料', + minWidth: '180px', + colKey: 'certificationImgs', + }, + { + title: '创建时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => { + if(row.createTime){ + return h('span',formatDateTimeToDateTimeString(new Date(row.createTime))) + }else{ + return h('span','--') + } + } + }, +] + + + + + diff --git a/src/pages/institution/information/index.vue b/src/pages/institution/information/index.vue new file mode 100644 index 0000000..254aed3 --- /dev/null +++ b/src/pages/institution/information/index.vue @@ -0,0 +1,213 @@ + + + + diff --git a/src/pages/institution/information/informationDetail.vue b/src/pages/institution/information/informationDetail.vue new file mode 100644 index 0000000..3f970a5 --- /dev/null +++ b/src/pages/institution/information/informationDetail.vue @@ -0,0 +1,598 @@ + + + + + + diff --git a/src/pages/login/components/Login.vue b/src/pages/login/components/Login.vue new file mode 100644 index 0000000..25097ef --- /dev/null +++ b/src/pages/login/components/Login.vue @@ -0,0 +1,126 @@ + + + + + + diff --git a/src/pages/login/components/Register.vue b/src/pages/login/components/Register.vue new file mode 100644 index 0000000..c15602f --- /dev/null +++ b/src/pages/login/components/Register.vue @@ -0,0 +1,151 @@ + + + + + + diff --git a/src/pages/login/index.less b/src/pages/login/index.less new file mode 100644 index 0000000..93afd3a --- /dev/null +++ b/src/pages/login/index.less @@ -0,0 +1,239 @@ +.login-wrapper { + background-image: url('@/assets/test-img/background-login.png'); + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + background-size: cover; + background-position: 100%; + position: relative; + .loginVideo{ + position: absolute; + display: inline-block; + width: 100%; + height: 100%; + object-fit: cover; + } +} + +.login-container { + background: rgba(255,255,255,0.86); + backdrop-filter: blur(10px); + border-radius: 44px; + padding: 37px 50px 48px; + box-sizing: border-box; + position: absolute; + top: 22%; + left: 50%; + transform: translateX(-50%); + min-height: 500px; + line-height: 22px; + // 注册账户文字按钮 + .sub-title{ + // 文字右对齐 + text-align: right; + font-size: 14px; + } +} + +.title-container { + margin-bottom: 43.6px; + .title { + font-size: 36px; + line-height: 44px; + color: var(--td-text-color-primary); + margin-top: 4px; + text-align: center; + &.margin-no { + margin-top: 0; + } + } + + .sub-title { + margin-top: 16px; + .tip { + display: inline-block; + margin-right: 8px; + font-size: 14px; + + &:first-child { + color: var(--td-text-color-secondary); + } + + &:last-child { + color: var(--td-text-color-primary); + cursor: pointer; + } + } + } +} + +.item-container { + width: 368px; + margin-top: 34px; + // 按钮内文字颜色 + :deep(.t-button .t-button__text) { + color: var(--color-bk3); + } + // 输入框文字颜色 + :deep(.t-input__inner){ + &::placeholder{ + color: var(--color-bk6); + } + } + &.login-qrcode { + .tip-container { + width: 192px; + margin-bottom: 16px; + font-size: 14px; + display: flex; + justify-content: space-between; + + .tip { + color: var(--td-text-color-primary); + } + + .refresh { + display: flex; + align-items: center; + color: var(--td-brand-color); + + .t-icon { + font-size: 14px; + margin-left: 4px; + } + + &:hover { + cursor: pointer; + } + } + } + .bottom-container { + margin-top: 32px; + } + } + + &.login-phone { + .bottom-container { + margin-top: 66px; + } + } + + .check-container { + display: flex; + align-items: center; + + &.remember-pwd { + margin-bottom: 24px; + justify-content: space-between; + } + + :deep(.t-checkbox__label) { + color: var(--td-text-color-secondary); + } + + span { + + &:hover { + cursor: pointer; + } + } + } + + .verification-code { + display: flex; + align-items: center; + + :deep(.t-form__controls) { + width: 100%; + + button { + flex-shrink: 0; + width: 102px; + height: 40px; + margin-left: 11px; + } + } + } + + .btn-container { + margin-top: 48px; + } +} + +.switch-container { + margin-top: 24px; + + .tip { + font-size: 16px; + color: var(--color-bk3); + cursor: pointer; + display: inline-flex; + align-items: center; + margin-right: 14px; + &:hover { + color: var(--color-main); + } + + &:last-child { + &::after { + display: none; + } + } + + &::after { + content: ''; + display: block; + width: 1px; + height: 12px; + background: var(--td-gray-color-3); + margin-left: 14px; + } + } +} +// 下划线 +.line{ + &::before { + position: absolute; + left: 50%; + transform: translate(-50%); + content: ''; + width: 33px; + height: 4px; + border-radius: 4px; + bottom: -10px; + background: var(--color-main); + } +} + +.check-container { + font-size: 14px; + color: var(--td-text-color-secondary); + + .tip { + float: right; + font-size: 14px; + } +} + +.copyright { + font-size: 14px; + position: absolute; + bottom: 64px; + color: var(--td-text-color-secondary); +} + +@media screen and (max-height: 700px) { + .copyright { + display: none; + } +} +// 登录按钮 +.bt{ + height: 40px; + line-height: 40px; + margin-bottom: 25px; +} +.load{ + background-color: conic-gradient(from 90deg at 50% 50%, rgba(0, 82, 217, 0) 0deg, rgb(255, 255, 255) 360deg); +} \ No newline at end of file diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue new file mode 100644 index 0000000..794ece7 --- /dev/null +++ b/src/pages/login/index.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/pages/order/dispatchList/components/DialogForm.vue b/src/pages/order/dispatchList/components/DialogForm.vue new file mode 100644 index 0000000..bd7e101 --- /dev/null +++ b/src/pages/order/dispatchList/components/DialogForm.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/pages/order/dispatchList/components/SearchForm.vue b/src/pages/order/dispatchList/components/SearchForm.vue new file mode 100644 index 0000000..cf89c7d --- /dev/null +++ b/src/pages/order/dispatchList/components/SearchForm.vue @@ -0,0 +1,126 @@ + + + + + + + diff --git a/src/pages/order/dispatchList/components/TableList.vue b/src/pages/order/dispatchList/components/TableList.vue new file mode 100644 index 0000000..f03c851 --- /dev/null +++ b/src/pages/order/dispatchList/components/TableList.vue @@ -0,0 +1,267 @@ + + + + + + + + diff --git a/src/pages/order/dispatchList/components/assignDialog.vue b/src/pages/order/dispatchList/components/assignDialog.vue new file mode 100644 index 0000000..4430a31 --- /dev/null +++ b/src/pages/order/dispatchList/components/assignDialog.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/src/pages/order/dispatchList/constants.ts b/src/pages/order/dispatchList/constants.ts new file mode 100644 index 0000000..ff8bf73 --- /dev/null +++ b/src/pages/order/dispatchList/constants.ts @@ -0,0 +1,215 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { + title: '下单时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => h('span',row.createTime ? formatDateTimeToDateTimeString(new Date(row.createTime)) : '-') + }, + { + title: '服务地址', + colKey: 'serveAddress', + width: 200, + minWidth: '288px', + }, + { + title: '预约时间', + minWidth: '180px', + colKey: 'updateTime', + sortType: 'all', + }, + { + title: '指派超时', + colKey: 'ordersStatus', + width: 120, + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '是', + value: 0 + }, + { + label: '否', + value: 1 + }, + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '是', + }, + 1: { + label: '否', + }, + } + let status = 0 + if(row.ordersStatus === 100 || row.ordersStatus === 200 || row.ordersStatus === 300 || row.ordersStatus === 400 || row.ordersStatus === 500) { + status = 0 + }else if(row.ordersStatus === 700){ + status = 2 + }else{ + status = 1 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[1].label + ) + } + }, + { + align: 'left', + fixed: 'right', + width: 157, + minWidth: '157px', + colKey: 'op', + title: '操作' + } +] +export const PERSON_COLUMNS = [ + { + // title: '单选', + // align: 'center', + colKey: 'row-select', + type: 'single', + // 允许单选(Radio)取消行选中 + checkProps: { allowUncheck: true }, + + // 禁用行选中方式一:使用 disabled 禁用行(示例代码有效,勿删,随时需要测试)。disabled 参数:{row: RowData; rowIndex: number }) + // 这种方式禁用行选中,当前行会添加行类名 t-table__row--disabled,禁用行文字变灰 + // disabled: ({ rowIndex }) => rowIndex === 1 || rowIndex === 3, + + // 禁用行选中方式二:使用 checkProps 禁用行(示例代码有效,勿删,随时需要测试) + // 这种方式禁用行选中,行文本不会变灰,不会添加类名 t-table__row--disabled + // checkProps: ({ rowIndex }) => ({ disabled: rowIndex % 2 !== 0 }), + width: 40, + }, + { + title: '个人/企业编号', + align: 'left', + width: 147, + minWidth: '147px', + colKey: 'id' + }, + { title: '服务人员姓名(个体)', width: 160, minWidth: '160px', colKey: 'serveItemName' }, + { + title: '企业名称', + minWidth: '188px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => h('span',formatDateTimeToDateTimeString(new Date(row.createTime))) + }, + { + title: '电话号码', + colKey: 'contactsPhone', + width: 119, + minWidth: '119px', + }, + { + title: '已接单量', + colKey: 'ordersStatus', + width: 76, + minWidth: '76px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付', + }, + 100: { + label: '派单中', + }, + 200: { + label: '待服务', + }, + 300: { + label: '服务中', + }, + 400: { + label: '待评价', + }, + 500: { + label: '订单完成', + }, + 600: { + label: '订单取消', + }, + 700: { + label: '已关闭', + }, + } + let status = 0 + if(row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + }else{ + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + title: '接单状态', + colKey: 'ordersStatus', + width: 76, + minWidth: '76px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '接单中', + }, + 1: { + label: '休息中', + }, + } + let status = 0 + if(row.ordersStatus === 100 || row.ordersStatus === 200 || row.ordersStatus === 300 || row.ordersStatus === 400 || row.ordersStatus === 500) { + status = 0 + }else if(row.ordersStatus === 700){ + status = 2 + }else{ + status = 1 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[0].label + ) + } + }, + { + title: '距离(公里)', + minWidth: '104px', + width: 104, + colKey: 'ordersStatus', + sortType: 'all', + }, + { + width: 48, + minWidth: '48px', + colKey: 'op2', + title: '操作' + } +] diff --git a/src/pages/order/dispatchList/index.vue b/src/pages/order/dispatchList/index.vue new file mode 100644 index 0000000..97e3d47 --- /dev/null +++ b/src/pages/order/dispatchList/index.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/pages/order/historyList/components/DialogForm.vue b/src/pages/order/historyList/components/DialogForm.vue new file mode 100644 index 0000000..b73be64 --- /dev/null +++ b/src/pages/order/historyList/components/DialogForm.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/pages/order/historyList/components/SearchForm.vue b/src/pages/order/historyList/components/SearchForm.vue new file mode 100644 index 0000000..18b5974 --- /dev/null +++ b/src/pages/order/historyList/components/SearchForm.vue @@ -0,0 +1,181 @@ + + + + + + + diff --git a/src/pages/order/historyList/components/TableList.vue b/src/pages/order/historyList/components/TableList.vue new file mode 100644 index 0000000..c1dfadb --- /dev/null +++ b/src/pages/order/historyList/components/TableList.vue @@ -0,0 +1,169 @@ + + + + + + + + diff --git a/src/pages/order/historyList/constants.ts b/src/pages/order/historyList/constants.ts new file mode 100644 index 0000000..66619fd --- /dev/null +++ b/src/pages/order/historyList/constants.ts @@ -0,0 +1,181 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { + title: '下单时间', + minWidth: '180px', + colKey: 'placeOrderTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.placeOrderTime ? formatDateTimeToDateTimeString(new Date(row.placeOrderTime)) : '-') + }, + { + title: '服务地址', + colKey: 'serveAddress', + width: 200, + minWidth: '288px' + }, + { + title: '订单状态', + colKey: 'ordersStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付' + }, + 100: { + label: '派单中' + }, + 200: { + label: '待服务' + }, + 300: { + label: '服务中' + }, + 400: { + label: '待评价' + }, + 500: { + label: '订单完成' + }, + 600: { + label: '订单取消' + }, + 700: { + label: '已关闭' + } + } + let status = 0 + if (row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + } else { + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + title: '交易结束时间', + minWidth: '180px', + colKey: 'sortTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.sortTime ? formatDateTimeToDateTimeString(new Date(row.sortTime)) : '-') + }, + { + title: '服务人员姓名', + width: 150, + minWidth: '150px', + colKey: 'serveProviderStaffName' + }, + { + title: '服务人员电话', + minWidth: '170px', + sortType: 'all', + colKey: 'serveProviderStaffPhone' + }, + { + title: '订单金额(元)', + width: 150, + minWidth: '150px', + colKey: 'totalAmount' + }, + { + title: '实付金额(元)', + width: 150, + minWidth: '150px', + colKey: 'realPayAmount' + }, + { + title: '支付状态', + colKey: 'payStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 2: { + label: '未支付', + }, + 4: { + label: '已支付', + }, + } + let status = 1 + if(row.payStatus === 4) { + status = 2 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.payStatus].label + ) + } + }, + { + title: '退款状态', + colKey: 'refundStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 2: { + label: '退款成功', + }, + 3: { + label: '退款失败', + }, + 1: { + label: '退款中', + }, + } + let status = 0 + if(row.refundStatus === 2) { + status = 2 + }else if(row.refundStatus === 3){ + status = 1 + }else{ + status = 0 + } + if (row.refundStatus) { + // const status = row.isActive + 1 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.refundStatus].label + ) + } else { + return h( + 'span', + '-' + ) + } + } + }, + { + align: 'left', + fixed: 'right', + width: 70, + minWidth: '70px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/order/historyList/index.vue b/src/pages/order/historyList/index.vue new file mode 100644 index 0000000..e8ee0b7 --- /dev/null +++ b/src/pages/order/historyList/index.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/src/pages/order/historyList/orderDetail.vue b/src/pages/order/historyList/orderDetail.vue new file mode 100644 index 0000000..16e3855 --- /dev/null +++ b/src/pages/order/historyList/orderDetail.vue @@ -0,0 +1,792 @@ + + + + + diff --git a/src/pages/order/index.less b/src/pages/order/index.less new file mode 100644 index 0000000..162ac9a --- /dev/null +++ b/src/pages/order/index.less @@ -0,0 +1,293 @@ +.bgTable { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + + .formBox { + + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + + .t-col-2 { + display: flex; + } + + .baseList { + padding-top: 20px; + min-height: 674px; + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + + :deep(.t-table__body) { + tr { + + &:nth-last-child(3) &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px; + ; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + + .t-tree__line::before { + height: 37px; + } +} + +.citySelect { + height: 32px; + + :deep(.t-form__controls) { + background: #F74346; + float: right; + border-radius: 2px; + + .t-input:hover { + border-color: transparent; + } + + .t-input--focused { + box-shadow: none; + } + + .t-input.t-is-readonly { + width: 100px; + background: var(--color-main); + color: #fff; + + .t-input__inner { + color: #fff; + + &::placeholder { + color: #fff; + } + } + } + + .t-select .t-fake-arrow { + color: #fff; + } + } +} \ No newline at end of file diff --git a/src/pages/order/orderList/components/DialogForm.vue b/src/pages/order/orderList/components/DialogForm.vue new file mode 100644 index 0000000..c69c19c --- /dev/null +++ b/src/pages/order/orderList/components/DialogForm.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/pages/order/orderList/components/SearchForm.vue b/src/pages/order/orderList/components/SearchForm.vue new file mode 100644 index 0000000..5abf6e7 --- /dev/null +++ b/src/pages/order/orderList/components/SearchForm.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/src/pages/order/orderList/components/TableList.vue b/src/pages/order/orderList/components/TableList.vue new file mode 100644 index 0000000..b666bd1 --- /dev/null +++ b/src/pages/order/orderList/components/TableList.vue @@ -0,0 +1,203 @@ + + + + + + + + diff --git a/src/pages/order/orderList/constants.ts b/src/pages/order/orderList/constants.ts new file mode 100644 index 0000000..5d1c35f --- /dev/null +++ b/src/pages/order/orderList/constants.ts @@ -0,0 +1,162 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { + title: '下单时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => h('span',row.createTime ? formatDateTimeToDateTimeString(new Date(row.createTime)) : '-') + }, + { + title: '服务地址', + colKey: 'serveAddress', + width: 200, + minWidth: '288px', + }, + { + title: '订单状态', + colKey: 'ordersStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付', + }, + 100: { + label: '派单中', + }, + 200: { + label: '待服务', + }, + 300: { + label: '服务中', + }, + 400: { + label: '待评价', + }, + 500: { + label: '已完成', + }, + 600: { + label: '已取消', + }, + 700: { + label: '已关闭', + }, + } + let status = 0 + if(row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + }else{ + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + title: '预约时间', + minWidth: '180px', + colKey: 'serveStartTime', + sortType: 'all', + }, + { title: '客户姓名', width: 150, minWidth: '150px', colKey: 'contactsName' }, + { + title: '客户电话', + minWidth: '170px', + sortType: 'all', + colKey: 'contactsPhone' + }, + { title: '订单金额(元)', width: 150, minWidth: '150px', colKey: 'totalAmount' }, + { title: '实付金额(元)', width: 150, minWidth: '150px', colKey: 'realPayAmount' }, + { + title: '支付状态', + colKey: 'payStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 2: { + label: '未支付', + }, + 4: { + label: '已支付', + }, + } + let status = 1 + if(row.payStatus === 4) { + status = 2 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.payStatus].label + ) + } + }, + { + title: '退款状态', + colKey: 'refundStatus', + width: 120, + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 2: { + label: '退款成功', + }, + 3: { + label: '退款失败', + }, + 1: { + label: '退款中', + }, + } + let status = 2 + if(row.refundStatus === 3) { + status = 1 + }else if(row.refundStatus === 2){ + status = 2 + }else{ + status = 0 + } + if (row.refundStatus) { + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.refundStatus].label + ) + } else { + return h( + 'span', + '-' + ) + } + } + }, + { + align: 'left', + fixed: 'right', + width: 110, + minWidth: '110px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/order/orderList/index.vue b/src/pages/order/orderList/index.vue new file mode 100644 index 0000000..ad390a7 --- /dev/null +++ b/src/pages/order/orderList/index.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/src/pages/order/orderList/orderDetail.vue b/src/pages/order/orderList/orderDetail.vue new file mode 100644 index 0000000..ebb361f --- /dev/null +++ b/src/pages/order/orderList/orderDetail.vue @@ -0,0 +1,850 @@ + + + + + diff --git a/src/pages/order/refundList/components/DialogForm.vue b/src/pages/order/refundList/components/DialogForm.vue new file mode 100644 index 0000000..010e417 --- /dev/null +++ b/src/pages/order/refundList/components/DialogForm.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/pages/order/refundList/components/SearchForm.vue b/src/pages/order/refundList/components/SearchForm.vue new file mode 100644 index 0000000..a71314c --- /dev/null +++ b/src/pages/order/refundList/components/SearchForm.vue @@ -0,0 +1,115 @@ + + + + + + diff --git a/src/pages/order/refundList/components/TableList.vue b/src/pages/order/refundList/components/TableList.vue new file mode 100644 index 0000000..086839a --- /dev/null +++ b/src/pages/order/refundList/components/TableList.vue @@ -0,0 +1,220 @@ + + + + + + diff --git a/src/pages/order/refundList/components/detailDialog.vue b/src/pages/order/refundList/components/detailDialog.vue new file mode 100644 index 0000000..433af2a --- /dev/null +++ b/src/pages/order/refundList/components/detailDialog.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/pages/order/refundList/constants.ts b/src/pages/order/refundList/constants.ts new file mode 100644 index 0000000..c7dcae7 --- /dev/null +++ b/src/pages/order/refundList/constants.ts @@ -0,0 +1,348 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'ordersCode' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { + title: '下单时间', + minWidth: '180px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.createTime ? formatDateTimeToDateTimeString(new Date(row.createTime)) : '-') + }, + { + title: '服务地址', + colKey: 'serveAddress', + width: 200, + minWidth: '288px' + }, + { + title: '订单状态', + colKey: 'ordersStatus', + width: 76, + minWidth: '130px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付' + }, + 100: { + label: '派单中' + }, + 200: { + label: '待服务' + }, + 300: { + label: '服务中' + }, + 400: { + label: '待评价' + }, + 500: { + label: '订单完成' + }, + 600: { + label: '订单取消' + }, + 700: { + label: '已关闭' + } + } + let status = 0 + if (row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + } else { + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + title: '交易完成时间', + minWidth: '180px', + colKey: 'updateTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.updateTime ? formatDateTimeToDateTimeString(new Date(row.updateTime)) : '-') + }, + { + title: '服务人员', + colKey: 'ordersStatus', + width: 120, + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '是', + value: 0 + }, + { + label: '否', + value: 1 + } + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '是' + }, + 1: { + label: '否' + } + } + let status = 0 + if ( + row.ordersStatus === 100 || + row.ordersStatus === 200 || + row.ordersStatus === 300 || + row.ordersStatus === 400 || + row.ordersStatus === 500 + ) { + status = 0 + } else if (row.ordersStatus === 700) { + status = 2 + } else { + status = 1 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[1].label + ) + } + }, + { + title: '服务人员电话', + width: 150, + minWidth: '150px', + colKey: 'serveItemName' + }, + { + title: '订单金额(元)', + width: 150, + minWidth: '150px', + colKey: 'serveItemName' + }, + { + title: '实付金额(元)', + width: 150, + minWidth: '150px', + colKey: 'serveItemName' + }, + { + title: '交易状态', + colKey: 'ordersStatus', + width: 76, + minWidth: '130px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付' + }, + 100: { + label: '派单中' + }, + 200: { + label: '待服务' + }, + 300: { + label: '服务中' + }, + 400: { + label: '待评价' + }, + 500: { + label: '订单完成' + }, + 600: { + label: '订单取消' + }, + 700: { + label: '已关闭' + } + } + let status = 0 + if (row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + } else { + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + align: 'left', + fixed: 'right', + width: 70, + minWidth: '70px', + colKey: 'op2', + title: '操作' + } +] +export const PERSON_COLUMNS = [ + { + // title: '单选', + // align: 'center', + colKey: 'row-select', + type: 'single', + // 允许单选(Radio)取消行选中 + checkProps: { allowUncheck: true }, + + // 禁用行选中方式一:使用 disabled 禁用行(示例代码有效,勿删,随时需要测试)。disabled 参数:{row: RowData; rowIndex: number }) + // 这种方式禁用行选中,当前行会添加行类名 t-table__row--disabled,禁用行文字变灰 + // disabled: ({ rowIndex }) => rowIndex === 1 || rowIndex === 3, + + // 禁用行选中方式二:使用 checkProps 禁用行(示例代码有效,勿删,随时需要测试) + // 这种方式禁用行选中,行文本不会变灰,不会添加类名 t-table__row--disabled + // checkProps: ({ rowIndex }) => ({ disabled: rowIndex % 2 !== 0 }), + width: 40 + }, + { + title: '个人/企业编号', + align: 'left', + width: 147, + minWidth: '147px', + colKey: 'ordersCode' + }, + { + title: '服务人员姓名(个体)', + width: 160, + minWidth: '160px', + colKey: 'serveItemName' + }, + { + title: '企业名称', + minWidth: '188px', + colKey: 'createTime', + sortType: 'all', + cell: (h, { row }) => + h('span', row.createTime ? formatDateTimeToDateTimeString(new Date(row.createTime)) : '-') + }, + { + title: '电话号码', + colKey: 'contactsPhone', + width: 119, + minWidth: '119px' + }, + { + title: '已接单量', + colKey: 'ordersStatus', + width: 76, + minWidth: '76px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待支付' + }, + 100: { + label: '派单中' + }, + 200: { + label: '待服务' + }, + 300: { + label: '服务中' + }, + 400: { + label: '待评价' + }, + 500: { + label: '订单完成' + }, + 600: { + label: '订单取消' + }, + 700: { + label: '已关闭' + } + } + let status = 0 + if (row.ordersStatus === 500 || row.ordersStatus === 600) { + status = 2 + } else { + status = 0 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.ordersStatus].label + ) + } + }, + { + title: '接单状态', + colKey: 'ordersStatus', + width: 76, + minWidth: '76px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '接单中' + }, + 1: { + label: '休息中' + } + } + let status = 0 + if ( + row.ordersStatus === 100 || + row.ordersStatus === 200 || + row.ordersStatus === 300 || + row.ordersStatus === 400 || + row.ordersStatus === 500 + ) { + status = 0 + } else if (row.ordersStatus === 700) { + status = 2 + } else { + status = 1 + } + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[0].label + ) + } + }, + { + title: '距离(公里)', + minWidth: '104px', + width: 104, + colKey: 'ordersStatus', + sortType: 'all' + }, + { + width: 48, + minWidth: '48px', + colKey: 'op2', + title: '操作' + } +] diff --git a/src/pages/order/refundList/index.vue b/src/pages/order/refundList/index.vue new file mode 100644 index 0000000..b656fd1 --- /dev/null +++ b/src/pages/order/refundList/index.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/pages/personnel/authentication/components/ApplyDialog.vue b/src/pages/personnel/authentication/components/ApplyDialog.vue new file mode 100644 index 0000000..0f8e429 --- /dev/null +++ b/src/pages/personnel/authentication/components/ApplyDialog.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/pages/personnel/authentication/components/DialogForm.vue b/src/pages/personnel/authentication/components/DialogForm.vue new file mode 100644 index 0000000..4de0e87 --- /dev/null +++ b/src/pages/personnel/authentication/components/DialogForm.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/pages/personnel/authentication/components/SearchForm.vue b/src/pages/personnel/authentication/components/SearchForm.vue new file mode 100644 index 0000000..383a9dc --- /dev/null +++ b/src/pages/personnel/authentication/components/SearchForm.vue @@ -0,0 +1,100 @@ + + + + + + diff --git a/src/pages/personnel/authentication/components/TableList.vue b/src/pages/personnel/authentication/components/TableList.vue new file mode 100644 index 0000000..0ecbd49 --- /dev/null +++ b/src/pages/personnel/authentication/components/TableList.vue @@ -0,0 +1,317 @@ + + + + + + diff --git a/src/pages/personnel/authentication/constants.ts b/src/pages/personnel/authentication/constants.ts new file mode 100644 index 0000000..e712bb6 --- /dev/null +++ b/src/pages/personnel/authentication/constants.ts @@ -0,0 +1,233 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +// 服务人员信息列表 +export const COLUMNS = [ + { + title: '真实姓名', + align: 'left', + width: 150, + minWidth: '150px', + colKey: 'name' + }, + { + title: '身份证号', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'idCardNo' + }, + { + title: '身份证人像照片', + width: 150, + minWidth: '150px', + colKey: 'frontImg' + }, + { + title: '身份证国徽照片', + width: 150, + minWidth: '150px', + sortType: 'all', + colKey: 'backImg' + }, + { + title: '证明资料', + width: 150, + minWidth: '150px', + colKey: 'certificationMaterial' + }, + { + title: '审核状态', + colKey: 'auditStatus', + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '待审核' + }, + 1: { + label: '已审核' + } + } + const status = row.auditStatus === 1 ? 2 : 0 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.auditStatus].label + ) + } + }, + { + title: '认证状态', + colKey: 'certificationStatus', + width: 120, + minWidth: '120px', + // 添加筛选 + cell: (h, { row }) => { + const statusList = { + 1: { + label: '待认证' + }, + 2: { + label: '认证成功' + }, + 3: { + label: '认证失败' + } + } + return h( + 'span', + { + class: `status-dot status-dot-${row.certificationStatus}` + }, + statusList[row.certificationStatus].label + ) + } + }, + { + title: '驳回原因', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'rejectReason', + cell: (h, { row }) => h('span', row.rejectReason ? row.rejectReason : '-') + }, + { + title: '申请时间', + width: 180, + minWidth: '180px', + colKey: 'createTime', + sorter: true, + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.createTime + ? formatDateTimeToDateTimeString(new Date(row.createTime)) + : '-' + ) + }, + { + title: '审核人', + align: 'left', + width: 150, + minWidth: '150px', + colKey: 'auditorName ', + cell: (h, { row }) => h('span', row.auditorName ? row.auditorName : '-') + }, + { + title: '审核时间', + width: 180, + minWidth: '180px', + colKey: 'auditTime', + sorter: true, + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.auditTime + ? formatDateTimeToDateTimeString(new Date(row.auditTime)) + : '-' + ) + }, + { + align: 'left', + fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'op', + title: '操作' + } +] +// 申请记录 +export const Apply_DATA = [ + { + title: '序号', + align: 'left', + width: 68, + minWidth: '68px', + colKey: 'Num' + }, + { + title: '认证状态', + colKey: 'verifyStatus', + width: 118, + minWidth: '118px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '-', + value: 0 + }, + { + label: '认证通过', + value: 1 + }, + { + label: '认证失败', + value: 2 + } + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '-' + }, + 1: { + label: '认证通过' + }, + 2: { + label: '认证失败' + }, + 3: { + label: '未认证' + } + } + // const status = row.saleStatus === 2 ? '1' : 0 + return h( + 'span', + { + class: `status-dot status-dot-${row.verifyStatus}` + }, + statusList[row.verifyStatus].label + ) + } + }, + { + title: '驳回原因', + width: 184, + minWidth: '184px', + colKey: 'nam', + cell: (h, { row }) => h('span', row.nam ? row.nam : '-') + }, + { + title: '申请时间', + minWidth: '155px', + colKey: 'updateTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.updateTime + ? formatDateTimeToDateTimeString(new Date(row.updateTime)) + : '-' + ) + }, + { + title: '审核时间', + minWidth: '155px', + colKey: 'auditTime', + sortType: 'all', + cell: (h, { row }) => + h( + 'span', + row.auditTime + ? formatDateTimeToDateTimeString(new Date(row.auditTime)) + : '-' + ) + } +] diff --git a/src/pages/personnel/authentication/index.vue b/src/pages/personnel/authentication/index.vue new file mode 100644 index 0000000..5fee4df --- /dev/null +++ b/src/pages/personnel/authentication/index.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/src/pages/personnel/index.less b/src/pages/personnel/index.less new file mode 100644 index 0000000..f8d0880 --- /dev/null +++ b/src/pages/personnel/index.less @@ -0,0 +1,249 @@ +.bgTable { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + .formBox { + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + .t-col-2 { + display: flex; + } + .baseList { + padding-top: 20px; + min-height: 674px; + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + :deep(.t-table__body) { + tr { + + &:nth-last-child(3) + &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px;; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + .t-tree__line::before{ + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/personnel/information/components/DialogForm.vue b/src/pages/personnel/information/components/DialogForm.vue new file mode 100644 index 0000000..c2360f0 --- /dev/null +++ b/src/pages/personnel/information/components/DialogForm.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/pages/personnel/information/components/SearchForm.vue b/src/pages/personnel/information/components/SearchForm.vue new file mode 100644 index 0000000..090a3dc --- /dev/null +++ b/src/pages/personnel/information/components/SearchForm.vue @@ -0,0 +1,84 @@ + + + + + + + diff --git a/src/pages/personnel/information/components/TableList.vue b/src/pages/personnel/information/components/TableList.vue new file mode 100644 index 0000000..ea8fc83 --- /dev/null +++ b/src/pages/personnel/information/components/TableList.vue @@ -0,0 +1,223 @@ + + + + + + diff --git a/src/pages/personnel/information/constants.ts b/src/pages/personnel/information/constants.ts new file mode 100644 index 0000000..d5d482f --- /dev/null +++ b/src/pages/personnel/information/constants.ts @@ -0,0 +1,145 @@ +// 服务人员信息管理,表格列配置 + +import { formatDateTimeToDateTimeString } from '@/utils/date' +// 服务人员信息列表 +export const COLUMNS = [ + { title: '真实姓名', width: 250, minWidth: '150px', colKey: 'name' }, + { + title: '登录账号', + width: 250, + minWidth: '170px', + sortType: 'all', + colKey: 'phone' + }, + { + title: '身份证号', + align: 'left', + width: 250, + minWidth: '200px', + colKey: 'idNumber' + }, + // { title: '服务分类', width: 250, minWidth: '150px', colKey: 'name' }, + { title: '服务城市', width: 250, minWidth: '150px', colKey: 'cityName' }, + { + title: '接单状态', + colKey: 'canPickUp', + minWidth: '120px', + cell: (h, { row }) => { + const statusList = { + 0: { + label: '休息中' + }, + 1: { + label: '接单中' + }, + '-1': { + label: '未设置' + }, + } + // const status = row.canPickUp === -1 ? 0 : row.canPickUp + return h( + 'span', + { + class: `status-dot status-dot-${row.canPickUp + 1}` + }, + statusList[row.canPickUp].label + ) + } + }, + { + title: '账号状态', + colKey: 'status', + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '正常', + value: 0 + }, + { + label: '冻结', + value: 1 + } + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '正常' + }, + 1: { + label: '冻结' + } + } + const status = row.status === 0 ? '2' : 1 + return h( + 'span', + { + class: `status-dot status-dot-${status}` + }, + statusList[row.status].label + ) + } + }, + { + title: '认证时间', + width: 250, + minWidth: '180px', + colKey: 'certificationTime', + cell: (h, { row }) => h('span',row.certificationTime ? formatDateTimeToDateTimeString(new Date(row.certificationTime)) : '-') + }, + { + align: 'left', + fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'op', + title: '操作' + } +] +// 服务数据 +export const SERVE_DATA = [ + { + title: '订单编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'id' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'serveItemName' }, + { title: '评价评分(分)', width: 150, minWidth: '150px', colKey: 'score' }, + { title: '实付金额(元)', width: 150, minWidth: '150px', colKey: 'ordersAmount' }, + { + title: '服务完成时间', + minWidth: '180px', + colKey: 'realServeEndTime', + cell: (h, { row }) => + h('span', row.realServeEndTime ? formatDateTimeToDateTimeString(new Date(row.realServeEndTime)) : '-') + }, + { + align: 'left', + // fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'serveBeforeImgs', + title: '服务前照片' + }, { + align: 'left', + // fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'serveAfterImgs', + title: '服务后照片' + }, + { + align: 'left', + // fixed: 'right', + width: 120, + minWidth: '120px', + colKey: 'op2', + title: '操作' + } +] diff --git a/src/pages/personnel/information/index.vue b/src/pages/personnel/information/index.vue new file mode 100644 index 0000000..4d8778b --- /dev/null +++ b/src/pages/personnel/information/index.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/pages/personnel/information/informationDetail.vue b/src/pages/personnel/information/informationDetail.vue new file mode 100644 index 0000000..cd1bbb1 --- /dev/null +++ b/src/pages/personnel/information/informationDetail.vue @@ -0,0 +1,593 @@ + + + + + + diff --git a/src/pages/reply/index.less b/src/pages/reply/index.less new file mode 100644 index 0000000..1f0383a --- /dev/null +++ b/src/pages/reply/index.less @@ -0,0 +1,250 @@ +.bg-wt { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + .formBox { + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + .t-col-2 { + display: flex; + } + .baseList { + + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 32px; + height: 32px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-height: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 60px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: #332929; + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + :deep(.t-table__body) { + tr { + + &:nth-last-child(3), + &:nth-last-child(3) + &:nth-last-child(2), + &:last-child { + .hover { + bottom: 0; + top: auto; + + &::after { + top:auto; + bottom: -5px; + } + } + } + } + } + } + .t-tree__line::before{ + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/reply/order/components/SearchForm.vue b/src/pages/reply/order/components/SearchForm.vue new file mode 100644 index 0000000..b09e45e --- /dev/null +++ b/src/pages/reply/order/components/SearchForm.vue @@ -0,0 +1,132 @@ + + + + + + diff --git a/src/pages/reply/order/components/TableList.vue b/src/pages/reply/order/components/TableList.vue new file mode 100644 index 0000000..202e185 --- /dev/null +++ b/src/pages/reply/order/components/TableList.vue @@ -0,0 +1,296 @@ + + + + + + + + diff --git a/src/pages/reply/order/constants.ts b/src/pages/reply/order/constants.ts new file mode 100644 index 0000000..35f01b6 --- /dev/null +++ b/src/pages/reply/order/constants.ts @@ -0,0 +1,51 @@ +import {formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '评价内容', + align: 'left', + width: 250, + minWidth: '250px', + colKey: 'id' + }, + { + title: '评价评分', + colKey: 'content', + width: 300, + minWidth: '300px', + cell: { col: 'status' } + }, + { + title: '服务名称', + minWidth: '120px', + width: 120, + colKey: 'score_array' + }, + { + title: '评价人', + colKey: 'targetName', + width: 200, + minWidth: '150px', + cell: { col: 'status' } + }, + { + title: '评价图片', + width: 150, + minWidth: '150px', + colKey: 'picture', + }, + { + title: '评价时间', + width: 280, + minWidth: '180px', + colKey: 'createTime', + cell:(h, { row }) => h('span',row.createTime ? formatDateTimeToDateTimeString(new Date(row.createTime)) : '-') + }, + { + align: 'left', + fixed: 'right', + width: 160, + minWidth: '160px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/reply/order/detail.vue b/src/pages/reply/order/detail.vue new file mode 100644 index 0000000..d5b3236 --- /dev/null +++ b/src/pages/reply/order/detail.vue @@ -0,0 +1,1039 @@ + + + + + diff --git a/src/pages/reply/order/index.less b/src/pages/reply/order/index.less new file mode 100644 index 0000000..cf63364 --- /dev/null +++ b/src/pages/reply/order/index.less @@ -0,0 +1,247 @@ +.bg-wt { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + .formBox { + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + .t-col-2 { + display: flex; + } + .baseList { + + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 32px; + height: 32px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-height: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 60px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: #332929; + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + :deep(.t-table__body) { + tr { + &:nth-last-child(3) + &:nth-last-child(2), + &:last-child { + .hover { + bottom: 0; + top: auto; + &::after { + top:auto; + bottom: -5px; + } + } + } + } + } + } + .t-tree__line::before{ + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/reply/order/index.vue b/src/pages/reply/order/index.vue new file mode 100644 index 0000000..510b816 --- /dev/null +++ b/src/pages/reply/order/index.vue @@ -0,0 +1,386 @@ + + + + + diff --git a/src/pages/reply/order/objectDetail.vue b/src/pages/reply/order/objectDetail.vue new file mode 100644 index 0000000..df3a405 --- /dev/null +++ b/src/pages/reply/order/objectDetail.vue @@ -0,0 +1,1171 @@ + + + + + diff --git a/src/pages/reply/order/type.ts b/src/pages/reply/order/type.ts new file mode 100644 index 0000000..8081ee2 --- /dev/null +++ b/src/pages/reply/order/type.ts @@ -0,0 +1,136 @@ +export interface loadDataType { + id: string + evaluatorInfo: { + avatar: string + nickName: string + } + isTop: number + ownerId: string + content: string + createTime: string + statistics?: { + replyNumber: number + likeNumber: number + } + replyArray: Array<{ + replierInfo: { + avatar: string + nickName: string + } + targetReplierInfo: { + nickName: string + } + parentId: string | number + content: string + createTime: string + replierId: number + id: string + }> +} +// 定义一个对象的类型,第一层是对象,第二层是数组,第三层是对象,第一层的对象名字不确定可以是任意的字符串,第二层没有名字 +export interface MoreReplayDataType { + [key: string]: Array<{ + avatar: any + nickName: any + id: string + createTime: string + content: string + evaluationId: string + hotScore: string + ownerId: string + parentId: string | number + pictureArray: Array<{}> + replierId: string + updateTime: string + replierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + targetReplierId: string + targetReplierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + }> +} +// 定义详情数据的类型 +export interface DetailDataType { + appendArray: Array<{}> // 追加评价 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreArray: Array<{ + itemId: string + score: number + itemName: string + }> // 评价评分 + scoreLevel: number // 评价评分 + statistics: { + replyNumber: number + likeNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 +} +// 分页 +export interface paginationType { + pageSizeOptions?: Array + defaultPageSize?: number + total?: number + defaultCurrent?: number // 默认当前页 + infoType?: number + targetType?: any +} +export interface dataType { + [x: string]: any + [key: number]: Array<{ + appendArray: Array<{}> // 追加评价 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreArray: Array<{ + itemId: string + score: number + itemName: string + }> // 评价评分 + scoreLevel: number // 评价评分 + statistics: { + likeNumber: number + replyNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 + }> +} diff --git a/src/pages/service/index.less b/src/pages/service/index.less new file mode 100644 index 0000000..86a79e7 --- /dev/null +++ b/src/pages/service/index.less @@ -0,0 +1,266 @@ +.bgTable { + .headBox { + padding-bottom: 9.5px; + border-bottom: 1px solid #e8e8e8; + margin-bottom: 23.5px; + + :deep(.sw-box) { + .title { + color: var(--color-bk2); + width: 64px; + font-size: 14px; + display: inline-block; + margin-right: 30px; + // 文字左右居中 + text-align: center; + } + + .line { + color: var(--color-main); + font-weight: 500; + } + } + } + + .formBox { + + .btn-search, + .btn-reset { + width: 60px; + border-radius: 3px; + height: 32px; + } + } + + .tableBox { + padding: 24px 32px; + height: 136px; + margin-bottom: 24px; + border-bottom: 1px solid #e8e8e8; + } + + .t-col-2 { + display: flex; + } + + .baseList { + padding-top: 20px; + + .newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + // 右对齐 + margin-left: auto; + width: 88px; + } + } + + .name { + img { + width: 32px; + height: 32px; + vertical-align: bottom; + border-radius: 4px; + } + + display: flex; + align-items: center; + + span { + display: contents; + } + } + + .updateTime { + font-family: HelveticaNeue; + } + + + + .btn-search { + margin-left: 9px; + } + + .line { + padding: 0 7.5px; + // 在框线外一边扩展7.5px + } + + .btn-split-right { + padding-right: 7.5px; + } + + .btn-split-left { + padding-left: 7.5px; + } + + .tdesign-demo-image-viewer__ui-image { + width: 39px; + height: 39px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; + margin-right: 10px; + } + + .tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; + } + + .tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; + } + + .tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 32px; + max-width: 32px; + cursor: pointer; + position: absolute; + } + + .tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; + } + + .tdesign-demo-image-viewer__ui-image--title { + flex: 1; + } + + .tdesign-demo-popup__reference { + margin-left: 16px; + } + + .tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; + } + + .tdesign-demo-image-viewer__base { + width: 160px; + height: 160px; + margin: 10px; + border: 4px solid var(--td-bg-color-secondarycontainer); + border-radius: var(--td-radius-medium); + } + + :deep(.t-table td) { + height: 50px; + padding-top: 0; + padding-bottom: 0; + } + + .descriptionheight { + margin-top: 10px; + margin-bottom: 10px; + } + + .description { + // 自动折行,超出两行显示省略号 + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + width: 252px; + &:nth-last-child(3) &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px; + &::after { + top: auto; + bottom: -5px; + } + } + } + .hover { + display: none; + position: absolute; + // 位于div上方中间位置 + top: 61px; + width: 334px; + max-height: 163px; + font-size: 12px; + background-color: #fff; + line-height: 17px; + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); + border-radius: 4px; + padding: 15px; + color: var(--color-bk1); + word-break: break-all; + z-index: 100; + + &::after { + content: ''; + position: absolute; + top: -5px; + left: 5%; + width: 10px; + height: 10px; + transform: rotate(45deg); + background-color: #fff; + // box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.05); + } + } + + &:hover { + .hover { + display: block; + } + } + } + + :deep(.t-table__body) { + tr { + + &:nth-last-child(3) &:nth-last-child(2), + &:last-child { + .hover { + top: auto; + bottom: 63px; + ; + + &::after { + top: auto; + bottom: -5px; + } + } + } + } + } + } + + .t-tree__line::before { + height: 37px; + } +} \ No newline at end of file diff --git a/src/pages/service/region/city.ts b/src/pages/service/region/city.ts new file mode 100644 index 0000000..c919162 --- /dev/null +++ b/src/pages/service/region/city.ts @@ -0,0 +1,1686 @@ +export const cityList = [ + { + value: "34", + children: [ + { + value: "0556", + label: "安庆市" + }, + { + value: "0552", + label: "蚌埠市" + }, + { + value: "0558", + label: "亳州市" + }, + { + value: "0566", + label: "池州市" + }, + { + value: "0550", + label: "滁州市" + }, + { + value: "1558", + label: "阜阳市" + }, + { + value: "0551", + label: "合肥市" + }, + { + value: "0561", + label: "淮北市" + }, + { + value: "0554", + label: "淮南市" + }, + { + value: "0559", + label: "黄山市" + }, + { + value: "0564", + label: "六安市" + }, + { + value: "0555", + label: "马鞍山市" + }, + { + value: "0557", + label: "宿州市" + }, + { + value: "0562", + label: "铜陵市" + }, + { + value: "0553", + label: "芜湖市" + }, + { + value: "0563", + label: "宣城市" + } + ], + label: "安徽省" + }, + { + value: "82", + children: [ + { + value: "1853", + label: "澳门特别行政区" + } + ], + label: "澳门特别行政区" + }, + { + value: "11", + children: [ + { + value: "010", + label: "北京市" + } + ], + label: "北京市" + }, + { + value: "50", + children: [ + { + value: "023", + label: "重庆市" + } + ], + label: "重庆市" + }, + { + value: "35", + children: [ + { + value: "0591", + label: "福州市" + }, + { + value: "0597", + label: "龙岩市" + }, + { + value: "0599", + label: "南平市" + }, + { + value: "0593", + label: "宁德市" + }, + { + value: "0594", + label: "莆田市" + }, + { + value: "0595", + label: "泉州市" + }, + { + value: "0598", + label: "三明市" + }, + { + value: "0592", + label: "厦门市" + }, + { + value: "0596", + label: "漳州市" + } + ], + label: "福建省" + }, + { + value: "62", + children: [ + { + value: "0943", + label: "白银市" + }, + { + value: "0932", + label: "定西市" + }, + { + value: "0941", + label: "甘南藏族自治州" + }, + { + value: "1937", + label: "嘉峪关市" + }, + { + value: "0935", + label: "金昌市" + }, + { + value: "0937", + label: "酒泉市" + }, + { + value: "0931", + label: "兰州市" + }, + { + value: "0930", + label: "临夏回族自治州" + }, + { + value: "2935", + label: "陇南市" + }, + { + value: "0933", + label: "平凉市" + }, + { + value: "0934", + label: "庆阳市" + }, + { + value: "0938", + label: "天水市" + }, + { + value: "1935", + label: "武威市" + }, + { + value: "0936", + label: "张掖市" + } + ], + label: "甘肃省" + }, + { + value: "44", + children: [ + { + value: "0768", + label: "潮州市" + }, + { + value: "0769", + label: "东莞市" + }, + { + value: "0757", + label: "佛山市" + }, + { + value: "020", + label: "广州市" + }, + { + value: "0762", + label: "河源市" + }, + { + value: "0752", + label: "惠州市" + }, + { + value: "0750", + label: "江门市" + }, + { + value: "0663", + label: "揭阳市" + }, + { + value: "0668", + label: "茂名市" + }, + { + value: "0753", + label: "梅州市" + }, + { + value: "0763", + label: "清远市" + }, + { + value: "0754", + label: "汕头市" + }, + { + value: "0660", + label: "汕尾市" + }, + { + value: "0751", + label: "韶关市" + }, + { + value: "0755", + label: "深圳市" + }, + { + value: "0662", + label: "阳江市" + }, + { + value: "0766", + label: "云浮市" + }, + { + value: "0759", + label: "湛江市" + }, + { + value: "0758", + label: "肇庆市" + }, + { + value: "0760", + label: "中山市" + }, + { + value: "0756", + label: "珠海市" + } + ], + label: "广东省" + }, + { + value: "45", + children: [ + { + value: "0776", + label: "百色市" + }, + { + value: "0779", + label: "北海市" + }, + { + value: "1771", + label: "崇左市" + }, + { + value: "0770", + label: "防城港市" + }, + { + value: "0773", + label: "桂林市" + }, + { + value: "1755", + label: "贵港市" + }, + { + value: "0778", + label: "河池市" + }, + { + value: "1774", + label: "贺州市" + }, + { + value: "1772", + label: "来宾市" + }, + { + value: "0772", + label: "柳州市" + }, + { + value: "0771", + label: "南宁市" + }, + { + value: "0777", + label: "钦州市" + }, + { + value: "0774", + label: "梧州市" + }, + { + value: "0775", + label: "玉林市" + } + ], + label: "广西壮族自治区" + }, + { + value: "52", + children: [ + { + value: "0853", + label: "安顺市" + }, + { + value: "0857", + label: "毕节市" + }, + { + value: "0851", + label: "贵阳市" + }, + { + value: "0858", + label: "六盘水市" + }, + { + value: "0855", + label: "黔东南苗族侗族自治州" + }, + { + value: "0854", + label: "黔南布依族苗族自治州" + }, + { + value: "0859", + label: "黔西南布依族苗族自治州" + }, + { + value: "0856", + label: "铜仁市" + }, + { + value: "0852", + label: "遵义市" + } + ], + label: "贵州省" + }, + { + value: "46", + children: [ + { + value: "0802", + label: "白沙黎族自治县" + }, + { + value: "0801", + label: "保亭黎族苗族自治县" + }, + { + value: "0803", + label: "昌江黎族自治县" + }, + { + value: "0804", + label: "澄迈县" + }, + { + value: "0806", + label: "定安县" + }, + { + value: "0807", + label: "东方市" + }, + { + value: "0805", + label: "儋州市" + }, + { + value: "0898", + label: "海口市" + }, + { + value: "2802", + label: "乐东黎族自治县" + }, + { + value: "1896", + label: "临高县" + }, + { + value: "0809", + label: "陵水黎族自治县" + }, + { + value: "1894", + label: "琼海市" + }, + { + value: "1899", + label: "琼中黎族苗族自治县" + }, + { + value: "2898", + label: "三沙市" + }, + { + value: "0899", + label: "三亚市" + }, + { + value: "1892", + label: "屯昌县" + }, + { + value: "1898", + label: "万宁市" + }, + { + value: "1893", + label: "文昌市" + }, + { + value: "1897", + label: "五指山市" + } + ], + label: "海南省" + }, + { + value: "13", + children: [ + { + value: "0312", + label: "保定市" + }, + { + value: "0317", + label: "沧州市" + }, + { + value: "0314", + label: "承德市" + }, + { + value: "0310", + label: "邯郸市" + }, + { + value: "0318", + label: "衡水市" + }, + { + value: "0316", + label: "廊坊市" + }, + { + value: "0335", + label: "秦皇岛市" + }, + { + value: "0311", + label: "石家庄市" + }, + { + value: "0315", + label: "唐山市" + }, + { + value: "0319", + label: "邢台市" + }, + { + value: "0313", + label: "张家口市" + } + ], + label: "河北省" + }, + { + value: "41", + children: [ + { + value: "0372", + label: "安阳市" + }, + { + value: "0392", + label: "鹤壁市" + }, + { + value: "1391", + label: "济源市" + }, + { + value: "0391", + label: "焦作市" + }, + { + value: "0378", + label: "开封市" + }, + { + value: "0379", + label: "洛阳市" + }, + { + value: "0395", + label: "漯河市" + }, + { + value: "0377", + label: "南阳市" + }, + { + value: "0375", + label: "平顶山市" + }, + { + value: "0393", + label: "濮阳市" + }, + { + value: "0398", + label: "三门峡市" + }, + { + value: "0370", + label: "商丘市" + }, + { + value: "0373", + label: "新乡市" + }, + { + value: "0376", + label: "信阳市" + }, + { + value: "0374", + label: "许昌市" + }, + { + value: "0371", + label: "郑州市" + }, + { + value: "0394", + label: "周口市" + }, + { + value: "0396", + label: "驻马店市" + } + ], + label: "河南省" + }, + { + value: "23", + children: [ + { + value: "0459", + label: "大庆市" + }, + { + value: "0457", + label: "大兴安岭地区" + }, + { + value: "0451", + label: "哈尔滨市" + }, + { + value: "0468", + label: "鹤岗市" + }, + { + value: "0456", + label: "黑河市" + }, + { + value: "0467", + label: "鸡西市" + }, + { + value: "0454", + label: "佳木斯市" + }, + { + value: "0453", + label: "牡丹江市" + }, + { + value: "0464", + label: "七台河市" + }, + { + value: "0452", + label: "齐齐哈尔市" + }, + { + value: "0469", + label: "双鸭山市" + }, + { + value: "0455", + label: "绥化市" + }, + { + value: "0458", + label: "伊春市" + } + ], + label: "黑龙江省" + }, + { + value: "42", + children: [ + { + value: "0711", + label: "鄂州市" + }, + { + value: "0718", + label: "恩施土家族苗族自治州" + }, + { + value: "0713", + label: "黄冈市" + }, + { + value: "0714", + label: "黄石市" + }, + { + value: "0724", + label: "荆门市" + }, + { + value: "0716", + label: "荆州市" + }, + { + value: "2728", + label: "潜江市" + }, + { + value: "1719", + label: "神农架林区" + }, + { + value: "0719", + label: "十堰市" + }, + { + value: "0722", + label: "随州市" + }, + { + value: "1728", + label: "天门市" + }, + { + value: "027", + label: "武汉市" + }, + { + value: "0728", + label: "仙桃市" + }, + { + value: "0715", + label: "咸宁市" + }, + { + value: "0710", + label: "襄阳市" + }, + { + value: "0712", + label: "孝感市" + }, + { + value: "0717", + label: "宜昌市" + } + ], + label: "湖北省" + }, + { + value: "43", + children: [ + { + value: "0736", + label: "常德市" + }, + { + value: "0731", + label: "长沙市" + }, + { + value: "0735", + label: "郴州市" + }, + { + value: "0734", + label: "衡阳市" + }, + { + value: "0745", + label: "怀化市" + }, + { + value: "0738", + label: "娄底市" + }, + { + value: "0739", + label: "邵阳市" + }, + { + value: "0732", + label: "湘潭市" + }, + { + value: "0743", + label: "湘西土家族苗族自治州" + }, + { + value: "0737", + label: "益阳市" + }, + { + value: "0746", + label: "永州市" + }, + { + value: "0730", + label: "岳阳市" + }, + { + value: "0744", + label: "张家界市" + }, + { + value: "0733", + label: "株洲市" + } + ], + label: "湖南省" + }, + { + value: "22", + children: [ + { + value: "0436", + label: "白城市" + }, + { + value: "0439", + label: "白山市" + }, + { + value: "0431", + label: "长春市" + }, + { + value: "0432", + label: "吉林市" + }, + { + value: "0437", + label: "辽源市" + }, + { + value: "0434", + label: "四平市" + }, + { + value: "0438", + label: "松原市" + }, + { + value: "0435", + label: "通化市" + }, + { + value: "1433", + label: "延边朝鲜族自治州" + } + ], + label: "吉林省" + }, + { + value: "32", + children: [ + { + value: "0519", + label: "常州市" + }, + { + value: "0517", + label: "淮安市" + }, + { + value: "0518", + label: "连云港市" + }, + { + value: "025", + label: "南京市" + }, + { + value: "0513", + label: "南通市" + }, + { + value: "0512", + label: "苏州市" + }, + { + value: "0527", + label: "宿迁市" + }, + { + value: "0523", + label: "泰州市" + }, + { + value: "0510", + label: "无锡市" + }, + { + value: "0516", + label: "徐州市" + }, + { + value: "0515", + label: "盐城市" + }, + { + value: "0514", + label: "扬州市" + }, + { + value: "0511", + label: "镇江市" + } + ], + label: "江苏省" + }, + { + value: "36", + children: [ + { + value: "0794", + label: "抚州市" + }, + { + value: "0797", + label: "赣州市" + }, + { + value: "0796", + label: "吉安市" + }, + { + value: "0798", + label: "景德镇市" + }, + { + value: "0792", + label: "九江市" + }, + { + value: "0791", + label: "南昌市" + }, + { + value: "0799", + label: "萍乡市" + }, + { + value: "0793", + label: "上饶市" + }, + { + value: "0790", + label: "新余市" + }, + { + value: "0795", + label: "宜春市" + }, + { + value: "0701", + label: "鹰潭市" + } + ], + label: "江西省" + }, + { + value: "21", + children: [ + { + value: "0412", + label: "鞍山市" + }, + { + value: "0414", + label: "本溪市" + }, + { + value: "0421", + label: "朝阳市" + }, + { + value: "0411", + label: "大连市" + }, + { + value: "0415", + label: "丹东市" + }, + { + value: "0413", + label: "抚顺市" + }, + { + value: "0418", + label: "阜新市" + }, + { + value: "0429", + label: "葫芦岛市" + }, + { + value: "0416", + label: "锦州市" + }, + { + value: "0419", + label: "辽阳市" + }, + { + value: "0427", + label: "盘锦市" + }, + { + value: "024", + label: "沈阳市" + }, + { + value: "0410", + label: "铁岭市" + }, + { + value: "0417", + label: "营口市" + } + ], + label: "辽宁省" + }, + { + value: "15", + children: [ + { + value: "0483", + label: "阿拉善盟" + }, + { + value: "0478", + label: "巴彦淖尔市" + }, + { + value: "0472", + label: "包头市" + }, + { + value: "0476", + label: "赤峰市" + }, + { + value: "0477", + label: "鄂尔多斯市" + }, + { + value: "0471", + label: "呼和浩特市" + }, + { + value: "0470", + label: "呼伦贝尔市" + }, + { + value: "0475", + label: "通辽市" + }, + { + value: "0473", + label: "乌海市" + }, + { + value: "0474", + label: "乌兰察布市" + }, + { + value: "0479", + label: "锡林郭勒盟" + }, + { + value: "0482", + label: "兴安盟" + } + ], + label: "内蒙古自治区" + }, + { + value: "64", + children: [ + { + value: "0954", + label: "固原市" + }, + { + value: "0952", + label: "石嘴山市" + }, + { + value: "0953", + label: "吴忠市" + }, + { + value: "0951", + label: "银川市" + }, + { + value: "1953", + label: "中卫市" + } + ], + label: "宁夏回族自治区" + }, + { + value: "63", + children: [ + { + value: "0975", + label: "果洛藏族自治州" + }, + { + value: "0970", + label: "海北藏族自治州" + }, + { + value: "0972", + label: "海东市" + }, + { + value: "0974", + label: "海南藏族自治州" + }, + { + value: "0977", + label: "海西蒙古族藏族自治州" + }, + { + value: "0973", + label: "黄南藏族自治州" + }, + { + value: "0971", + label: "西宁市" + }, + { + value: "0976", + label: "玉树藏族自治州" + } + ], + label: "青海省" + }, + { + value: "37", + children: [ + { + value: "0543", + label: "滨州市" + }, + { + value: "0534", + label: "德州市" + }, + { + value: "0546", + label: "东营市" + }, + { + value: "0530", + label: "菏泽市" + }, + { + value: "0531", + label: "济南市" + }, + { + value: "0537", + label: "济宁市" + }, + { + value: "0635", + label: "聊城市" + }, + { + value: "0539", + label: "临沂市" + }, + { + value: "0532", + label: "青岛市" + }, + { + value: "0633", + label: "日照市" + }, + { + value: "0538", + label: "泰安市" + }, + { + value: "0631", + label: "威海市" + }, + { + value: "0536", + label: "潍坊市" + }, + { + value: "0535", + label: "烟台市" + }, + { + value: "0632", + label: "枣庄市" + }, + { + value: "0533", + label: "淄博市" + } + ], + label: "山东省" + }, + { + value: "14", + children: [ + { + value: "0355", + label: "长治市" + }, + { + value: "0352", + label: "大同市" + }, + { + value: "0356", + label: "晋城市" + }, + { + value: "0354", + label: "晋中市" + }, + { + value: "0357", + label: "临汾市" + }, + { + value: "0358", + label: "吕梁市" + }, + { + value: "0349", + label: "朔州市" + }, + { + value: "0351", + label: "太原市" + }, + { + value: "0350", + label: "忻州市" + }, + { + value: "0353", + label: "阳泉市" + }, + { + value: "0359", + label: "运城市" + } + ], + label: "山西省" + }, + { + value: "61", + children: [ + { + value: "0915", + label: "安康市" + }, + { + value: "0917", + label: "宝鸡市" + }, + { + value: "0916", + label: "汉中市" + }, + { + value: "0914", + label: "商洛市" + }, + { + value: "0919", + label: "铜川市" + }, + { + value: "0913", + label: "渭南市" + }, + { + value: "029", + label: "西安市" + }, + { + value: "0910", + label: "咸阳市" + }, + { + value: "0911", + label: "延安市" + }, + { + value: "0912", + label: "榆林市" + } + ], + label: "陕西省" + }, + { + value: "31", + children: [ + { + value: "021", + label: "上海市" + } + ], + label: "上海市" + }, + { + value: "51", + children: [ + { + value: "0837", + label: "阿坝藏族羌族自治州" + }, + { + value: "0827", + label: "巴中市" + }, + { + value: "028", + label: "成都市" + }, + { + value: "0818", + label: "达州市" + }, + { + value: "0838", + label: "德阳市" + }, + { + value: "0836", + label: "甘孜藏族自治州" + }, + { + value: "0826", + label: "广安市" + }, + { + value: "0839", + label: "广元市" + }, + { + value: "0833", + label: "乐山市" + }, + { + value: "0834", + label: "凉山彝族自治州" + }, + { + value: "0830", + label: "泸州市" + }, + { + value: "1833", + label: "眉山市" + }, + { + value: "0816", + label: "绵阳市" + }, + { + value: "0817", + label: "南充市" + }, + { + value: "1832", + label: "内江市" + }, + { + value: "0812", + label: "攀枝花市" + }, + { + value: "0825", + label: "遂宁市" + }, + { + value: "0835", + label: "雅安市" + }, + { + value: "0831", + label: "宜宾市" + }, + { + value: "0832", + label: "资阳市" + }, + { + value: "0813", + label: "自贡市" + } + ], + label: "四川省" + }, + { + value: "71", + children: [ + { + value: "1886", + label: "台湾省" + } + ], + label: "台湾省" + }, + { + value: "12", + children: [ + { + value: "022", + label: "天津市" + } + ], + label: "天津市" + }, + { + value: "54", + children: [ + { + value: "0897", + label: "阿里地区" + }, + { + value: "0895", + label: "昌都市" + }, + { + value: "0891", + label: "拉萨市" + }, + { + value: "0894", + label: "林芝市" + }, + { + value: "0896", + label: "那曲市" + }, + { + value: "0892", + label: "日喀则市" + }, + { + value: "0893", + label: "山南市" + } + ], + label: "西藏自治区" + }, + { + value: "81", + children: [ + { + value: "1852", + label: "香港特别行政区" + } + ], + label: "香港特别行政区" + }, + { + value: "65", + children: [ + { + value: "0997", + label: "阿克苏地区" + }, + { + value: "1997", + label: "阿拉尔市" + }, + { + value: "0906", + label: "阿勒泰地区" + }, + { + value: "0996", + label: "巴音郭楞蒙古自治州" + }, + { + value: "1906", + label: "北屯市" + }, + { + value: "0909", + label: "博尔塔拉蒙古自治州" + }, + { + value: "0994", + label: "昌吉回族自治州" + }, + { + value: "0902", + label: "哈密市" + }, + { + value: "0903", + label: "和田地区" + }, + { + value: "0992", + label: "胡杨河市" + }, + { + value: "0998", + label: "喀什地区" + }, + { + value: "1999", + label: "可克达拉市" + }, + { + value: "0990", + label: "克拉玛依市" + }, + { + value: "0908", + label: "克孜勒苏柯尔克孜自治州" + }, + { + value: "1903", + label: "昆玉市" + }, + { + value: "0993", + label: "石河子市" + }, + { + value: "1909", + label: "双河市" + }, + { + value: "0901", + label: "塔城地区" + }, + { + value: "1996", + label: "铁门关市" + }, + { + value: "1998", + label: "图木舒克市" + }, + { + value: "0995", + label: "吐鲁番市" + }, + { + value: "0991", + label: "乌鲁木齐市" + }, + { + value: "1994", + label: "五家渠市" + }, + { + value: "0999", + label: "伊犁哈萨克自治州" + } + ], + label: "新疆维吾尔自治区" + }, + { + value: "53", + children: [ + { + value: "0875", + label: "保山市" + }, + { + value: "0878", + label: "楚雄彝族自治州" + }, + { + value: "0872", + label: "大理白族自治州" + }, + { + value: "0692", + label: "德宏傣族景颇族自治州" + }, + { + value: "0887", + label: "迪庆藏族自治州" + }, + { + value: "0873", + label: "红河哈尼族彝族自治州" + }, + { + value: "0871", + label: "昆明市" + }, + { + value: "0888", + label: "丽江市" + }, + { + value: "0883", + label: "临沧市" + }, + { + value: "0886", + label: "怒江傈僳族自治州" + }, + { + value: "0879", + label: "普洱市" + }, + { + value: "0874", + label: "曲靖市" + }, + { + value: "0876", + label: "文山壮族苗族自治州" + }, + { + value: "0691", + label: "西双版纳傣族自治州" + }, + { + value: "0877", + label: "玉溪市" + }, + { + value: "0870", + label: "昭通市" + } + ], + label: "云南省" + }, + { + value: "33", + children: [ + { + value: "0571", + label: "杭州市" + }, + { + value: "0572", + label: "湖州市" + }, + { + value: "0573", + label: "嘉兴市" + }, + { + value: "0579", + label: "金华市" + }, + { + value: "0578", + label: "丽水市" + }, + { + value: "0574", + label: "宁波市" + }, + { + value: "0570", + label: "衢州市" + }, + { + value: "0575", + label: "绍兴市" + }, + { + value: "0576", + label: "台州市" + }, + { + value: "0577", + label: "温州市" + }, + { + value: "0580", + label: "舟山市" + } + ], + label: "浙江省" + } +] \ No newline at end of file diff --git a/src/pages/service/region/components/DialogForm.vue b/src/pages/service/region/components/DialogForm.vue new file mode 100644 index 0000000..6ef212c --- /dev/null +++ b/src/pages/service/region/components/DialogForm.vue @@ -0,0 +1,219 @@ + + + + + +../city \ No newline at end of file diff --git a/src/pages/service/region/components/TableList.vue b/src/pages/service/region/components/TableList.vue new file mode 100644 index 0000000..ddcca7a --- /dev/null +++ b/src/pages/service/region/components/TableList.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/pages/service/region/components/addServiceDialog.vue b/src/pages/service/region/components/addServiceDialog.vue new file mode 100644 index 0000000..85595b7 --- /dev/null +++ b/src/pages/service/region/components/addServiceDialog.vue @@ -0,0 +1,498 @@ + + + + + diff --git a/src/pages/service/region/components/regionTableList.vue b/src/pages/service/region/components/regionTableList.vue new file mode 100644 index 0000000..dbff4ed --- /dev/null +++ b/src/pages/service/region/components/regionTableList.vue @@ -0,0 +1,265 @@ + + + + + + + + diff --git a/src/pages/service/region/components/ruleDialog.vue b/src/pages/service/region/components/ruleDialog.vue new file mode 100644 index 0000000..0cfcee5 --- /dev/null +++ b/src/pages/service/region/components/ruleDialog.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/pages/service/region/constants.ts b/src/pages/service/region/constants.ts new file mode 100644 index 0000000..c2aa208 --- /dev/null +++ b/src/pages/service/region/constants.ts @@ -0,0 +1,56 @@ +export const COLUMNS = [ + { + title: '区域编号', + align: 'left', + width: 200, + minWidth: '70px', + colKey: 'cityCode' + }, + { title: '区域名称', width: 150, minWidth: '150px', colKey: 'name' }, + { title: '区域负责人', width: 150, minWidth: '150px', colKey: 'managerName' }, + { title: '手机号码', minWidth: '200px', colKey: 'managerPhone' }, + // { title: '服务范围', width: 250, minWidth: '250px', colKey: 'name' }, + { + title: '状态', + colKey: 'activeStatus', + minWidth: '120px', + width:150, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '草稿' + }, + 1: { + label: '禁用' + }, + 2: { + label: '启用' + }, + } + // const status = row.activeStatus + 1 + return h( + 'span', + { + class: `status-dot status-dot-${row.activeStatus}` + }, + statusList[row.activeStatus].label + ) + } + }, + { + title: '更新时间', + minWidth: '200px', + width: 200, + colKey: 'updateTime', + sorter: true, + sortType: 'all' + }, + { + align: 'left', + fixed: 'right', + width: 370, + minWidth: '370px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/service/region/editRegion.vue b/src/pages/service/region/editRegion.vue new file mode 100644 index 0000000..9a2cda2 --- /dev/null +++ b/src/pages/service/region/editRegion.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/src/pages/service/region/index.vue b/src/pages/service/region/index.vue new file mode 100644 index 0000000..7b2ffbf --- /dev/null +++ b/src/pages/service/region/index.vue @@ -0,0 +1,273 @@ + + + + diff --git a/src/pages/service/region/model.ts b/src/pages/service/region/model.ts new file mode 100644 index 0000000..95cf7d2 --- /dev/null +++ b/src/pages/service/region/model.ts @@ -0,0 +1,12 @@ +export interface businessConfig { + name: string + id: string + dispatchPerRoundInterval: number + institutionReceiveOrderMax: number + institutionServeRadius:number + seizeTimeoutInterval: number + staffReceiveOrderMax:number + staffServeRadius: number + dispatchStrategy: number + cityCode: number | string +} \ No newline at end of file diff --git a/src/pages/service/region/setBusiness.vue b/src/pages/service/region/setBusiness.vue new file mode 100644 index 0000000..2ae93da --- /dev/null +++ b/src/pages/service/region/setBusiness.vue @@ -0,0 +1,571 @@ + + + + + diff --git a/src/pages/service/service/addService.vue b/src/pages/service/service/addService.vue new file mode 100644 index 0000000..1288f91 --- /dev/null +++ b/src/pages/service/service/addService.vue @@ -0,0 +1,540 @@ + + + + + diff --git a/src/pages/service/service/components/SearchForm.vue b/src/pages/service/service/components/SearchForm.vue new file mode 100644 index 0000000..ff1d7b3 --- /dev/null +++ b/src/pages/service/service/components/SearchForm.vue @@ -0,0 +1,105 @@ + + + + + + + diff --git a/src/pages/service/service/components/TableList.vue b/src/pages/service/service/components/TableList.vue new file mode 100644 index 0000000..7ca476d --- /dev/null +++ b/src/pages/service/service/components/TableList.vue @@ -0,0 +1,239 @@ + + + + + + diff --git a/src/pages/service/service/components/previewPopup.vue b/src/pages/service/service/components/previewPopup.vue new file mode 100644 index 0000000..fee9aaa --- /dev/null +++ b/src/pages/service/service/components/previewPopup.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/pages/service/service/constants.ts b/src/pages/service/service/constants.ts new file mode 100644 index 0000000..785d0fb --- /dev/null +++ b/src/pages/service/service/constants.ts @@ -0,0 +1,108 @@ +import { formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '服务编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'code' + }, + { title: '服务名称', width: 150, minWidth: '150px', colKey: 'name' }, + { + title: '服务图标', + colKey: 'serveTypeIcon', + width: 125, + minWidth: '125px', + cell: { col: 'status' } + }, + { + title: '服务图片', + colKey: 'img', + width: 125, + minWidth: '125px', + cell: { col: 'status' } + }, + { + title: '服务单价(元)', + minWidth: '170px', + sortType: 'all', + colKey: 'referencePrice' + }, + { title: '服务类型', width: 150, minWidth: '150px', colKey: 'serveTypeName' }, + { + title: '服务描述', + colKey: 'description', + width: 200, + minWidth: '288px', + cell: { col: 'status' } + }, + { + title: '排序', + minWidth: '150px', + sorter: true, + sortType: 'all', + colKey: 'sortNum' + }, + { + title: '状态', + colKey: 'activeStatus', + width: 120, + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '草稿', + value: 0 + }, + { + label: '禁用', + value: 1 + }, + { + label: '启用', + value: 2 + }, + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '草稿' + }, + 2: { + label: '启用' + }, + 1: { + label: '禁用' + }, + } + // const status = row.activeStatus === 2 ? '1' : 0 + return h( + 'span', + { + class: `status-dot status-dot-${row.activeStatus}` + }, + statusList[row.activeStatus].label + ) + } + }, + { + title: '更新时间', + minWidth: '180px', + colKey: 'updateTime', + sorter: true, + sortType: 'all', + cell:(h, { row }) => h('span', formatDateTimeToDateTimeString(new Date(row.updateTime))) + }, + { + align: 'left', + fixed: 'right', + width: 157, + minWidth: '157px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/service/service/index.vue b/src/pages/service/service/index.vue new file mode 100644 index 0000000..9eeb589 --- /dev/null +++ b/src/pages/service/service/index.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/pages/service/serviceType/components/DialogForm.vue b/src/pages/service/serviceType/components/DialogForm.vue new file mode 100644 index 0000000..614d590 --- /dev/null +++ b/src/pages/service/serviceType/components/DialogForm.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/src/pages/service/serviceType/components/SearchForm.vue b/src/pages/service/serviceType/components/SearchForm.vue new file mode 100644 index 0000000..ac0634c --- /dev/null +++ b/src/pages/service/serviceType/components/SearchForm.vue @@ -0,0 +1,100 @@ + + + + + + + diff --git a/src/pages/service/serviceType/components/TableList.vue b/src/pages/service/serviceType/components/TableList.vue new file mode 100644 index 0000000..053daa6 --- /dev/null +++ b/src/pages/service/serviceType/components/TableList.vue @@ -0,0 +1,248 @@ + + + + + + + + diff --git a/src/pages/service/serviceType/constants.ts b/src/pages/service/serviceType/constants.ts new file mode 100644 index 0000000..4ffc64a --- /dev/null +++ b/src/pages/service/serviceType/constants.ts @@ -0,0 +1,95 @@ +import {formatDateTimeToDateTimeString } from '@/utils/date' +export const COLUMNS = [ + { + title: '服务类型编号', + align: 'left', + width: 200, + minWidth: '200px', + colKey: 'code' + }, + { title: '服务类型', width: 150, minWidth: '150px', colKey: 'name' }, + { + title: '服务类型图标', + colKey: 'serveTypeIcon', + width: 125, + minWidth: '125px', + cell: { col: 'status' } + }, + { + title: '服务类型图片', + colKey: 'img', + width: 125, + minWidth: '125px', + cell: { col: 'status' } + }, + { + title: '排序', + minWidth: '150px', + width: 150, + sorter: true, + sortType: 'all', + colKey: 'sortNum' + }, + { + title: '状态', + colKey: 'activeStatus', + width: 200, + minWidth: '120px', + // 添加筛选 + filter: { + type: 'single', + list: [ + { + label: '草稿', + value: 0 + }, + { + label: '禁用', + value: 1 + }, + { + label: '启用', + value: 2 + }, + ], + showConfirmAndReset: true + }, + cell: (h, { row }) => { + const statusList = { + 0: { + label: '草稿' + }, + 1: { + label: '禁用' + }, + 2: { + label: '启用' + }, + } + // const status = row.isActive + 1 + return h( + 'span', + { + class: `status-dot status-dot-${row.activeStatus}` + }, + statusList[row.activeStatus].label + ) + } + }, + { + title: '更新时间', + minWidth: '180px', + colKey: 'updateTime', + sorter: true, + sortType: 'all', + cell:(h, { row }) => h('span',row.updateTime ? formatDateTimeToDateTimeString(new Date(row.updateTime)) : '-') + }, + { + align: 'left', + fixed: 'right', + width: 247, + minWidth: '247px', + colKey: 'op', + title: '操作' + } +] diff --git a/src/pages/service/serviceType/index.vue b/src/pages/service/serviceType/index.vue new file mode 100644 index 0000000..29c230c --- /dev/null +++ b/src/pages/service/serviceType/index.vue @@ -0,0 +1,293 @@ + + + + diff --git a/src/pages/service/serviceType/type.ts b/src/pages/service/serviceType/type.ts new file mode 100644 index 0000000..7d271a9 --- /dev/null +++ b/src/pages/service/serviceType/type.ts @@ -0,0 +1,134 @@ +export interface loadDataType { + id: string + evaluatorInfo: { + avatar: string + nickName: string + } + isTop: number + content: string + createTime: string + statistics?: { + replyNumber: number + } + replyArray: Array<{ + replierInfo: { + avatar: string + nickName: string + } + targetReplierInfo: { + nickName: string + } + parentId: string | number + content: string + createTime: string + replierId: number + id: string + }> +} +// 定义一个对象的类型,第一层是对象,第二层是数组,第三层是对象,第一层的对象名字不确定可以是任意的字符串,第二层没有名字 +export interface MoreReplayDataType { + [key: string]: Array<{ + avatar: any + nickName: any + id: string + createTime: string + content: string + evaluationId: string + hotScore: string + ownerId: string + parentId: string | number + pictureArray: Array<{}> + replierId: string + updateTime: string + replierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + targetReplierId: string + targetReplierInfo: { + avatar: string + nickName: string + isAnonymous: number + } + }> +} +// 定义详情数据的类型 +export interface DetailDataType { + appendArray: Array<{}> // 追加评价 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreArray: Array<{ + itemId: string + score: number + itemName: string + }> // 评价评分 + scoreLevel: number // 评价评分 + statistics: { + replyNumber: number + likeNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 +} +// 分页 +export interface paginationType { + pageSizeOptions?: Array + defaultPageSize?: number + total?: number + defaultCurrent?: number // 默认当前页 + infoType?: number + targetType?: number +} +export interface dataType { + [x: string]: any + [key: number]: Array<{ + appendArray: Array<{}> // 追加评价 + content: string // 评价内容 + createTime: string // 评价时间 + evaluatorId: string // 评价人id + evaluatorInfo: { + avatar: string + nickName: string + isAnonymous: number + } // 评价人信息 + hotScore: number // 评价评分 + id: string // 评价id + isTop: number // 是否置顶 + labelIdArray: Array<{}> // 评价标签 + ownerId: string // 评价对象id + pictureArray: Array // 评价图片 + province: string // 评价人省份 + scoreArray: Array<{ + itemId: string + score: number + itemName: string + }> // 评价评分 + scoreLevel: number // 评价评分 + statistics: { + replyNumber: number + likeNumber: number + qualityScore + } + targetId: string // 评价对象id + targetName: string // 评价对象名称 + totalScore: number // 评价评分 + updateTime: string // 评价更新时间 + }> +} diff --git a/src/permission.ts b/src/permission.ts new file mode 100644 index 0000000..fe67c39 --- /dev/null +++ b/src/permission.ts @@ -0,0 +1,81 @@ +import { MessagePlugin } from 'tdesign-vue-next' +import NProgress from 'nprogress' // progress bar//每次刷新页面或者重新进入页面的时候最顶部的进度条 +import 'nprogress/nprogress.css' // progress bar style + +import { getPermissionStore, getUserStore } from '@/store' +import router from '@/router' +// 是否显示环形进度条 +NProgress.configure({ showSpinner: false }) + +router.beforeEach(async (to, from, next) => { + // 进度条开始 + NProgress.start() + + const userStore = getUserStore() + const permissionStore = getPermissionStore() + const { whiteListRouters } = permissionStore + + const { token } = userStore + + if (token && localStorage.getItem('xzb')) { + if (to.path === '/login') { + next() + return + } + // 在路由权限里需要借助roles进行过来 这块先留着后面需要改掉 + const roles = ['all'] + await permissionStore.initRoutes(roles) + next() + return + // 以下是对个人信息的效验, 由于目前改格式了 所以下面的逻辑暂时先不走 + // const { roles } = userStore; + + if (roles && roles.length > 0) { + next() + } else { + try { + // await userStore.getUserInfo(); + + const { roles } = userStore + + await permissionStore.initRoutes(roles) + + if (router.hasRoute(to.name)) { + next() + } else { + next(`/`) + } + } catch (error) { + MessagePlugin.error(error) + next({ + path: '/login', + query: { redirect: encodeURIComponent(to.fullPath) } + }) + NProgress.done() + } + } + } + /* white list router */ + if (whiteListRouters.indexOf(to.path) !== -1) { + next() + } else { + next({ + path: '/login', + query: { redirect: encodeURIComponent(to.fullPath) } + }) + } + // 进度条结束 + NProgress.done() +}) + +router.afterEach((to) => { + if (to.path === '/login') { + const userStore = getUserStore() + const permissionStore = getPermissionStore() + + userStore.logout() + permissionStore.restore() + } + // 进度条结束 + NProgress.done() +}) diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..633e817 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,90 @@ +import { + useRoute, + createRouter, + createWebHashHistory, + RouteRecordRaw +} from 'vue-router' +// 去重 +import uniq from 'lodash/uniq' + +// 自动导入modules文件夹下所有ts文件 +const modules = import.meta.globEager('./modules/**/*.ts') +// 路由暂存 +const routeModuleList: Array = [] + +Object.keys(modules).forEach((key) => { + const mod = modules[key].default || {} + const modList = Array.isArray(mod) ? [...mod] : [mod] + routeModuleList.push(...modList) +}) + +// 关于单层路由,meta 中设置 { single: true } 即可为单层路由,{ hidden: true } 即可在侧边栏隐藏该路由 + +// 存放动态路由 +export const asyncRouterList: Array = [...routeModuleList] + +// 存放固定的路由 +const defaultRouterList: Array = [ + { + path: '/login', + name: 'login', + component: () => import('@/pages/login/index.vue') + }, + { + path: '/', + redirect: '/dashboard/base' + }, + { + path: '/:w+', + name: '404Page', + redirect: '/result/404' + } +] +// 所有路由合并 +export const allRoutes = [...defaultRouterList, ...asyncRouterList] + +// 过滤一个铺平的路由数组 +export const getRoutesExpanded = () => { + const expandedRoutes = [] + + allRoutes.forEach((item) => { + if (item.meta && item.meta.expanded) { + expandedRoutes.push(item.path) + } + if (item.children && item.children.length > 0) { + item.children + .filter((child) => child.meta && child.meta.expanded) + .forEach((child: RouteRecordRaw) => { + expandedRoutes.push(item.path) + expandedRoutes.push(`${item.path}/${child.path}`) + }) + } + }) + return uniq(expandedRoutes) +} + +export const getActive = (maxLevel = 3): string => { + const route = useRoute() + if (!route.path) { + return '' + } + return route.path + .split('/') + .filter((_item: string, index: number) => index <= maxLevel && index > 0) + .map((item: string) => `/${item}`) + .join('') +} + +const router = createRouter({ + history: createWebHashHistory(), + routes: allRoutes, + scrollBehavior() { + return { + el: '#app', + top: 0, + behavior: 'smooth' + } + } +}) + +export default router diff --git a/src/router/modules/base.ts b/src/router/modules/base.ts new file mode 100644 index 0000000..3d870c2 --- /dev/null +++ b/src/router/modules/base.ts @@ -0,0 +1,20 @@ +import Layout from '@/layouts/index.vue' +import DashboardIcon from '@/assets/test-img/icon_menu_zhuye.svg' + +export default [ + { + path: '/dashboard', + component: Layout, + redirect: '/dashboard/base', + name: 'dashboard', + meta: { title: '工作台', icon: DashboardIcon, single: true }, + children: [ + { + path: 'base', + name: 'DashboardBase', + component: () => import('@/pages/dashboard/base/index.vue'), + meta: { title: '概览仪表盘' } + } + ] + } +] diff --git a/src/router/modules/components.ts b/src/router/modules/components.ts new file mode 100644 index 0000000..5fee915 --- /dev/null +++ b/src/router/modules/components.ts @@ -0,0 +1,348 @@ +import Layout from '@/layouts/index.vue' +import orderIcon from '@/assets/test-img/icon_ddgl_nor.svg' +import customIcon from '@/assets/test-img/icon_khgl_nor.svg' +import personnelIcon from '@/assets/test-img/icon_fwry_nor.svg' +import institutionIcon from '@/assets/test-img/icon_jggl_nor.svg' +import serviceIcon from '@/assets/test-img/icon_menu_service.svg' +import replyIcon from '@/assets/test-img/icon_pjgl_nor.svg' + +const normalRouter = [ + { + path: '/order', + name: 'order', + component: Layout, + redirect: '/order/orderList', + meta: { + title: '订单管理', + icon: orderIcon + }, + children: [ + { + path: 'orderList', + name: 'orderList', + component: () => import('@/pages/order/orderList/index.vue'), + meta: { + title: '订单列表', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'orderDetail/:id', + name: 'orderDetail', + component: () => import('@/pages/order/orderList/orderDetail.vue'), + meta: { + title: '订单详情' + } + }, + ] + }, + // { + // path: 'dispatchList', + // name: 'dispatchList', + // component: () => import('@/pages/order/dispatchList/index.vue'), + // meta: { + // title: '调度订单', + // // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + // singles: true + // }, + // }, + // { + // path: 'refundList', + // name: 'refundList', + // component: () => import('@/pages/order/refundList/index.vue'), + // meta: { + // title: '退款订单', + // // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + // singles: true + // }, + // }, + { + path: 'historyList', + name: 'historyList', + component: () => import('@/pages/order/historyList/index.vue'), + meta: { + title: '历史订单', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'orderDetail/:id', + name: 'historyOrderDetail', + component: () => import('@/pages/order/historyList/orderDetail.vue'), + meta: { + title: '订单详情' + } + }, + ] + }, + ] + }, + { + path: '/reply', + name: 'reply', + component: Layout, + redirect: '/reply/index', + meta: { + title: '评价管理', + icon: replyIcon, + singles: true + }, + children: [ + { + path: 'index', + name: 'replyIndex', + component: () => import('@/pages/reply/order/index.vue'), + meta: { + title: '评价管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'replyDetail/:id/:targetType', + name: 'replyDetail', + component: () => import('@/pages/reply/order/detail.vue'), + meta: { + title: '评价详情' + } + }, + { + path: 'replyObjectDetail/:id/:targetType', + name: 'replyObjectDetail', + component: () => import('@/pages/reply/order/objectDetail.vue'), + meta: { + title: '服务项详情' + } + } + ] + }, + ] + }, + { + path: '/service', + name: 'service', + component: Layout, + redirect: '/service/serviceType', + meta: { + title: '服务管理', + icon: serviceIcon + }, + children: [ + { + path: 'serviceType', + name: 'serviceType', + component: () => import('@/pages/service/serviceType/index.vue'), + meta: { + title: '服务类型管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + }, + { + path: 'ServiceList', + name: 'ServiceList', + component: () => import('@/pages/service/service/index.vue'), + meta: { + title: '服务项管理', + singles: true + }, + children: [ + { + path: 'addService', + name: 'addService', + component: () => import('@/pages/service/service/addService.vue'), + meta: { + title: '新建服务' + } + }, + { + path: 'editService/:id', + name: 'editService', + component: () => import('@/pages/service/service/addService.vue'), + meta: { + title: '编辑服务' + } + }, + ] + }, + { + path: 'region', + name: 'region', + component: () => import('@/pages/service/region/index.vue'), + meta: { + title: '区域管理', + singles: true + }, + children: [ + { + path: 'editRegion/:id/:isActive', + name: 'editRegion', + component: () => import('@/pages/service/region/editRegion.vue'), + meta: { + title: '设置服务' + } + }, + { + path:'setBusiness/:id', + name:'setBusiness', + component: () => import('@/pages/service/region/setBusiness.vue'), + meta: { + title: '调度配置' + } + } + ] + } + ] + }, + { + path: '/personnel', + name: 'personnel', + component: Layout, + redirect: '/personnel/information', + meta: { + title: '服务人员管理', + icon: personnelIcon + }, + children: [ + { + path: 'information', + name: 'personnelInformation', + component: () => import('@/pages/personnel/information/index.vue'), + meta: { + title: '服务人员信息管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'informationDetail/:id', + name: 'informationDetail', + component: () => import('@/pages/personnel/information/informationDetail.vue'), + meta: { + title: '服务人员详情' + } + }, + ] + }, + { + path: 'authentication', + name: 'personnelAuthentication', + component: () => import('@/pages/personnel/authentication/index.vue'), + meta: { + title: '服务人员认证管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + }, + ] + }, + { + path: '/institution', + name: 'institution', + component: Layout, + redirect: '/institution/information', + meta: { + title: '企业管理', + icon: institutionIcon + }, + children: [ + { + path: 'information', + name: 'institutionInformation', + component: () => import('@/pages/institution/information/index.vue'), + meta: { + title: '企业信息管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'informationDetail/:id', + name: 'institutionInformationDetail', + component: () => import('@/pages/institution/information/informationDetail.vue'), + meta: { + title: '企业详情' + } + }, + ] + }, + { + path: 'authentication', + name: 'institutionAuthentication', + component: () => import('@/pages/institution/authentication/index.vue'), + meta: { + title: '企业认证管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + } + }, + ] + }, + { + path: '/custom', + name: 'custom', + component: Layout, + redirect: '/custom/management', + meta: { + title: '客户管理', + icon: customIcon, + singles: true + }, + children: [ + { + path: 'management', + name: 'customManagement', + component: () => import('@/pages/custom/management/index.vue'), + meta: { + title: '客户列表', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + } + }, + ] + }, + { + path: '/coupon', + name: 'coupon', + component: Layout, + redirect: '/coupon/couponList', + meta: { + title: '营销管理', + icon: orderIcon + }, + children: [ + { + path: 'couponList', + name: 'couponList', + component: () => import('@/pages/coupon/couponList/index.vue'), + meta: { + title: '优惠券管理', + // 用来修改当出现子菜单在active状态不会激活父元素的active状态 + singles: true + }, + children: [ + { + path: 'addCoupon', + name: 'addCoupon', + component: () => import('@/pages/coupon/couponList/addCoupon.vue'), + meta: { + title: '新建优惠券' + } + }, + { + path: 'editCoupon/:id', + name: 'editCoupon', + component: () => import('@/pages/coupon/couponList/addCoupon.vue'), + meta: { + title: '编辑优惠券' + } + }, + ] + }, + ] + }, +] + +export default normalRouter diff --git a/src/router/modules/others.ts b/src/router/modules/others.ts new file mode 100644 index 0000000..cb5cc22 --- /dev/null +++ b/src/router/modules/others.ts @@ -0,0 +1,173 @@ +import Layout from '@/layouts/index.vue' +// import LogoutIcon from '@/assets/test-img/assets-slide-logout.svg' +// import PersonIcon from '@/assets/test-img/icon_menu_diaodu.svg' +// import GrzxIcon from '@/assets/test-img/icon_menu_grzx.svg' +import HomeIcon from '@/assets/test-img/icon_menu_diaodu.svg' +import ModelIcon from '@/assets/test-img/icon_menu_zj.svg' + +export default [ + // { + // path: '/defaults', + // name: 'defaults', + // component: Layout, + // redirect: '/defaults/serviceError', + // meta: { + // title: '缺省页', + // icon: HomeIcon + // }, + // children: [ + // { + // path: 'serviceError', + // name: 'serviceErrorPage', + // component: () => import('@/pages/default/serviceError.vue'), + // meta: { + // title: '服务器出错页' + // } + // }, + // { + // path: 'netWorkAnomaly', + // name: 'netWorkAnomalyPage', + // component: () => import('@/pages/default/netWorkAnomaly.vue'), + // meta: { + // title: '网络异常页' + // } + // }, + // { + // path: 'netWorkDisconnection', + // name: 'netWorkDisconnectionPage', + // component: () => import('@/pages/default/netWorkDisconnection.vue'), + // meta: { + // title: '网络断开页' + // } + // }, + // { + // path: '404', + // name: '404Page', + // component: () => import('@/pages/default/404.vue'), + // meta: { + // title: '访问页面不存在' + // } + // }, + // { + // path: 'forbidden', + // name: 'forbiddenPage', + // component: () => import('@/pages/default/forbidden.vue'), + // meta: { + // title: '无权限' + // } + // } + // ] + // }, + + // { + // path: '/module', + // name: 'module', + // component: Layout, + // redirect: '/module/moduleList', + // meta: { + // title: '组件', + // icon: ModelIcon + // }, + // children: [ + // { + // path: 'moduleList', + // name: 'moduleList', + // component: () => import('@/pages/module/list.vue'), + // meta: { + // title: '列表', + // singles: true + // } + // }, + // // { + // // path: 'oneList', + // // name: 'oneList', + // // component: () => import('@/pages/module/list1.vue'), + // // meta: { + // // title: '列表(可展开1)', + // // singles: true + // // } + // // }, + // // { + // // path: 'twoList', + // // name: 'twoList', + // // component: () => import('@/pages/module/list2.vue'), + // // meta: { + // // title: '列表(可展开2)', + // // singles: true + // // } + // // }, + // // { + // // path: 'tabList', + // // name: 'tabList', + // // component: () => import('@/pages/module/listTab.vue'), + // // meta: { + // // title: '列表(带Tab)', + // // singles: true + // // } + // // }, + // // { + // // path: 'treeList', + // // name: 'treeList', + // // component: () => import('@/pages/module/listTree.vue'), + // // meta: { + // // title: '列表(树状)', + // // singles: true + // // } + // // }, + // { + // path: 'popup', + // name: 'popup', + // component: () => import('@/pages/module/popup.vue'), + // meta: { + // title: '弹窗', + // singles: true + // } + // }, + // // { + // // path: 'popupTab', + // // name: 'popupTab', + // // component: () => import('@/pages/module/popupTab.vue'), + // // meta: { + // // title: '弹窗(带tab)', + // // singles: true + // // } + // // }, + // // { + // // path: 'popupFrom', + // // name: 'popupFrom', + // // component: () => import('@/pages/module/popupFrom.vue'), + // // meta: { + // // title: '弹窗(带表单)', + // // singles: true + // // } + // // }, + // { + // path: 'forbiddenTip', + // name: 'forbiddenTip', + // component: () => import('@/pages/module/forbiddenTip.vue'), + // meta: { + // title: '禁用提示', + // singles: true + // } + // }, + // { + // path: 'addData', + // name: 'addData', + // component: () => import('@/pages/module/addData.vue'), + // meta: { + // title: '动态增加数据', + // singles: true + // } + // }, + // { + // path: 'transfer', + // name: 'transfer', + // component: () => import('@/pages/module/transfer.vue'), + // meta: { + // title: '穿梭框', + // singles: true + // } + // } + // ] + // } +] diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..7b126d2 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,15 @@ +import { createPinia } from 'pinia' +import { createPersistedState } from 'pinia-plugin-persistedstate' + +const store = createPinia() +store.use(createPersistedState()) + +export { store } + +export * from './modules/notification' +export * from './modules/permission' +export * from './modules/user' +export * from './modules/setting' +export * from './modules/tabs-router' + +export default store diff --git a/src/store/modules/notification.ts b/src/store/modules/notification.ts new file mode 100644 index 0000000..98d3dee --- /dev/null +++ b/src/store/modules/notification.ts @@ -0,0 +1,80 @@ +import { defineStore } from "pinia"; +import type { NotificationItem } from "@/types/interface"; + +const msgData = [ + { + id: "123", + content: "腾讯大厦一楼改造施工项目 已通过审核!", + type: "合同动态", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "high", + }, + { + id: "124", + content: "三季度生产原材料采购项目 开票成功!", + type: "票务动态", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "low", + }, + { + id: "125", + content: + "2021-01-01 10:00的【国家电网线下签约】会议即将开始,请提前10分钟前往 会议室1 进行签到!", + type: "会议通知", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "middle", + }, + { + id: "126", + content: "一季度生产原材料采购项目 开票成功!", + type: "票务动态", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "low", + }, + { + id: "127", + content: "二季度生产原材料采购项目 开票成功!", + type: "票务动态", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "low", + }, + { + id: "128", + content: "三季度生产原材料采购项目 开票成功!", + type: "票务动态", + status: true, + collected: false, + date: "2021-01-01 08:00", + quality: "low", + }, +]; + +type MsgDataType = typeof msgData; + +export const useNotificationStore = defineStore("notification", { + state: () => ({ + msgData, + }), + getters: { + unreadMsg: (state) => + state.msgData.filter((item: NotificationItem) => item.status), + readMsg: (state) => + state.msgData.filter((item: NotificationItem) => !item.status), + }, + actions: { + setMsgData(data: MsgDataType) { + this.msgData = data; + }, + }, + persist: true, +}); diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts new file mode 100644 index 0000000..cf14926 --- /dev/null +++ b/src/store/modules/permission.ts @@ -0,0 +1,68 @@ +import { defineStore } from 'pinia' +import { RouteRecordRaw } from 'vue-router' +import router, { asyncRouterList } from '@/router' +import { store } from '@/store' + +function filterPermissionsRouters( + routes: Array, + roles: Array +) { + const res = [] + const removeRoutes = [] + routes.forEach((route) => { + const children = [] + route.children?.forEach((childRouter) => { + const roleCode = childRouter.meta?.roleCode || childRouter.name + if (roles.indexOf(roleCode) !== -1) { + children.push(childRouter) + } else { + removeRoutes.push(childRouter) + } + }) + if (children.length > 0) { + route.children = children + res.push(route) + } + }) + return { accessedRouters: res, removeRoutes } +} + +export const usePermissionStore = defineStore('permission', { + state: () => ({ + whiteListRouters: ['/login'], + routers: [], + removeRoutes: [] + }), + actions: { + async initRoutes(roles: Array) { + let accessedRouters = [] + let removeRoutes = [] + // special token + if (roles.includes('all')) { + accessedRouters = asyncRouterList + } else { + const res = filterPermissionsRouters(asyncRouterList, roles) + accessedRouters = res.accessedRouters + removeRoutes = res.removeRoutes + } + + this.routers = accessedRouters + this.removeRoutes = removeRoutes + + removeRoutes.forEach((item: RouteRecordRaw) => { + if (router.hasRoute(item.name)) { + router.removeRoute(item.name) + } + }) + }, + async restore() { + this.removeRoutes.forEach((item: RouteRecordRaw) => { + router.addRoute(item) + }) + } + } +}) + +export function getPermissionStore() { + return usePermissionStore(store) +} diff --git a/src/store/modules/setting.ts b/src/store/modules/setting.ts new file mode 100644 index 0000000..e634a65 --- /dev/null +++ b/src/store/modules/setting.ts @@ -0,0 +1,93 @@ +import { defineStore } from 'pinia' +import keys from 'lodash/keys' +import { LIGHT_CHART_COLORS, DARK_CHART_COLORS } from '@/utils/color' +import STYLE_CONFIG from '@/config/style' +import { store } from '@/store' + +const state = { + ...STYLE_CONFIG, + showSettingPanel: false, + colorList: [], // 颜色列表 + chartColors: [], + requestList: [] // 当前页面下所有的请求接口列表 +} +// TState是state的类型 +export type TState = typeof state +// 设置主题风格 +export const useSettingStore = defineStore('setting', { + state: () => state, + getters: { + showSidebarLogo: (state) => state.layout === 'side', // 侧边栏logo + showHeaderLogo: (state) => state.layout !== 'side', // 顶部栏logo + displayMode: (state) => { + if (state.mode === 'auto') { + const media = window.matchMedia('(prefers-color-scheme:black)') + if (media.matches) { + return 'black' + } + return 'light' + } + return state.mode + } + }, + actions: { + async changeMode(mode: 'black' | 'light') { + let theme = mode + const media = window.matchMedia('(prefers-color-scheme:black)') + if (media.matches) { + theme = 'black' + } else { + theme = 'light' + } + const isDarkMode = theme === 'black' + + document.documentElement.setAttribute( + 'theme-mode', + isDarkMode ? 'black' : '' + ) + // 图表颜色 + this.chartColors = isDarkMode ? DARK_CHART_COLORS : LIGHT_CHART_COLORS + }, + // 改变主题颜色 + changeBrandTheme(brandTheme: string) { + document.documentElement.setAttribute('theme-color', brandTheme) + }, + // 添加颜色 + addColor(payload: any) { + this.colorList = { ...this.colorList, ...payload } + }, + // 更新配置 + updateConfig(payload: Partial) { + // 判断点击的是哪一种配置 + for (const key in payload) { + if (payload[key] !== undefined) { + // 将点击的配置赋值给this[key] + this[key] = payload[key] + } + if (key === 'mode') { + this.changeMode(payload[key]) + } + if (key === 'brandTheme') { + this.changeBrandTheme(payload[key]) + } + } + }, + // 将当前页面所有请求添加到请求队列 + addRequestList(request) { + this.requestList.push(request) + }, + addRequestListRes(index, res) { + this.requestList[index].res = res + }, + clearRequestList() { + this.requestList = [] + } + }, + persist: { + paths: [...keys(STYLE_CONFIG), 'colorList', 'chartColors'] + } +}) + +export function getSettingStore() { + return useSettingStore(store) +} diff --git a/src/store/modules/tabs-router.ts b/src/store/modules/tabs-router.ts new file mode 100644 index 0000000..cd89b4f --- /dev/null +++ b/src/store/modules/tabs-router.ts @@ -0,0 +1,89 @@ +import { defineStore } from 'pinia' +import type { TRouterInfo, TTabRouterType } from '@/types/interface' +import { store } from '@/store' + +const homeRoute: Array = [ + { + path: '/dashboard/base', + routeIdx: 0, + title: '仪表盘', + name: 'DashboardBase', + isHome: true + } +] + +const state = { + tabRouterList: homeRoute, + isRefreshing: false +} + +// 不需要做多标签tabs页缓存的列表 值为每个页面对应的name 如 DashboardDetail +// const ignoreCacheRoutes = ['DashboardDetail']; +const ignoreCacheRoutes = ['login'] + +export const useTabsRouterStore = defineStore('tabsRouter', { + state: () => state, + getters: { + tabRouters: (state: TTabRouterType) => state.tabRouterList, + refreshing: (state: TTabRouterType) => state.isRefreshing + }, + actions: { + // 处理刷新 + toggleTabRouterAlive(routeIdx: number) { + this.isRefreshing = !this.isRefreshing + this.tabRouters[routeIdx].isAlive = !this.tabRouters[routeIdx].isAlive + }, + // 处理新增 + appendTabRouterList(newRoute: TRouterInfo) { + const needAlive = !ignoreCacheRoutes.includes(newRoute.name as string) + if ( + !this.tabRouters.find( + (route: TRouterInfo) => route.path === newRoute.path + ) + ) { + this.tabRouterList = this.tabRouterList.concat({ + ...newRoute, + isAlive: needAlive + }) + } + }, + // 处理关闭当前 + subtractCurrentTabRouter(newRoute: TRouterInfo) { + const { routeIdx } = newRoute + this.tabRouterList = this.tabRouterList + .slice(0, routeIdx) + .concat(this.tabRouterList.slice(routeIdx + 1)) + }, + // 处理关闭右侧 + subtractTabRouterBehind(newRoute: TRouterInfo) { + const { routeIdx } = newRoute + this.tabRouterList = this.tabRouterList.slice(0, routeIdx + 1) + }, + // 处理关闭左侧 + subtractTabRouterAhead(newRoute: TRouterInfo) { + const { routeIdx } = newRoute + this.tabRouterList = homeRoute.concat(this.tabRouterList.slice(routeIdx)) + }, + // 处理关闭其他 + subtractTabRouterOther(newRoute: TRouterInfo) { + const { routeIdx } = newRoute + this.tabRouterList = + routeIdx === 0 + ? homeRoute + : homeRoute.concat([this.tabRouterList?.[routeIdx]]) + }, + removeTabRouterList() { + this.tabRouterList = [] + }, + initTabRouterList(newRoutes: TRouterInfo[]) { + newRoutes?.forEach((route: TRouterInfo) => + this.appendTabRouterList(route) + ) + } + }, + persist: true +}) + +export function getTabsRouterStore() { + return useTabsRouterStore(store) +} diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..a181b45 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import { TOKEN_NAME } from '@/config/global' +import { store, usePermissionStore } from '@/store' + +const InitUserInfo = { + roles: [] +} + +export const useUserStore = defineStore('user', { + state: () => ({ + token: localStorage.getItem(TOKEN_NAME) || 'main_token', // 默认token不走权限 + userInfo: { ...InitUserInfo } + }), + getters: { + roles: (state) => { + return state.userInfo?.roles + } + }, + actions: { + async login(token: string) { + this.token = token + localStorage.setItem(TOKEN_NAME, token) + }, + async setUserInfo(data: any) { + this.userInfo = data + }, + async logout() { + localStorage.removeItem(TOKEN_NAME) + this.token = '' + this.userInfo = { ...InitUserInfo } + }, + async removeToken() { + this.token = '' + } + }, + persist: { + afterRestore: (ctx) => { + if (ctx.store.roles && ctx.store.roles.length > 0) { + const permissionStore = usePermissionStore() + permissionStore.initRoutes(ctx.store.roles) + } + } + } +}) + +export function getUserStore() { + return useUserStore(store) +} diff --git a/src/style/componentsReast/index.less b/src/style/componentsReast/index.less new file mode 100644 index 0000000..a111429 --- /dev/null +++ b/src/style/componentsReast/index.less @@ -0,0 +1,2087 @@ +@import '../font-family.less'; +@import 'reset.less'; + +li.t-menu__item { + margin-bottom: 14px !important; + + +} + +.menuBox li.t-menu__item:first-child { + margin-top: 14px !important +} + + +// 组件库的布局重写 layout rewrite +.t-layout__sider { + //左侧导航栏统一改为208px + width: 208px; + background-color: var(--color-bk10) !important; + + .yldj-sidebar-layout { + .yldj-side-nav { + width: 208px !important; + } + } + +} + +////折叠后依然为64px +.compact { + .t-layout__sider { + width: 64px; + } + + .yldj-sidebar-compact { + .yldj-side-nav { + width: 64px !important; + } + } + + //折叠状态下top和normal风格增加active和hover状态 + .normal, + .top { + + .t-menu__item.t-is-active, + .t-menu__item:hover { + background-color: var(--color-bk12) !important; + } + } +} + +.yldj-content-layout { + padding-bottom: 16px !important; +} + +.yldj-content-layout>div:last-child { + // height: 100%; +} + +//底部公司标识部分 +.companyFooter { + background-color: var(--color-bk10); + color: var(--color-bk4); + text-align: center; + padding-bottom: 16px; + font-size: 12px; +} + +.@{starter-prefix}-link { + color: var(--td-brand-color); + text-decoration: none; + margin-right: 24px; + cursor: pointer; + transition: color 0.2s cubic-bezier(0.38, 0, 0.24, 1); +} + +.@{starter-prefix} { + + // 布局元素调整 + &-wrapper { + height: 100vh; + display: flex; + flex-direction: column; + } + + &-main-wrapper { + height: 500px; + overflow: scroll; + } + + &-side-nav-layout { + &-relative { + height: 100%; + } + } + + &-content-layout { + background-color: var(--color-bk10); + padding: 24px; + padding-bottom: 52px; + } + + &-layout { + height: calc(100vh); + overflow-y: scroll; + position: relative; + + &-tabs-nav { + max-width: 100%; + position: fixed; + overflow: visible; + z-index: 100; + } + + &-tabs-nav+.@{starter-prefix}-content-layout { + padding-top: var(--td-comp-paddingTB-xxl); + } + + // 滚动条样式 + &::-webkit-scrollbar { + width: 8px; + background: var(--color-bk10); + } + + &::-webkit-scrollbar-thumb { + border-radius: 4px; + border: 2px solid transparent; + background-clip: content-box; + background-color: var(--color-border); + } + } + + &-footer-layout { + padding: 0; + margin-bottom: var(--td-comp-margin-xxl); + } + + // slideBar + &-sidebar-layout { + height: 100%; + } + + &-sidebar-compact { + width: 64px; + } + + &-sidebar-layout-side { + z-index: 100; + } + + &-side-nav { + position: fixed; + top: 0; + bottom: 0; + z-index: 200; + transition: all 0.3s; + min-height: 100%; + + + + &-mix { + top: var(--td-comp-size-xxxl); + + &-fixed { + top: var(--td-comp-size-xxxl); + z-index: 0; + } + } + + &-no-fixed { + position: relative; + z-index: 1; + } + + &-no-logo { + z-index: 1; + } + + &-logo-wrapper { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + + &:hover { + cursor: pointer; + } + } + + &-logo-t-logo { + height: 32px; + width: 100%; + } + + &-logo-tdesign-logo { + padding: 0 24px; + height: 32px; + width: 100%; + color: var(--td-text-color-primary); + } + + &-logo-normal { + color: var(--td-brand-color); + font: var(--td-font-body-large); + transition: all 0.3s; + } + } + + // 暗黑模式 + .modeStyle &-side-nav { + background-color: #000000 !important; + color: #fff; + + + &-mix { + top: var(--td-comp-size-xxxl); + + &-fixed { + top: var(--td-comp-size-xxxl); + z-index: 0; + } + } + + &-no-fixed { + position: relative; + z-index: 1; + } + + &-no-logo { + z-index: 1; + } + + &-logo-wrapper { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + + &:hover { + cursor: pointer; + } + } + + &-logo-t-logo { + height: 32px; + width: 100%; + } + + &-logo-tdesign-logo { + padding: 0 24px; + height: 32px; + width: 100%; + color: var(--td-text-color-primary); + } + + &-logo-normal { + color: var(--td-brand-color); + font: var(--td-font-body-large); + transition: all 0.3s; + } + + .t-menu__item { + .t-menu__content { + color: rgba(#fff, 0.8); + } + + .t-fake-arrow path { + stroke: rgba(#fff, 0.8); + } + + // 一级菜单hover状态 + &:hover { + .t-menu__content { + color: var(--color-bk2); + + } + + .t-icon { + path { + fill: var(--color-bk2); + } + + } + + .t-fake-arrow path { + stroke: var(--color-bk2); + } + } + + // 一级菜单当前样式设置 + &.t-is-active { + .t-menu__content { + color: var(--color-bk2); + } + + .t-icon { + path { + fill: var(--color-bk2); + } + } + + .t-fake-arrow path { + stroke: var(--color-bk2); + } + } + } + + // 二级菜单 + .menuBox { + .t-icon { + path { + fill: rgba(#fff, 0.8); + } + } + } + + // 二级菜单选中的当前样式 + .t-menu__sub { + .t-is-active { + .t-menu__content { + color: var(--color-white); + } + } + + .t-menu__item { + &:hover { + .t-menu__content { + color: var(--color-white); + } + } + } + } + } + + .modeStyle &-header-menu-fixed { + background-color: #000000 !important; + } + + // 暗黑模式 - end + &-side-nav-placeholder { + flex: 1 1 232px; + min-width: 232px; + transition: all 0.3s; + + &-hidden { + flex: 1 1 72px; + min-width: 72px; + transition: all 0.3s; + } + } +} + +.route-tabs-dropdown { + .t-icon { + margin-right: 8px; + } +} + +.logo-container { + cursor: pointer; + display: inline-flex; + height: 65px; + margin-left: 24px; +} + +.version-container { + color: var(--td-text-color-primary); + opacity: 0.4; +} + +.t-menu__popup { + z-index: 1000; +} + +.container-base-margin-top { + margin-top: 16px; +} + +//表格最大宽度 +.t-table { + // max-width: calc(100vw - 305px); +} + +.t-layout.t-layout--with-sider>.t-layout { + min-width: 1000px; + flex: 1; +} + +//左侧菜单收起后列表自适应 +.yldj-content-compact { + .t-table { + max-width: initial; + } +} + +// 表格顶部 +.t-table th { + font-family: PingFangSC; + color: var(--color-bk1); + font-weight: 500; + background-color: var(--color-tableHeader-bg) !important; + padding-left: var(--space-main); +} + +.t-table td { + padding-left: var(--space-main); +} + +.t-table--column-resizable:not(.t-table--bordered) thead.t-table__header:hover th:not(:last-child) { + border-right: none; +} + +.t-table--column-resizable:not(.t-table--bordered) thead.t-table__header:hover th { + border-top: none; +} + +// 表格行hover +.t-table--hoverable tbody tr:hover { + background-color: var(--color-bk10); +} + +.tableBoxs .t-table__body tr.t-table__empty-row:hover { + background-color: rgba(255, 255, 255, 0); +} + +.t-table td { + color: var(--color-bk3); + border-color: var(--color-border); +} + +.t-table__ellipsis { + width: auto; +} + +// 表格顶栏 +.t-table__header { + height: 50px; + border-radius: 4px 4px 0 0; + + tr { + border-radius: 4px 4px 0 0; + } +} + +.tableBoxs { + margin: var(--space-main-min) var(--space-main); + // min-width: 1000px; +} + +.statistics-wapper { + .newBox { + padding-top: 20px; + } + + .formBox { + border-bottom: 0 none; + } +} + +// 删除操作按钮 +.btn-dl { + color: var(--color-error); + cursor: pointer; + + &:hover { + // 透明度 + color: var(--color-error1); + } + + // 点击后改变颜色 + &:active { + color: var(--color-error2); + } + + // 禁用的颜色 + &.disabled { + color: var(--color-error3); + cursor: not-allowed; + } +} + +.status-dot { + &::before { + content: ''; + width: 6px; + height: 6px; + border-radius: 50%; + display: inline-block; + margin-right: 8px; + // 居中 + vertical-align: middle; + } +} + +// 状态0 +.status-dot-0 { + &::before { + background-color: #0398FF; + } +} + +// 状态1 +.status-dot-1 { + &::before { + background-color: var(--color-error); + } +} + +.status-dot-2 { + &::before { + background-color: var(--color-success); + } +} + +.status-dot-3 { + &::before { + background-color: var(--color-bk4); + } +} + +.t-date-range-picker { + width: 100%; +} + +// 操作区域文字按钮右分割线 +.btn-split-right { + border-right: 1px solid #e8e8e8; +} + +// 操作区域文字按钮左分割线 +.btn-split-left { + border-left: 1px solid #e8e8e8; +} + +// 排序箭头 + +// 上箭头 +// .t-table__double-icons .t-table-sort-asc { +// background-image: url(@/assets/test-img/Shape.svg); +// width: 11px; +// height: 11px; +// background-repeat: no-repeat; +// background-position: center; +// background-size: 100% 100%; +// // 背景旋转180度 +// transform: rotate(0deg); + +// .t-icon { +// display: none; +// } + +// &:hover { +// background-image: url(@/assets/test-img/Shapehover.svg); +// } + +// // 点击后改变颜色 +// &:active { +// background-image: url(@/assets/test-img/Shapehover.svg); +// } + +// &:focus { +// background-image: url(@/assets/test-img/Shapehover.svg); +// } +// } + +// 选中状态颜色 +// .t-table__sort-icon--active { +// background-image: url(@/assets/test-img/Shapehover.svg) !important; +// } + +// 下箭头 +// .t-table__double-icons .t-table-sort-desc { +// background-image: url(@/assets/test-img/Shape.svg); +// width: 11px; +// height: 11px; +// background-repeat: no-repeat; +// background-position: center; +// background-size: 100% 100%; +// // 背景旋转180度 +// transform: rotate(180deg); + +// .t-icon { +// display: none; +// } + +// &:hover { +// background-image: url(@/assets/test-img/Shapehover.svg); +// } + +// // 点击后改变颜色 +// &:active { +// background-image: url(@/assets/test-img/Shapehover.svg) !important; +// } + +// &:focus { +// background-image: url(@/assets/test-img/Shapehover.svg); +// } +// } + + +// 筛选按钮 +.t-table__filter-icon { + + // hover时改变颜色 + &:hover, + &.active { + color: var(--color-main); + } +} + +// 表头标签 +.t-form__label { + color: var(--color-bk2); + padding-right: 0; +} + +// 表单输入框 +.t-input__inner { + color: var(--color-bk1); +} + +// 表单placeholder颜色 +.t-input__inner::-webkit-input-placeholder { + color: var(--color-bk4); +} + +// 整体按钮 +button { + // 去除按钮的边框 + border: none; + // 文字上下左右居中 + display: flex; + align-items: center; + justify-content: center; +} + +.pageInfo { + color: var(--color-bk4); + margin-top: -28px; + padding: 0 20px 7px 0; +} + +.paginationBox { + padding: 16px 0 20px; +} + +// 分页器选中状态 +.t-table__pagination { + padding: var(--space-main) 0 var(--space-main) var(--space-main); +} + +.t-pagination__number.t-is-current { + border: 1px solid var(--color-main); + color: var(--color-white); + background-color: var(--color-main); +} + +// 分页器边框 +.t-pagination__number { + border: 1px solid #dcdcdc; + color: var(--color-bk1); + + &:hover { + color: var(--color-main); + border-color: var(--color-main); + } + + &:active { + color: var(--color-white); + background-color: var(--color-main); + } + + &.t-is-current { + color: var(--color-white); + } +} + +// 翻页前进后退按钮 +.t-pagination__btn { + color: var(--color-bk1); +} + +// 日期选择器选中状态 +.t-date-picker__cell--active .t-date-picker__cell-inner { + color: rgba(255, 255, 255, 0.9) !important; + background-color: var(--color-main) !important; + border-radius: 3px; +} + +.t-date-picker__cell:hover .t-date-picker__cell-inner { + box-shadow: inset 0 0 0 1px var(--color-main) !important; +} +// hover时区间颜色 +.t-date-picker__cell--hover-highlight::after{ + background-color: #fff0ed; +} + +// 日期选择器当日样式 +.t-date-picker__cell--now .t-date-picker__cell-inner { + color: var(--color-main); + background-color: #fff0ed; +} + +// 日期区间背景样式 +.t-date-picker__cell--highlight::before { + background-color: #fff0ed; +} + +// 日期区间字体样式 +.t-date-picker__cell--highlight .t-date-picker__cell-inner { + color: var(--color-main); +} +.t-date-picker__cell--highlight{ + .t-date-picker__cell--hover-highlight::after{ + background-color: #0000000f; + } + .t-date-picker__cell-inner{ + color: var(--color-bk1); + } +} +// 日期区间选择器tag +.t-button .t-button__text { + color: var(--color-main); +} + +// 日期时间选择器日期 +.t-date-picker__cell-inner { + color: var(--color-bk1); +} + +// 日期时间选择器日期未上月和下月 +.t-date-picker__cell--additional .t-date-picker__cell-inner { + color: var(--color-bk6); +} + +// 日期时间选择器日期hover时框线颜色 +.t-date-picker__cell--active .t-date-picker__cell-inner { + box-shadow: inset 0 0 0 1px var(--color-main); +} + +// 列表筛选框按钮 +.t-table__filter--bottom-buttons { + .t-button { + .t-button__text { + color: var(--color-bk1); + // 设置最后一个按钮的颜色 + } + } + + // 设置第二个t-button下的t-button__text的颜色 + .t-button:nth-child(2) .t-button__text { + color: rgba(255, 255, 255, 0.9); + } +} + +// 弹窗底部按钮 +.t-dialog__footer { + .t-button { + .t-button__text { + color: var(--color-bk1); + // 设置最后一个按钮的颜色 + } + } + + // 设置第二个t-button下的t-button__text的颜色 + .t-button:nth-child(2) .t-button__text { + color: rgba(255, 255, 255, 0.9); + } +} + +.formFooter { + .t-form__controls-content { + display: block; + text-align: right; + + button { + display: inline-block; + margin-left: 16px; + } + } +} + +// 弹窗标题 +.t-dialog--default { + padding: 0; +} + +// 弹窗头部 +.t-dialog__header { + height: 60px; + background: var(--color-bk10); + border-radius: 8px 8px 0 0; + padding: 19.5px 25px 19.5px 24px; + + // 通知提示框标题 + .t-dialog__header-content { + font-family: PingFangSC-SNaNpxibold; + font-weight: 600; + font-size: 16px; + color: var(--color-black); + } + + .t-dialog__close { + color: var(--color-bk3); + width: 28px; + height: 28px; + + // 将svg的宽高设置为24px + svg { + width: 24px; + height: 24px; + } + + &:hover { + background: #e1e6f0; + } + + &:active { + background: #cdd3e0; + } + } +} + +//弹层底部按钮 +.t-dialog__footer { + padding: 0 40px 40px; +} + +.dialog-footer { + padding: 8px 0 32px; + text-align: right; + + &.scrollFooter { + padding-top: 32px; + } + + button { + display: inline-block; + margin-left: 16px; + } +} + +// 删除警告弹窗样式 +.baseDialog { + .t-dialog__header { + height: auto; + background: none; + padding: 28px 32px 0; + } + + .t-dialog__close { + margin: -6px -9px 0 0; + } + + .t-dialog__body { + padding-top: 16px; + padding-bottom: 0; + } + + .dialog-footer { + padding: 24px 0 32px; + } +} + +.t-dialog__body { + padding: 32px; + color: var(--color-bk3); +} + +.t-form-item__description { + margin-bottom: 32px; +} + +.t-form__item.t-form__item-with-extra { + margin-bottom: 32px; +} + +// 通知提示框内容 +.t-dialog__body__icon { + padding: 8px 24px 24px 56px; + font-weight: 400; + font-size: 14px; + color: var(--color-bk3); +} + +// 上传图片框 +.t-upload__card-content, +.t-upload__card-container { + width: 120px; + height: 120px; +} + +.t-upload__card-content { + border: 0 none; +} + +// 图片内容物 +.t-upload__card-image { + max-width: 112%; + max-height: 112%; +} + +// 文本输入框 +.t-textarea__inner { + color: var(--color-bk1); +} + +// 文本输入框placeholder +.t-textarea__inner::-webkit-input-placeholder { + color: var(--color-bk4); +} +.t-textarea .t-resize-none{ + // 禁止左右拖拽,允许上下拖拽 + resize: vertical; +} +.t-textarea__limit{ + bottom: auto; + right: 0; +} + +// 上传图片按钮样式 +.upbtn { + width: 112px; + height: 32px; + background: #ffffff; + border: 1px solid #dcdcdc; + border-radius: 3px; + color: var(--color-bk1); + padding: 5px 16px; + margin-top: 10px; + // 文字上下居中 + line-height: 32px; + margin-left: 18.5px; + margin-top: auto; + bottom: 63px;; + cursor: pointer; + outline: transparent; + + &:hover { + color: var(--color-main); + border-color: var(--color-main); + + span { + svg { + width: 16px; + + // 修改svg的颜色 + path { + fill: var(--color-main); + } + } + } + } + + // 按下时 + &:active { + color: var(--color-active); + border-color: var(--color-active); + + span { + svg { + width: 16px; + + // 修改svg的颜色 + path { + fill: var(--color-active); + } + } + } + } + + span { + // 居中 + display: block; + vertical-align: middle; + line-height: 12px; + margin-right: 8px; + + svg { + width: 16px; + + // 修改svg的颜色 + path { + fill: var(--color-bk1); + } + } + } +} + +// 输入框 +// 输入框hover +.t-input:hover { + border-color: var(--color-main); +} + +// 输入框focus +.t-input--focused { + border-color: var(--color-main); + box-shadow: 0 0 0 2px #FFD8D2; + &:hover{ + border-color: #F54247; + } +} + +// 下拉选择器 +// 下拉选择器选中状态 +.t-select-option.t-is-selected { + background: #FFEFEC; + color: var(--color-main); + &:hover{ + background: #FFEFEC; + } +} +// 下拉选择器hover状态 +.t-select-option:not(.t-is-disabled):not(.t-is-selected):hover { + background: #f3f3f3; +} + +// 组件iconfont颜色 +.t-input .t-input__prefix>.t-icon { + color: var(--color-main); +} + +// 步骤条组件颜色 +// 头部圆头颜色 +.t-steps .t-steps-item--process .t-steps-item__icon--number { + background: var(--color-main); + border-color: var(--color-main); + width: 24px; + height: 24px; +} + +.t-steps .t-steps-item__icon { + margin-right: 14px; +} + +// 头部文字颜色 +.t-steps .t-steps-item--process .t-steps-item__title { + color: var(--color-main); +} + +// 未选中状态文字提示颜色 +.t-steps .t-steps-item__description { + color: var(--color-bk4); +} + +// 步骤条未选中状态标题颜色 +.t-steps .t-steps-item__title { + color: var(--color-bk4); +} + +// 步骤条选中状态文字提示颜色 +.t-steps .t-steps-item--process .t-steps-item__description { + color: var(--color-bk3); +} + +.t-steps--vertical.t-steps--dot-anchor .t-steps-item--finish .t-steps-item__icon { + border-color: var(--color-main); +} + +.t-steps--vertical.t-steps--dot-anchor.t-steps--positive .t-steps-item--finish:not(:last-child)::before { + border-right-color: var(--color-main); + color: var(--color-main); +} + +.t-steps--vertical.t-steps--dot-anchor .t-steps-item--process .t-steps-item__icon { + border-color: var(--color-main); + background: var(--color-main); +} + +// 折叠 +// 折叠默认背景色 +.t-collapse { + border: 0 none; + background: none; + + .t-collapse-panel__wrapper .t-collapse-panel__body { + background: none; + border: 0 none; + } +} + +// layout侧边栏图标大小 +.t-default-menu .t-menu__item .t-icon { + width: 28px; + height: 28px; +} + +// 侧边栏选中状态 +.t-default-menu .t-menu__item.t-is-opened.t-is-active { + color: var(--color-black); + // background-color: var(--color-bk11); +} + +.t-default-menu .t-menu__item.t-is-opened { + margin-bottom: 0; + + &:hover { + // background-color: transparent !important; + color: var(--color-main); + } +} + +// 侧边栏未选中状态 +.t-menu__item { + color: rgba(0, 0, 0, 0.55); + + div { + display: none !important; + } +} + +// 下层被选中状态(二级菜单) +.t-default-menu .t-menu__item.t-submenu__item.t-is-active:not(.t-is-opened) { + background: var(--color-bk12); + color: var(--color-main); + border-right: 4px solid var(--color-main) !important; +} +.yldj-sidebar-compact .t-default-menu .t-menu__item.t-is-active:not(.t-is-opened){ + border-right: none; +} +.t-default-menu .t-menu__item.t-is-active:not(.t-is-opened){ + background: var(--color-bk12); + color: var(--color-main); + border-right: 4px solid var(--color-main); + height: 43px; + .t-menu__content { + font-weight: 500; + color: var(--color-main) !important; + } + + .t-icon { + rect{ + stroke: var(--color-main); + fill: #fff; + } + path { + stroke: var(--color-main); + fill: #fff; + } + } +} +.t-default-menu .t-submenu .menuBox .t-menu__item.t-is-active:not(.t-is-opened) { + background: var(--color-bk12); + border-radius: 0%; + height: 43px; +} +// 下层被选中状态(一级菜单) +.t-default-menu .t-submenu .t-menu__item.t-is-active:not(.t-is-opened) { + background-color: transparent; + border-right: none; + + .t-menu__content { + font-weight: 500; + color: var(--color-main) !important; + } + + .t-icon { + path { + fill: white; + stroke: var(--color-main); + } + } +} + +.menuBox>li.t-menu__item.t-is-active:not(.t-submenu__item) .t-menu__content { + color: var(--color-black); +} + + +// 添加侧边线 +.t-submenu .t-is-opened { + div { + li { + position: relative; + } + } +} + +.t-default-menu .t-menu__item:hover:not(.t-is-active):not(.t-is-disabled) { + background-color: transparent; + .t-menu__content{ + color: var(--color-main); + } + + + svg { + rect{ + stroke: var(--color-main); + fill: #fff; + } + path { + stroke: var(--color-main); + fill: #fff; + } + } + + .t-fake-arrow { + path { + color: var(--color-main); + fill: none; + } + } +} + +.t-default-menu .t-menu__item.t-is-opened { + &::before { + display: none; + } +} + +// 收起状态下的侧边栏 +.t-menu .t-submenu { + margin-bottom: 14px; +} + +// 侧边栏选中样式 +.t-menu__popup .t-menu__item.t-is-active { + background-color: var(--color-bk12); + height: 28px; + color: var(--color-main); + .t-menu__content{ + color: var(--color-main); + } +} + +.t-menu__item.t-menu__item-spacer.t-menu__item-spacer--right.t-is-opened.t-is-active { + // background-color: var(--color-white); + height: 43px; + color: var(--color-main); + + .t-menu__content { + color: var(--color-main); + } + + .t-icon { + path { + stroke: var(--color-main); + fill: white; + } + rect{ + stroke: var(--color-main); + fill: white; + } + } +} + +// 侧边栏未选中样式 +.t-menu__popup .t-menu__item { + color: var(--color-bk1); +} + +.t-menu__popup.t-is-vertical .t-menu__item { + height: 28px; + margin: 0; + padding-left: 6px; + margin-bottom: 2px; +} + +.t-menu__popup.t-is-vertical.t-is-opened { + margin-left: 8px !important; +} + +.t-menu__item:hover:not(.t-is-active):not(.t-is-opened):not(.t-is-disabled) { + background-color: transparent; + .t-menu__content{ + color: var(--color-main); + } +} + +.t-default-menu .t-menu__item:first-child { + margin-top: 4px; +} + +.t-default-menu .t-menu__item { + padding-left: 22px; + height: 43px; +} + +// 表格操作栏最小宽 +// .t-table--column-fixed .t-table__cell--fixed-right { +// min-width: 157px; +// } + +// 多选项当前色和背景色 +.t-checkbox__input { + border: 1px solid var(--color-border); //多选框边框线 + + &:hover { + border-color: var(--color-main); + } +} + +.t-checkbox { + .t-checkbox__input { + &:hover { + border-color: #0398FF; + } + } +} + +.t-checkbox.t-is-checked .t-checkbox__input { + border-color: #0398FF; + background-color: #0398FF; +} + +// 选中多选框颜色 +.t-checkbox.t-is-indeterminate .t-checkbox__input { + border-color: var(--color-main); + background-color: var(--color-main); +} + +// 提示语样式 +.t-tooltip--default .t-popup__content { + width: 334px; + max-height: 163px; + font-size: 12px; + color: var(--color-bk1); + padding: 14px 16px; + line-height: 17px; + background: var(--color-white); + box-shadow: 0 0 8px 1px rgba(34, 40, 51, 0.12); +} + +.t-tooltip--default[data-popper-placement^='bottom'] .t-popup__arrow:before { + box-shadow: -1px 0 20px 1px rgba(34, 40, 51, 0.12); +} + +.t-tooltip--default[data-popper-placement^='top'] .t-popup__arrow:before { + box-shadow: -1px 0 20px 1px rgba(34, 40, 51, 0.12); +} + +//tab切换样式 +.t-tabs { + padding-bottom: 24px; + + .t-tabs__nav-container { + &.t-is-top { + &::after { + background-color: var(--color-border); + } + } + } + + .t-tabs__bar { + background-color: var(--color-main); + height: 2px; + } + + .t-tabs__nav-item.t-is-active { + color: var(--color-main); + text-shadow: none; + } + + .t-tabs__nav-item { + color: var(--color-bk2); + } + + .t-tabs__nav-item-wrapper { + padding: 0 10px; + + &>div { + display: none; + } + } + + .t-tabs__nav-scroll { + z-index: 9; + } +} + +.t-tabs__nav-item:not(.t-is-disabled):not(.t-is-active):hover .t-tabs__nav-item-wrapper { + background-color: rgba(255, 255, 255, 0); +} + +// 字数控制 +// 每10字 +.ellipsisHidden2, +.ellipsisHidden2 span { + max-height: 52px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.ellipsisHidden2, +.ellipsisHidden2 .span { + max-height: 120px; + -webkit-line-clamp: 2; +} + +// 正常禁用小标识 +.iconTip { + display: inline-block; + width: 5px; + height: 5px; + border-radius: 50%; + vertical-align: middle; + margin-right: 6px; +} + +// 正常 +.normalIcon { + background: var(--color-success); +} + +// 禁用 +.forbidIcon { + background: var(--color-error2); +} + +// 小图点击放大 +.tdesign-demo-image-viewer-wrapper { + display: flex; +} + +.tdesign-demo-image-viewer__ui-image { + width: 32px; + height: 32px; + display: inline-flex; + position: relative; + justify-content: center; + align-items: center; + border-radius: var(--td-radius-small); + overflow: hidden; +} + +.tdesign-demo-image-viewer__ui-image--hover { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 0; + opacity: 0; + background-color: rgba(0, 0, 0, 0.6); + color: var(--td-text-color-anti); + line-height: 22px; + transition: 0.2s; +} + +.tdesign-demo-image-viewer__ui-image:hover .tdesign-demo-image-viewer__ui-image--hover { + opacity: 1; + cursor: pointer; +} + +.tdesign-demo-image-viewer__ui-image--img { + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + cursor: pointer; + position: absolute; +} + +.tdesign-demo-image-viewer__ui-image--footer { + padding: 0 16px; + height: 56px; + width: 100%; + line-height: 56px; + font-size: 16px; + position: absolute; + bottom: 0; + color: var(--td-text-color-anti); + background-image: linear-gradient(0deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0) 100%); + display: flex; + box-sizing: border-box; +} + +.tdesign-demo-image-viewer__ui-image--title { + flex: 1; +} + +.tdesign-demo-popup__reference { + margin-left: 16px; +} + +.tdesign-demo-image-viewer__ui-image--icons .tdesign-demo-icon { + cursor: pointer; +} + +.tdesign-demo-image-viewer__error { + background-color: var(--td-bg-color-component-disabled); + border-radius: 4px; + color: var(--td-text-color-disabled); + cursor: inherit; +} + +.tdesign-demo-image-viewer__error--content { + position: absolute; + height: 100%; + width: 100%; + display: flex; + flex-wrap: wrap; + flex-direction: column; + justify-content: center; + align-items: center; + align-content: center; + font-size: 14px; +} + +// 新增按钮布局 +.newBox { + margin-bottom: 16px; + display: flex; + + .newBoxbutton { + margin-left: auto; + width: 88px !important; + } +} + +.t-table .t-table__sort-column { + // 取消背景色 + background-color: transparent; +} + +// 弹窗 +.t-dialog__ctx .t-dialog__wrap { + overflow: initial; +} + +// 步进条颜色 +.t-steps--horizontal.t-steps--default-anchor .t-steps-item--finish:not(:last-child) .t-steps-item__title:after { + border-bottom-color: var(--color-main); + color: var(--color-main); +} + +.demo-select-base { + min-width: 90px; + width: 18.7%; + + .t-input.t-is-readonly { + // 取消右侧两角的圆角 + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: none; + } +} + +.account { + min-width: 390px; + height: 32px; + width: 81.3%; + + .t-input { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +} + +// 整体列表搜索 +.formBox { + padding: 0 12px var(--space-main); + margin-bottom: 24px; + + .t-form__item { + width: 100%; + } + + .t-form:not(.t-form-inline) .t-form__item:last-of-type { + margin-top: var(--space-main); + padding: 0 15px !important; + } + + .t-form .searchBtn { + margin-top: var(--space-main); + } + + .t-col { + button { + margin: 0 8px; + &:first-child { + margin-left: 15px; + } + } + } + + .searchBtn { + + button { + display: inline-block; + } + } + + .t-row { + &>div.t-col { + max-width: 33.3%; + display: inline-block; + } + } +} + +.formBox, +.searchBox { + .t-select__wrap { + height: 32px; + } +} +.timeSplit{ + display: flex; + align-items: center; + flex-direction: column +} +// 新增按钮布局 +.newAdd { + padding: var(--space-main-min) var(--space-main); +} + +// 统计信息 +.dataBox { + padding: 32px 0; + + ul { + display: flex; + align-items: center; + padding-right: 20px; + + li { + display: flex; + flex: 1; + padding-left: 20px; + justify-content: center; + + .img { + width: 34px; + height: 34px; + display: inline-block; + margin-right: 16px; + margin: 6px 16px 0 0; + } + + .text { + line-height: 22px; + color: var(--color-bk4); + min-width: 140px; + + p { + &:first-child { + font-size: 34px; + line-height: 48px; + color: var(--color-black); + font-weight: 600; + } + } + } + + &:nth-child(1) { + .img { + background: url(@/assets/icon-shangjia1.png) no-repeat; + background-size: contain; + } + } + + &:nth-child(2) { + .img { + background: url(@/assets/icon-shangjia2.png) no-repeat; + background-size: contain; + } + } + + &:nth-child(3) { + .img { + background: url(@/assets/icon-shangjia3.png) no-repeat; + background-size: contain; + } + } + + &:nth-child(4) { + .img { + background: url(@/assets/icon-shangjia4.png) no-repeat; + background-size: contain; + } + } + + &:nth-child(5) { + .img { + background: url(@/assets/icon-shangjia5.png) no-repeat; + background-size: contain; + } + } + &:nth-child(6) { + .img { + background: url(@/assets/icon-shangjia6.png) no-repeat; + background-size: contain; + } + } + } + } +} + +// 树状图选中样式 +.t-tree--hoverable .t-tree__label:not(.t-is-active):not(.t-is-checked):hover, +.t-is-active .t-tree__label { + background-color: transparent; + + span { + span { + color: var(--color-main) !important; + } + } +} + +// 去除时间选择器选择时的底色 +// .t-range-input-popup--visible .t-range-input .t-input.t-is-focused, +// .t-range-input__inner .t-input:hover { +// background-color: transparent; +// } + +// +.t-card--bordered { + border: 0 none; +} + +.t-card, +.secondary-notification { + border-radius: 2px !important; +} + +//按钮点击,hover样式 +.btn-hover-active { + cursor: pointer; + + &:hover { + background: #eaeaea; + border-radius: 3px; + } + + &:active { + background: #eaeaea; + border-radius: 3px; + } +} + +//列表空白内容高度自适应 +.t-table__empty { + height: 100%; +} + +// 筛选弹框样式 +.t-popup[data-popper-placement^="bottom"] .t-popup__content--arrow { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.10), 0 8px 10px 1px rgba(0, 0, 0, 0.06), 0 3px 14px 2px rgba(0, 0, 0, 0.05); + + .t-button--variant-base:not(.t-is-disabled):not(.t-button--ghost) { + display: block; + width: 100%; + color: var(--color-bk1); + background: var(--color-bk7); + border-radius: 2px; + text-align: center; + cursor: pointer; + user-select: none; + + div { + display: none !important; + } + + &:hover { + background-color: var(--color-bk8); + } + + &:active { + background-color: var(--color-bk8); + } + } + + .t-button--variant-base.t-button--theme-primary:not(.t-is-disabled):not(.t-button--ghost) { + background: var(--color-main); + border-color: var(--color-main); + + div { + display: none !important; + } + + &:hover { + background-color: var(--color-error1);; + } + + &:active { + background-color: var(--color-error2);; + } + } +} + +.t-default-menu .t-menu__sub .t-menu__item { + padding-left: 63px; + + div { + display: none; + } +} + +.t-input .t-input__suffix>.t-icon:hover { + color: var(--td-text-color-placeholder); +} + +// 右侧固定的阴影 +.t-table__content--scrollable-to-right .t-table__cell--fixed-right-first::after { + left: -10px; + border: none; + width: 10px; + height: 100%; + transform: scaleX(-1); + background-image: linear-gradient(270deg, rgba(255, 255, 255, 0.00) 0%, rgba(99, 97, 96, 0.10) 100%); +} + +//重置左侧菜单收起后hover菜单右侧出现的子菜单popup样式 +.t-menu__popup { + width: auto !important; + + .t-menu__item { + padding: 0 20px !important; + } +} + +// 媒体查询 + +/* 当页面宽度是最小1580.最大1740的时候例表的搜索表单改变列表宽度,暂时一行最多4个 + 按钮 */ +@media screen and (min-width:1705px) and (max-width:2051px) { + .formBox { + .t-row { + &>div.t-col { + max-width: calc(25% - 40.5px) !important; + + &:last-child { + max-width: 159px !important; + } + } + } + } +} + +/* 当页面宽度是最小1741.最大2051的时候例表的搜索表单改变列表宽度,暂时一行最多5个 + 按钮 */ +// @media screen and (min-width:1741px) and (max-width:2051px) { +// .formBox { +// .t-row { +// &>div.t-col { +// max-width: calc(25% - 38px) !important; +// &:last-child { +// max-width: 152px !important; +// } +// } +// } +// } +// } + +/* 当页面宽度是最小2052.最大2362的时候例表的搜索表单改变列表宽度,暂时一行最多6个 */ +@media screen and (min-width:2052px) and (max-width:2673px) { + .formBox { + .t-row { + &>div.t-col { + max-width: calc(20% - 30.4px) !important; + + &:last-child { + max-width: 159px !important; + } + } + } + } +} + +/* 当页面宽度是最小2363.最大2673的时候例表的搜索表单改变列表宽度,暂时一行最多7个 */ +// @media screen and (min-width:2363px) and (max-width:2673px) { +// .formBox { +// .t-row { +// &>div.t-col { +// max-width: calc(14.29% - 21.81px) !important; +// &:last-child { +// max-width: 152px !important; +// } +// } +// } +// } +// } +// 修改hover状态下的颜色 +.t-tree__icon:not(:empty):hover { + background-color: transparent; +} + +// radio框选中的颜色 +.t-radio.t-is-checked .t-radio__input { + border-color: #0398FF; + + &:after { + background-color: #0398FF; + } +} + +// radio框hover的颜色 +.t-radio:hover .t-radio__input { + border-color: #0398FF; +} + +// 表单内的带单位的输入框的文字位置样式 +.company { + margin-right: 2px; + z-index: 100; + color: var(--color-black); +} + +// 日期框hover的颜色 +.t-range-input:hover { + border-color: var(--color-main); +} + +.t-range-input-popup--visible .t-range-input { + border-color: var(--color-main); +} + +.t-breadcrumb--text-overflow .t-breadcrumb__inner { + &:hover { + color: var(--color-main); + } + + &:active { + color: var(--color-active); + animation: none; + } +} + +.t-textarea__inner:hover { + border-color: var(--color-main); +} + +.t-textarea__inner:focus { + border-color: var(--color-main); + box-shadow: none; +} + +.t-message.t-is-success>.t-icon, +.t-message.t-is-success>[data-t-icon]>.t-icon, +.t-message.t-is-success .t-loading { + color: var(--color-success); + + path { + fill-opacity: 1; + } +} + +.t-message.t-is-warning>.t-icon, +.t-message.t-is-warning>[data-t-icon]>.t-icon, +.t-message.t-is-warning .t-loading { + color: var(--color-warning); + + path { + fill-opacity: 1; + } +} + +.t-message.t-is-error>.t-icon, +.t-message.t-is-error>[data-t-icon]>.t-icon, +.t-message.t-is-error .t-loading { + color: var(--color-error); + + path { + fill-opacity: 1; + } +} + +// 步骤条目前无点击功能,先不出小手 +.t-steps .t-steps-item__inner.t-steps-item--clickable, +.t-steps .t-steps-item { + cursor: default; +} + +// 次级联选框的样式 +.t-cascader__item.t-is-expanded { + color: var(--color-main); + background-color: var(--color-bk12); +} + +.t-cascader__item.t-is-expanded .t-icon-chevron-right { + color: var(--color-main); +} + +.t-select .t-fake-arrow--active { + color: var(--color-main); +} + +.t-input:focus { + border-color: var(--color-main); + box-shadow: none; +} + + +.t-range-input-popup--visible .t-range-input { + border-color: var(--color-main); + box-shadow: none; +} + +.t-range-input-popup--visible .t-range-input .t-icon-time, +.t-range-input-popup--visible .t-range-input .t-icon-calendar { + color: var(--color-main); +} + +.t-menu__popup-wrapper { + padding-left: 0; + overflow-y: auto; +} + +.t-menu__content { + color: var(--color-bk3); +} +.t-table__filter-icon-wrap{ + .t-is-focus{ + path{ + fill: var(--color-main); + } + } +} +.t-table__sort-icon--active{ + color: var(--color-main); +} +.t-table__sort-icon .t-is-focus, .t-table__sort-icon.t-is-focus, .t-table__sort-icon:hover{ + color: var(--color-main); +} +.t-cascader__item:hover:not(.t-is-expanded):not(.t-is-disabled){ + background-color: var(--color-bk12); +} +.t-select__wrap{ + height: 32px; +} +.t-upload__card-container:hover{ + border-color: var(--color-main); +} +// 去除底部数据数量 +.t-pagination__total{ + display: none; +} +.t-cascader__item.t-is-selected{ + color: var(--color-main); +} +.t-dialog__header .t-dialog__close:hover{ + background-color: #eaeaea; +} +// 两个radio框的间距 +.t-radio-group .t-radio{ + margin-right: 16px; +} +.yldj-side-nav-logo-wrapper{ + height: 130px; +} +// 下拉框展开 +.t-cascader .t-fake-arrow--active{ + color: var(--color-main); +} +.t-steps .t-steps-item--finish .t-steps-item__icon--number{ + border-color: var(--color-main); +} +.t-steps .t-steps-item--finish .t-steps-item__icon .t-icon{ + color: var(--color-main); +} +.t-breadcrumb__item .t-link:hover{ + color: var(--color-main); +} +.t-input .t-input__suffix:not(:empty){ + color: var(--color-bk3); +} +.t-time-picker__panel-body-scroll-item.t-is-current{ + color: var(--color-main); + background-color: #fff0ed; +} +.t-button--variant-base.t-button--theme-primary.t-is-disabled{ + background-color: #fff0ed; +} +.t-button--variant-base.t-button--theme-primary{ + background-color: #fff0ed; + border: none; + div{ + display: none; + } + &:hover{ + background-color: var(--color-bk12); + } + &:active{ + background-color: var(--color-main); + span{ + color: #fff; + } + } +} \ No newline at end of file diff --git a/src/style/componentsReast/reset.less b/src/style/componentsReast/reset.less new file mode 100644 index 0000000..348afa4 --- /dev/null +++ b/src/style/componentsReast/reset.less @@ -0,0 +1,40 @@ +// 对部分样式进行重置 +body { + color: var(--td-text-color-secondary); + font-family: -apple-system, BlinkMacSystemFont, var(--td-font-family); + font: var(--td-font-body-medium); + -webkit-font-smoothing: antialiased; + padding: 0; + margin: 0; +} + +pre { + font-family: var(--td-font-family); +} + +ul, +dl, +li, +dd, +dt { + margin: 0; + padding: 0; + list-style: none; +} + +figure, +h1, +h2, +h3, +h4, +h5, +h6, +p { + margin: 0; +} + +* { + box-sizing: border-box; +} + + diff --git a/src/style/font-family.less b/src/style/font-family.less new file mode 100644 index 0000000..c639e25 --- /dev/null +++ b/src/style/font-family.less @@ -0,0 +1,6 @@ +@font-face { + font-family: 'TencentSansW7'; + src: url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAusAA4AAAAAEJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALkAAAABwAAAAchqPqzUdERUYAAAtwAAAAHgAAAB4AKQAbT1MvMgAAAbgAAABZAAAAYGmceoNjbWFwAAACYAAAAJcAAAHsPmfPZmdhc3AAAAtkAAAADAAAAAwACAAbZ2x5ZgAAAywAAAW8AAAG/Ivn/ztoZWFkAAABRAAAADYAAAA2E+AL5GhoZWEAAAF8AAAAIAAAACQIawJ9aG10eAAAAhQAAABMAAAATCG/Auxsb2NhAAADAAAAACwAAAAsDjIQIm1heHAAAAGcAAAAGgAAACAAfgBDbmFtZQAACOgAAAIUAAAEm0zGvtJwb3N0AAAK/AAAAGYAAAB/4wuGdnByZXAAAAL4AAAACAAAAAhwAgESAAEAAAABBR/xlpGAXw889QALA+gAAAAA2Ac3gwAAAADY+IxB//L/HAPPAwAAAAAIAAIAAAAAAAB42mNgZGBgWf7vFAMD84v/n/7vZD7PABRBAYIAwxQH7XjaY2BkYGAQZXBiYGEAAUYGGEiBUAAMEQDCAAB42mNgYepm2sPAysDA1MUUwcDA4A2hGeMYjBjNgKI8HMxMTCz8TCwLGJj2CzCAgRiI8PX382d0YGBMEmQ2+u/FcIJlOVA9CwMjSI6JlekwkFJgYAQAR1kL+QAAAAJYAHYAAAAAAU0AAAEEAAACUAAhAlYAFQJUACACKgAdAZUANgEUABUBYAAkA5wAFQINABsBqAA0AnAAKgJYACoD6ACF//YANP/yACN42mNgYGBmgGAZBkYGEHgG5DGC+SwMp4C0HIMAUISPQYEhiSGNIZMhl6GUoZJhgeIkfS6/N4GpQQuSBP//B+tMZEgByucwFGOT/7/4/6L/C/7P+z/z/7T/yffqLrJvVFu3Zm3xPJBtcgz4ADPFkIGRDWgMIcBAIWBhZWBj52Bg4GRg4OIGi/Dw8gFJfgYqA/JcCgA99Se8ALgB/4W4AAGNAAAAFAAUABQAFABSAIIAsgD6ASIBOAFYAYIBxgHwAhQCRAJaAogCygMYA3542k1Ua2xTZRj+LmtP23Vdz2lPz3pZb2dr1+u2nq2H0d3Z2OhI5mC4AZMBo0gM98E0oRn1AqgoIYDG4BAkakDkJ4iyiCZGAiISUH8YjIQfEhNUMCoJrme+bTfkx/nxveec53ne533eDxE0Nn0V/0V2I4oYhATWw1ZKrDiGx5Vfzp6NkXPZ7mH8ECGCPNNXiZWokANVIYRjFt7MUI83iuvrWnAzTWA5Xl/nC2G/SZJFr7oUq3mzBaf7F5S0Kt+F59i1aq0j0tbwJmXcwUtsz3HHhEtQaYr0RFUbL0sqB8yRClvcG2uwa7hKg4VLKdFjZmeEN5SwwM0Dd4DcRaXAXuAuxQYqekwSIxRoqRRrxjLevrK/RNCUhXt7lYevpQMf6StjW1sz/gCrIqqm+Z7krsjCmJU67/zexrvMykE+CniA7wb8oUf4EhW9vtm2qGQSvQY808+t9Ov/5ih0zlhfyytfbGodd/ht2rJiH7k7dTtP0NQTYpUo3qDzSnsSVpc5j18O+DzRIzeqyel34nwDOISZHGoCM6I3SvKMRJppKM8pxeIy3tbU4S4y6Oc231Sp3OFLgXMV7dV2xq8L9K9IUZvY5XAZi4wfms2U6K21PoHvnVfvchitXEorhH2O4K253RUTnIYt0Xv4ITanB6M4zPwm9GuBQ4GIEaloEmVJzvXM4JeqXaxWfYg7tCi9qIddqNZZg53yKEv2lLgkEWaDr6fERHfEnEL5/mA+uJzcLmTIJEsMNUl0t5AR7o+kR8jqTCa7nsjZS3nuCvg2DtwcpC3ftQzfgg1ODMRfBjt8eiP8ZLAE7HNDsRJPUKhYTmqy13osvJGm4H/gomsgh8Ksk2oGpM+kAHqAh0wmuitpSWO6SWer2NOX7vu8D2SouFCACSSVk3hgjmBllRp8Takhck6THTT9DZjVoMkPprfgmSE8igHzKNOJ//MX4X4rN6m0VF022lan02g4R11DNngDahqoPQe1YoZ31SRiKWN5fammqNgddMiRcNheAoXIbKGlKsoXo7w3daDjFDmNbOAiM+uJOONSbjoSIzEPI1owpyO0oL6twlAcSbI9zrTzKIePTdeaeZamOHe4zJtA06kTJ3J+BSF7vdCbKZ/swsbGZzyHZvCN9BrlzmN+vUVU2UsFq/CAcjJnVV5bcNpB2gCnPI9jILDquZ1rwflleQzwqx1ri8PJzh+4K3GnUcPsg32pSdfAJmYA+dPm+a61rBj0N3Z5ktio3Gu1uAqZ3IVW0R2Ar4GDwIiyp97jJ5MXLuzbn71IGvYT1fXrR545kvdp+p/pNB0nvyI7QiqR+A2UEZupLPmjOK/KIlg4On741U6xf3hj49Ha0e2bov3tVFd6oOx2uVvb9dlLeOTjxt1797XUvDBx+snTOv1Sk/2y0g7YRTCDNP2WIqSHhLqQCHQGnEuYmpHhhvFYBNHnV8UsUPJLpjjwYZNA8ZC+yv7Uxu5QiG/vMWOfNzzq9uH7XqFoyz3byRWUv1ClnNowsoqi+CYp248fhN0TC94YXrSkYyRod03dWkYOmpdOfUAetGWTiE7/CRomQYML+VG0kHOG5AjjpjjE0kAYMc7JubMsqZnK3GvqMQmNOHcR4u9t5Woai31t3xXxYVrcaZQXt+5cOWZZV7ZXp94Io6u1C5Q+rZzY+pP62YEdZEmpx6QcUb4ZnMJ2nXbs2uWtb+P57w6sSoYytQYnl62juhVEnT1e2HURtF0EbQnUBsrAD9AADglwhfgLHkWxX2TiMqPOeyQzftinXHjhbVwuJVIdiOY9fvBRstDzyh9Ys6B6W2h0HnvO85DbvMsa2xJhNPgiPzBkaN4W/NF+0PaOd/ug7Yz+DNfVp3/v5+Jx8yRdT3F5dLMorLXik6PrnhhYfKAxM/hyb0Oanycm3+86bHMPC6JyZfB8YJnN8sngi4xqqdq3nN0//vzOTNXq5YsR+g8984WfeNq1Us1qFEEQ/npnk0X8IQGJIjnUSRLYLLt7MMlFCHvNKRvMuTPTmZ1kdib0zAY3ePMFfAAvigi5+Ry+gA8iiOLFr3tbTFZWcnGgu76qrvqqpqoAPMQ3KMy+A3wMWOGBehRwAy31LOAIayoPuEmfdwEv4Z76HPAy7quvAbfwqvEz4BXcjd4EvIpG9J5sqnmH2gfP7LDCOn4E3CD/04AjtNXzgJtYV68DXsJj9SngZTxRXwJu4XtDBbyCtehlwKtoRm8xQIlzTGGRIcUINQRXPH100cMOtgLape0QBgVif9dBjxlTkCPnSckj2MCQNudzGeQmrS5PB22ifcYmxII9RuWUf3JXXjOUhvKCt/PEoDyf2iwd1XIl/W5vZ4vXrhyaIjZFTRmPijIv06lsDEemuOTZlEHZact+nXRkL8/FR1diTWXshUnIefNnhtCULv0Rtvk4ox7qopKjbbcNhhVOWK1mXTgw6STX9t8kMh91k1RuRfJXJS98Zyp2rKSbcDIdzqfPB2OrrCyk1+n2F3HOMzrC+aFmPrcOg0i9XvukbhhCbPmaUBv73zqjrcTJf1gPV7PL6PK4yGN6L6oq882IvaWm/0w/ZfOt9014x3yZta1yS/V7fbJKNBcjzaraWJNIbXVixtqeSXly6x3TRSJjPZVjc50qKyQ2ttaUpxObVUkW15xRtXD9rg8Hs3FxRr8ATJnl93jaY2BiAIP/zQxGDNiAKBAzMjAxMjG4MLgyuDN4MHgy+DD4MwQwhDGEM0QwxDAyM7IwsjKyMbKzl+ZlGhgYGHIlFhXllxdlpmeUgISM3AwcQbSJq6sziDY1cjQA0WZGhoYAgBwU3AAAAAEAAgAIAAr//wAPAAEAAAAMAAAAFgAAAAIAAQADABQAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2Ac3gwAAAADY+IxB') format('woff'); + font-weight: normal; + font-style: normal; +} diff --git a/src/style/index.less b/src/style/index.less new file mode 100644 index 0000000..ae08224 --- /dev/null +++ b/src/style/index.less @@ -0,0 +1,9 @@ +@import './font-family.less'; +@import './componentsReast/index.less'; +@import './theme/index.less'; +// 自定义组件样式 +@import '../czriComponents/index.less'; +//左右布局的有二级菜单风格 +@import './normal.less'; + + diff --git a/src/style/normal.less b/src/style/normal.less new file mode 100644 index 0000000..addb870 --- /dev/null +++ b/src/style/normal.less @@ -0,0 +1,151 @@ +//默认正常风格 +.normal.side{ + .t-menu__logo{ + margin-top: 20px; + height: 100px-; + //收起之前 + .yldj-side-nav-logo-tdesign-logo{ + height: 40px; + width: 100%; + padding-left: 30px; + } + //收起之后 + .yldj-side-nav-logo-t-logo{ + width: auto; + height: 40px; + padding-left: 10px; + } + } + //左侧边栏 + .t-layout__sider{ + .yldj-side-nav::before{ + border-radius: 0px; + top: -5px; + left: 1px; + } + //最下侧功能栏 + .navUserCont{ + // border-top: 1px solid var(--color-border2); + height: 65px; + box-sizing: border-box; + line-height: 28px; + padding: 12.5px 12px 15.5px 21px; + .header-user-account { + font-size: 14px; + color: var(--color-bk3); + display: flex; + align-items: center; + .baseInfo{ + padding: 2px 6px; + // 头像大小 + .header-user-avatar { + width: 21px; + height: 21px; + // 对齐 + vertical-align: text-bottom; + margin-right: 6px; + } + } + .splitLine { + height: 12px; + width: 1px; + background-color: var(--color-bk3); + display: inline-block; + margin: 0 7px 0 4px; + position: relative; + } + .logoutBox { + width: 36px; + height: 36px; + display: flex; + // 退出 + .header-user-logout{ + width: 36px; + height: 36px; + display: flex; + justify-content: center; + align-items: center; + position: relative; + .icon{ + position: relative; + bottom: 3px; + } + } + } + } + .header-user-list{ + width: 36px; + height: 36px; + text-align: center; + line-height: 36px; + display: flex; + justify-content: center; + } + + .header-user-list>span{ + display: flex; + align-items: center; + justify-content: center; + } + .collapsed-icon { + width: 20px; + height: 20px; + vertical-align: initial; + cursor: pointer; + } + } + .put { + border-top: 0; + width: 64px; + height: 90px; + margin: 10px 12px 10px 21px; + padding: 0; + .header-user-logout { + padding: 2px; + width: 36px; + height: 36px; + display: flex; + justify-content: center; + align-items: center; + } + div { + flex-direction: column; + div { + margin-bottom: 10px; + height: 100%; + line-height: normal; + } + } + } + .t-default-menu__inner .t-menu--scroll{ + padding-bottom: 0px; + padding-left: 0; + padding-right: 0; + // padding-top: 36px; + } + } + //折叠后下方图标区域样式调整 + .yldj-sidebar-compact{ + .t-menu__item{ + padding: 0px; + } + + .navUserCont{ + margin-left: 0px; + // height: 102px; + border:none; + padding-top: 5px; + .fx-sb{ + align-items: center; + .header-user-account{ + .header-user-avatar { + width: 32px; + height: 32px; + padding: 6px; + margin-right: 0px; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/style/theme/default.less b/src/style/theme/default.less new file mode 100644 index 0000000..23975dc --- /dev/null +++ b/src/style/theme/default.less @@ -0,0 +1,435 @@ +:root, :root[theme-color='defult'] { + // 主题色板 + --color-main: #F74346; + --color-aux1: #0398FF; + --color-aux2: #7FB0FE; + --color-aux3: #F5F9FF; + --color-aux4: #FAFCFF; + + --color-success: #27ba9b; + --color-warning: #FFAB2E; + --color-error: #e34d59; + --color-error1: #FF6F72; + --color-error2: #DB3235; + --color-error3: #FFDBDC; + + --color-black: #000000; + --color-bk1: #191919; // 重要颜色 + --color-bk2: #262626; + --color-bk3: #595959; // 次重要颜色 + --color-bk4: #999999; // 次要颜色 + --color-bk5: #737373; + --color-bk6: #bfbfbf; + --color-bk7: #E7E7E7; + --color-bk8: #DCDCDC; + --color-bk9: #ABABAB; + --color-bk10: #FAFAFA; // 背景色 + --color-bk11:#d9e1eb; + --color-bk12:#FFEFEC; + --color-white: #ffffff; // 中性色 + --color-bk: #979797; + --color-border: #E8E8E8; // 边框颜色,用于分割线 + // --color-border: #d9d9d9; + --color-border2:#CCD2D9; + --color-active: #CB2633; + --color-hover: #3280FD; + --color-active-blue: #1C55CF; + --color-disable: #F0A5AB; + + --color-font1:#737373; + --color-font2:#727272; + --color-font3:#6F6F6F; + //列表表头颜色 + --color-tableHeader-bg:#F7F7F7; + //列表行hover颜色 + --color-tableTr-hover:#FAFCFF; + // 分割线颜色 + --td-component-border:#E8E8E8; + ; + // 间距 + --space-main-min:0px; + --space-main:20px; +} + +a { + text-decoration: none; + color: var(--color-main); + + &:active { + color: var(--color-font1); + } + + &:hover { + color: var(--color-font1); + } +} + +// 全局容器 - 适配 先干掉 +.container { + // width: 1200px; + // margin: 0 auto; +} + +.logo img { + width: 158.33px; + height: 48px; +} + +// 原子化CSS定义 将高频使用的样式单独抽离 使用时拼合到calss里 + +// 按钮 +.bt, +.bt-grey, +.bt-red { + display: block; + line-height: 32px; + height: 32px; + width: 100%; + font-size: 14px; + background: var(--color-main); + color: var(--color-white); + border-radius: 3px; + text-align: center; + cursor: pointer; + user-select: none; + &:focus{ + outline:none + } + + &:hover { + background-color: var(--color-error1); + } + + &:active { + background-color: var(--color-error2); + } + &:disabled { + background-color: var(--color-error3); + } +} + +.bt-grey { + color: var(--color-bk1); + background: var(--color-bk7); + cursor: pointer; + + &:hover { + background-color: var(--color-bk8); + } + + &:active { + background-color: var(--color-bk9); + } + &:disabled { + background-color: var(--color-bk9); + } +} + +.bt-red { + color: var(--color-white); + background: var(--color-error); + + &:hover { + background-color: var(--color-error1); + } + + &:active { + background-color: var(--color-error2); + } + &:disabled { + background-color: var(--color-error3); + } +} + +// 文字按钮 +.font-bt { + color: var(--color-aux1); + cursor: pointer; + + &:hover { + color: var(--color-hover); + } + + &:active { + color: var(--color-active-blue); + } +} + +.font-del { + color: var(--color-error); + cursor: pointer; + + &:hover { + color: var(--color-error1); + } + + &:active { + color: var(--color-error2); + } +} + +.font-bt2 { + color: var(--color-font1); + cursor: pointer; + + &:hover, + &:active { + color: var(--color-main); + } +} + +.font-bt3 { + cursor: pointer; + + &:hover { + color: var(--color-white); + background-color: #8E9BA5; + } + + &:active { + color: var(--color-white); + background-color: var(--color-font1); + } +} + +.font-bt4 { + color: var(--color-font3); + cursor: pointer; + + &:hover, + &:active { + color: var(--color-main); + } +} + +// 禁用样式 +.text-forbidden { + // color: var(--color-disable); + opacity: 0.3; + cursor: no-drop; + pointer-events: none; + + &:hover { + color: var(--color-bk4); + } +} + +// 背景 +.bg { + background-color: var(--color-bk); +} + +.bg-wt { + background-color: var(--color-white); +} + +// flex 布局 +.fx { + display: flex; +} + +.fx-fd-col { + display: flex; + flex-direction: column; +} + +.fx-1 { + flex: 1; +} + +.fx-sb { + width: 100%; + display: flex; + justify-content: space-between; +} + +.fx-ct { + display: flex; + justify-content: center; + align-items: center; +} + +.fx-cl-ct { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.fx-al-ct { + display: flex; + align-items: center; +} + +.fx-wp { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +// 位置 + +.pt-rt { + position: relative; +} + +.pt-at { + position: absolute; +} + +// 常用(内外)边距 +.marg-24 { + margin: 24px; +} +.marg-main{ + margin: 0 20px; +} +.pd-main{ + padding: 0 20px; +} +.marg-24 { + margin: 32px; +} + +.pd-24 { + padding: 24px; +} + +.pd-32 { + padding: 32px; +} +.mb-24{ + margin-bottom: 24px; +} +.mt-24{ + margin-top: 24px; +} +// 文字 +.ft-ct { + text-align: center; +} +.ft-rt { + text-align: right; +} +.ft-wt-400 { + font-weight: 400; +} + +.ft-wt-600 { + font-weight: 600; +} + +.ft-12 { + font-size: 12px; +} + +.ft-14 { + font-size: 14px; +} + +.ft-16 { + font-size: 16px; +} + +.ft-18 { + font-size: 18px; +} + +.ft-20 { + font-size: 20px; +} + +.ft-cl-1 { + color: var(--color-font1); +} + +.ft-cl-des { + color: var(--color-font3); +} + +.ft-cl-err { + color: var(--color-error); +} + +.ft-cl-wt { + color: var(--color-white); +} + +// 常用样式 +.cur-pt { + cursor: pointer; +} + +.bd-non { + border: none !important; +} + +.br-8 { + border-radius: 8px; +} + +// 公用图片头像 +.img { + width: 24px; + height: 24px; + border-radius: 24px; + margin-right: 10px; +} + +// 变小手 +.pt { + cursor: pointer; +} + +// 定义宽度(用于常见的按钮宽度或者其他) +.wt-60 { + width: 60px; +} +// 用于常见input宽度或者其他 +.wt-240{ + width: 240px; +} +// 定义右侧内容自动高度 +.ht { + height: calc(100% - 20px); +} +// 宽度400 +.wt-400 { + width: 400px; +} +// 最小宽度480 +.mw-480{ + min-width: 480px; +} +// 圆角2px +.br-2 { + border-radius: 2px; +} +// +.t-checkbox__label{ + color: var(--color-bk3); +} +// 右面白色背景最小高度 +.min-h { + // min-height: calc(100vh - 90px); + min-height: 674px; +} +// 禁用按钮 +.bt-dis { + color: var(--color-bk4); + cursor: no-drop; + pointer-events: none; +} +// hover框列表数量较少时 +.shortDescription{ + .hover { + bottom: auto !important; + top: 60px !important; + + &::after { + bottom: auto !important; + top: -5px !important; + left: 5% !important; + } + } +} diff --git a/src/style/theme/index.less b/src/style/theme/index.less new file mode 100644 index 0000000..74aa09b --- /dev/null +++ b/src/style/theme/index.less @@ -0,0 +1 @@ +@import "./default.less"; diff --git a/src/style/variables.less b/src/style/variables.less new file mode 100644 index 0000000..923ffcf --- /dev/null +++ b/src/style/variables.less @@ -0,0 +1,25 @@ +/** 公共前缀 */ +@starter-prefix: yldj; + +// 响应式断点 +@screen-sm: 768px; +@screen-md: 992px; +@screen-lg: 1200px; +@screen-xl: 1400px; + +@screen-sm-min: @screen-sm; +@screen-md-min: @screen-md; +@screen-lg-min: @screen-lg; +@screen-xl-min: @screen-xl; + +@screen-sm-max: calc(@screen-md-min - 1px); +@screen-md-max: calc(@screen-lg-min - 1px); +@screen-lg-max: calc(@screen-xl-min - 1px); + +// 动画 +@anim-time-fn-easing: cubic-bezier(0.38, 0, 0.24, 1); +@anim-time-fn-ease-out: cubic-bezier(0, 0, 0.15, 1); +@anim-time-fn-ease-in: cubic-bezier(0.82, 0, 1, 0.9); +@anim-duration-base: 0.2s; +@anim-duration-moderate: 0.24s; +@anim-duration-slow: 0.28s; diff --git a/src/types/axios.d.ts b/src/types/axios.d.ts new file mode 100644 index 0000000..7cae909 --- /dev/null +++ b/src/types/axios.d.ts @@ -0,0 +1,27 @@ +import { AxiosRequestConfig } from 'axios' + +export interface RequestOptions { + apiUrl?: string + isJoinPrefix?: boolean + urlPrefix?: string + joinParamsToUrl?: boolean + formatDate?: boolean + isTransformResponse?: boolean + isReturnNativeResponse?: boolean + ignoreRepeatRequest?: boolean + joinTime?: boolean + withToken?: boolean + retry?: { + count: number + delay: number + } +} + +export interface Result { + code: number + data: T +} + +export interface AxiosRequestConfigRetry extends AxiosRequestConfig { + retryCount?: number +} diff --git a/src/types/globals.d.ts b/src/types/globals.d.ts new file mode 100644 index 0000000..429804b --- /dev/null +++ b/src/types/globals.d.ts @@ -0,0 +1,18 @@ +// 通用声明 + +// Vue +declare module '*.vue' { + import { DefineComponent } from 'vue' + + const component: DefineComponent<{}, {}, any> + export default component +} + +declare type ClassName = { [className: string]: any } | ClassName[] | string + +declare module '*.svg' { + const CONTENT: string + export default CONTENT +} + +declare type Recordable = Record diff --git a/src/types/interface.d.ts b/src/types/interface.d.ts new file mode 100644 index 0000000..b471a6d --- /dev/null +++ b/src/types/interface.d.ts @@ -0,0 +1,53 @@ +import { RouteRecordName, LocationQueryRaw } from 'vue-router' +import STYLE_CONFIG from '@/config/style' + +// 菜单类型声明 +export interface MenuRoute { + path: string + title?: string + name?: string + icon?: + | string + | { + render: () => void + } + redirect?: string + children: MenuRoute[] + meta: any +} + +export type ModeType = 'black' | 'light' + +export type SettingType = typeof STYLE_CONFIG + +export type ClassName = { [className: string]: any } | ClassName[] | string + +export type CommonObjType = { + [key: string]: string | number +} + +export interface NotificationItem { + id: string + content: string + type: string + status: boolean + collected: boolean + date: string + quality: string +} + +export interface TRouterInfo { + path: string + query?: LocationQueryRaw + routeIdx?: number + title?: string + name?: RouteRecordName + isAlive?: boolean + isHome?: boolean + meta?: any +} + +export interface TTabRouterType { + isRefreshing: boolean + tabRouterList: Array +} diff --git a/src/utils/charts.ts b/src/utils/charts.ts new file mode 100644 index 0000000..b13d82b --- /dev/null +++ b/src/utils/charts.ts @@ -0,0 +1,80 @@ +import dayjs from "dayjs"; + +/** + * 获取表头数据 + * + * @export + * @param {string[]} dateTime + * @param {number} divideNum + * @returns {string[]} + */ +export function getDateArray( + dateTime: string[] = [], + divideNum = 10 +): string[] { + const timeArray: string[] = []; + if (dateTime.length > 0) { + for (let i = 0; i < divideNum; i++) { + const dateAbsTime: number = + (new Date(dateTime[1]).getTime() - new Date(dateTime[0]).getTime()) / + divideNum; + const enhandTime: number = + new Date(dateTime[0]).getTime() + dateAbsTime * i; + timeArray.push(dayjs(enhandTime).format("YYYY-MM-DD")); + } + } + + return timeArray; +} + +/** + * 获取随机数 + * + * @param {number} [num=100] + * @returns + * + * @memberOf DashboardBase + */ +export function getRandomArray(num = 100): number { + let resultNum = Number((Math.random() * num).toFixed(0)); + + if (resultNum <= 1) { + resultNum = 1; + } + + return resultNum; +} +export const dateTag = [ + { + tag: '7天', + time: [ + dayjs().subtract(7, 'day').format('YYYY-MM-DD'), + dayjs().subtract(1, 'day').format('YYYY-MM-DD') + ], + num: 7 + }, + { + tag: '15天', + time: [ + dayjs().subtract(15, 'day').format('YYYY-MM-DD'), + dayjs().subtract(1, 'day').format('YYYY-MM-DD') + ], + num: 15 + }, + { + tag: '30天', + time: [ + dayjs().subtract(30, 'day').format('YYYY-MM-DD'), + dayjs().subtract(1, 'day').format('YYYY-MM-DD') + ], + num: 30 + }, + { + tag: '90天', + time: [ + dayjs().subtract(90, 'day').format('YYYY-MM-DD'), + dayjs().subtract(1, 'day').format('YYYY-MM-DD') + ], + num: 90 + } +] \ No newline at end of file diff --git a/src/utils/color.ts b/src/utils/color.ts new file mode 100644 index 0000000..1a1f4dc --- /dev/null +++ b/src/utils/color.ts @@ -0,0 +1,56 @@ +import * as echarts from 'echarts/core' + +export const LIGHT_CHART_COLORS = { + textColor: 'rgba(0, 0, 0, 0.9)', + placeholderColor: 'rgba(0, 0, 0, 0.35)', + borderColor: '#dcdcdc', + containerColor: '#fff' +} + +export const DARK_CHART_COLORS = { + textColor: 'rgba(255, 255, 255, 0.9)', + placeholderColor: 'rgba(255, 255, 255, 0.35)', + borderColor: '#5e5e5e', + containerColor: '#242424' +} + +// /** 图表颜色 */ +export function getChartListColor(): Array { + const res = [ + '#0052d9', + '#0594fa', + '#00a870', + '#ebb105', + '#ed7b2f', + '#e34d59', + '#ed49b4', + '#834ec2' + ] + return res +} + +// /** +// * 更改图表主题颜色 +// * +// * @export +// * @param {Array} chartsList +// * @param {string} theme +// */ +export function changeChartsTheme(chartsList: echarts.EChartsType[]): void { + if (chartsList && chartsList.length) { + const chartChangeColor = getChartListColor() + + for (let index = 0; index < chartsList.length; index++) { + const elementChart = chartsList[index] + + if (elementChart) { + const optionVal = elementChart.getOption() + + // 更改主题颜色 + optionVal.color = chartChangeColor + + elementChart.setOption(optionVal, true) + } + } + } +} diff --git a/src/utils/commonData.ts b/src/utils/commonData.ts new file mode 100644 index 0000000..7cd54f0 --- /dev/null +++ b/src/utils/commonData.ts @@ -0,0 +1,29 @@ +// tab数据 +export const tabData = [ + { + id: 1, + name: '线索' + }, + { + id: 2, + name: '线索池子' + } +] +// 漏斗图数据 +export const funnelData = [ + [ + { value: 2000, name: '用户数' }, + { value: 640, name: '下单数' }, + { value: 460, name: '付款数' } + ], + [ + { value: 600, name: '用户数' }, + { value: 280, name: '下单数' }, + { value: 200, name: '付款数' } + ], + [ + { value: 1400, name: '用户数' }, + { value: 360, name: '下单数' }, + { value: 260, name: '付款数' } + ] +] diff --git a/src/utils/date.ts b/src/utils/date.ts new file mode 100644 index 0000000..fd146eb --- /dev/null +++ b/src/utils/date.ts @@ -0,0 +1,43 @@ +// 获取常用时间 +import dayjs from "dayjs"; + +export const LAST_7_DAYS = [ + dayjs().subtract(7, "day").format("YYYY-MM-DD"), + dayjs().subtract(1, "day").format("YYYY-MM-DD"), +]; + +export const LAST_30_DAYS = [ + dayjs().subtract(30, "day").format("YYYY-MM-DD"), + dayjs().subtract(1, "day").format("YYYY-MM-DD"), +]; +// 将时间转化为时分格式 +export const formatDateTimeToDateTimeString = (dateTime) =>{ + // 检查参数是否是有效的日期格式 + if (!(dateTime instanceof Date)) { + throw new Error('Invalid date format.'); + } + // 获取年、月、日、时、分 + const year = dateTime.getFullYear(); + const month = String(dateTime.getMonth() + 1).padStart(2, '0'); + const day = String(dateTime.getDate()).padStart(2, '0'); + const hour = String(dateTime.getHours()).padStart(2, '0'); + const minute = String(dateTime.getMinutes()).padStart(2, '0'); + // 拼接成年月日时分的字符串格式 + const dateTimeString = `${year}-${month}-${day} ${hour}:${minute}`; + return dateTimeString; +} +// 将时间转化为年月日格式 +export const formatDateTimeToDateString = (dateTime) =>{ + // 检查参数是否是有效的日期格式 + if (!(dateTime instanceof Date)) { + throw new Error('Invalid date format.'); + } + // 获取年、月、日 + const year = dateTime.getFullYear(); + const month = String(dateTime.getMonth() + 1).padStart(2, '0'); + const day = String(dateTime.getDate()).padStart(2, '0'); + // 拼接成年月日的字符串格式 + const dateString = `${year}-${month}-${day}`; + return dateString; +} + diff --git a/src/utils/emoji/index.ts b/src/utils/emoji/index.ts new file mode 100644 index 0000000..955576e --- /dev/null +++ b/src/utils/emoji/index.ts @@ -0,0 +1,218 @@ +export const ImgList = [ + { + id: '[便便]', + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0JGNjk1MiIgZD0iTTMzLjU0MSAyMy4xOThjLjM2NC0xLjU3OC4yNDMtMy4yNjYtLjQ1OC00Ljk0Ni0uNjc4LTEuNjI1LTEuODQ3LTIuOTEtMy4yNzEtMy43NzMuMzE4LTEuMTkyLjIzNC0yLjQ3NS0uMzI0LTMuNzUtLjg0MS0xLjkyLTIuNjYtMy4yMDEtNC43MTItMy41NjIuMjQ5LS41NzIuMzI5LTEuMjg5LjAzNi0yLjE2Ny0xLTMtNS0xLTgtNC45OTktMi40NCAxLjQ2NC0yLjk3IDMuNjQtMi44NzggNS40ODctMi40MjEuNDEyLTMuOC45MzYtMy44LjkzNnYuMDAyYy0xLjM2LjU1LTIuMzIyIDEuODgzLTIuMzIyIDMuNDQyIDAgLjg3OS4zMTggMS42NzYuODI4IDIuMzEybC0uNjkyLjI1OC4wMDEuMDAzYy0yLjMzLjg3MS0zLjk3NSAyLjk3Ni0zLjk3NSA1LjQzOSAwIDEuMDQ3LjMgMi4wMjcuODIgMi44NzhDMS45NzEgMjIuMDI3IDAgMjQuNzgxIDAgMjhjMCA0LjQxOCAzLjY5MSA4IDguMjQ0IDggMy4yNjkgMCA2LjU1OS0uNzAzIDkuNTMxLTEuNjY1QzIwLjAxOCAzNS4zNzUgMjMuNDcgMzYgMjguNjY3IDM2IDMyLjcxNyAzNiAzNiAzMi43MTcgMzYgMjguNjY3YzAtMi4xNzYtLjk1My00LjEyNS0yLjQ1OS01LjQ2OXoiLz48ZWxsaXBzZSBmaWxsPSIjRjVGOEZBIiBjeD0iMTMuNSIgY3k9IjE1LjUiIHJ4PSIzLjUiIHJ5PSI0LjUiLz48ZWxsaXBzZSBmaWxsPSIjRjVGOEZBIiBjeD0iMjMuNSIgY3k9IjE1LjUiIHJ4PSIzLjUiIHJ5PSI0LjUiLz48ZWxsaXBzZSBmaWxsPSIjMjkyRjMzIiBjeD0iMTQiIGN5PSIxNS41IiByeD0iMiIgcnk9IjIuNSIvPjxlbGxpcHNlIGZpbGw9IiMyOTJGMzMiIGN4PSIyMyIgY3k9IjE1LjUiIHJ4PSIyIiByeT0iMi41Ii8+PHBhdGggZmlsbD0iIzI5MkYzMyIgZD0iTTkuNDQ3IDI0Ljg5NUM5LjIwMSAyNC40MDIgOS40NSAyNCAxMCAyNGgxOGMuNTUgMCAuNzk5LjQwMi41NTMuODk1QzI4LjU1MyAyNC44OTUgMjYgMzAgMTkgMzBzLTkuNTUzLTUuMTA1LTkuNTUzLTUuMTA1eiIvPjxwYXRoIGZpbGw9IiNGMkFCQkEiIGQ9Ik0xOSAyNmMtMi43NzEgMC01LjE1Ny45MjItNi4yOTIgMi4yNTZDMTQuMiAyOS4yMTEgMTYuMjUzIDMwIDE5IDMwczQuODAxLS43ODkgNi4yOTItMS43NDRDMjQuMTU3IDI2LjkyMiAyMS43NzEgMjYgMTkgMjZ6Ii8+PC9zdmc+' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTEyLjQzIDIycy0uNzE3LTMuNjQxLjI5OC0xMC44NzNjMS40LjQ1NCAyLjgxNC44NzMgMy4yNzIuODczIDEgMCA0LTEgNC0ycy0xLTItMS0ybDItMWMxLTEgMC03LTQtNy03IDAtOS41NyA3LTkuNTcgN2wuMDA3LjAxMUg3LjQzcy02IDEwLjk4OS02IDIwYy4wNjUgMC0xIDUgMCA2czUgMSA1IDFDMTYuNDMgMzggMzUgMzUgMzUgMjZjMC0xMy0xOS41Ny0xMC0yMi41Ny00eiIvPjxwYXRoIGZpbGw9IiNFRjk2NDUiIGQ9Ik0xOS40OTQgMzIuMjUyYy0zLjE3OCAwLTUuNzkzLTEuMjgzLTUuOTQxLTEuMzU3LS40OTMtLjI0Ny0uNjkzLS44NDYtLjQ0Ny0xLjM0LjI0Ni0uNDk0Ljg0NS0uNjk1IDEuMzQtLjQ1LjA0Mi4wMjEgNC4yNDEgMi4wNjEgNy45NTcuNjQxIDIuMDU1LS43ODUgMy42MjUtMi41MDcgNC42NjktNS4xMTYuMjA1LS41MTUuNzkxLS43NjMgMS4zLS41NTguNTEzLjIwNS43NjMuNzg3LjU1OCAxLjMtMS4yNjMgMy4xNTUtMy4yMjMgNS4yNTgtNS44MjcgNi4yNDgtMS4yMTYuNDYxLTIuNDUxLjYzMi0zLjYwOS42MzJ6Ii8+PC9zdmc+', + id: '[肌肉]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTMyLjk0MiAxMS4yNDRjLS4wNDEtLjYwOS0uMjg0LTEuMTgtLjY3NC0xLjY0NGwtLjM1Ny0yLjA1N2MtLjM3Ni0yLjAwNi0yLjIzMi0zLjM4Ni00LjI2Mi0zLjE2OUw0LjI1OSA4LjExQzIuMzc3IDguMzEyLjkwOSA5LjgzMy43NzQgMTEuNzIxbDEuNzYxIDExLjE0N2MuMzA1IDIuMTY5IDIuMTUxIDMuNzg4IDQuMzQxIDMuODEzLjY3Ny4wMDggMS4yMzguMDE3IDEuNDYzLjAyN2w5LjQ4My40NjNjLS4zNjMuNDgzLS44MjIgMS4wOC0uODIyIDEuNzE4di4wNTJjMCAxLjU4MSAxLjc3MSAzLjA2IDMuMzUzIDMuMDZoNy4yODJjLjc2IDAgMS40ODgtLjQgMi4wMjUtLjkzOGw0LjQyNC00LjQ3MmMuNTgzLS41ODQuODg3LTEuNDE2LjgzMi0yLjI0bC0xLjk3NC0xMy4xMDd6Ii8+PHBhdGggZmlsbD0iI0VGOTY0NSIgZD0iTTguMjE3IDI2LjYyM2MtLjQ3NCAwLS44OTUtLjMzOC0uOTgzLS44MjFMNS4xNzQgMTQuNDdjLS4wOTktLjU0My4yNjItMS4wNjQuODA1LTEuMTYzLjU0Ni0uMDk3IDEuMDY0LjI2MiAxLjE2My44MDVsMi4wNiAxMS4zMzJjLjA5OS41NDMtLjI2MiAxLjA2My0uODA1IDEuMTYyLS4wNjEuMDEyLS4xMjEuMDE3LS4xOC4wMTd6bTYuMTgxIDBjLS41MTcgMC0uOTU1LS4zOTgtLjk5Ni0uOTIzbC0xLjAzLTEzLjM5M2MtLjA0My0uNTUxLjM3LTEuMDMxLjkyLTEuMDc0LjU0OS0uMDQ0IDEuMDMxLjM3MSAxLjA3NC45MmwxLjAzIDEzLjM5MmMuMDQzLjU1MS0uMzcgMS4wMzItLjkyIDEuMDc0LS4wMjYuMDAzLS4wNTMuMDA0LS4wNzguMDA0em03LjIwNyAxLjEwNmMtLjUwOCAwLS43NTctLjAwMS0uOTUxLTEuMDYybC0uMDQ0LS4wMDNjLjAwMS0uMDU1LjAwNy0uMTA4LjAxNy0uMTYxLS4xNzQtMS4wNjgtLjMwOS0zLjA2OS0uNTYxLTYuODE3LS4yMzUtMy40OS0uNDg2LTcuNTUyLS40ODYtOC40ODUgMC0uNTUyLjQ0Ny0xIDEtMSAuNTUzIDAgMSAuNDQ4IDEgMSAwIDEuNTMzLjc5NSAxMy4zMjQuOTgxIDE1LjE0NS4wMzIuMDk3LjA0OS4yLjA0OS4zMDggMCAuMjY2LS4xMDguNTU3LS4yOTUuNzQ0cy0uNDQ0LjMzMS0uNzEuMzMxeiIvPjxwYXRoIGZpbGw9IiNFRjk2NDUiIGQ9Ik0yNS4xNzggMjguNjg0SDE4LjUyYy0uNTUyIDAtMS0uNDQ3LTEtMXMuNDQ4LTEgMS0xaDYuNjU4YzEuNDU4IDAgMi42NDQtMS4xODYgMi42NDQtMi42NDRWMTEuMjAxYzAtLjU1Mi40NDctMSAxLTFzMSAuNDQ4IDEgMVYyNC4wNGMtLjAwMSAyLjU2MS0yLjA4NCA0LjY0NC00LjY0NCA0LjY0NHoiLz48L3N2Zz4=', + id: '[出拳]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0VGOTY0NSIgZD0iTTI0Ljk5NyAyOC41Yy0xLjE4NSAwLTIuMjM3LS44NDYtMi40NTctMi4wNTNsLTQtMjJjLS4yNDctMS4zNTguNjU0LTIuNjYgMi4wMTItMi45MDcgMS4zNTgtLjI1MSAyLjY2LjY1NCAyLjkwNyAyLjAxMmw0IDIyYy4yNDcgMS4zNTgtLjY1NCAyLjY2LTIuMDEzIDIuOTA3LS4xNS4wMjgtLjMuMDQxLS40NDkuMDQxeiIvPjxwYXRoIGZpbGw9IiNGRkRDNUQiIGQ9Ik0yOC4zNzUgMjQuNzY1Yy4yMzktLjc0NS4xMy0xLjU5MS0uMzc1LTIuMjY1LS4wNTktLjA3OC0uNDQtLjU4NS0xLjAxNy0xLjM0LjAwNS0uMDUyLjAxNy0uMTEyLjAxNy0uMTYgMC0uNDU4LTEuOTEzLTIuNjIzLTMuNzQtNC41ODYtMS41ODctMS45NjUtMy4yNjEtMy45NTEtNC40OTItNS4xODJsLTEuMjc0LTEuMjc0LTEuNjEyLjgwNmMtNS43MTggMi44NTktOC42NDcgMy44NTUtOC42NzIgMy44NjQtMS4zMS40MzctMi4wMTggMS44NTItMS41ODEgMy4xNjIuNDM3IDEuMzEgMS44NTIgMi4wMTUgMy4xNjIgMS41ODIuMTE3LS4wMzkgMi42NjYtLjg5OSA3LjY1LTMuMzExIDEuMDk0IDEuMjMgMi4zNzggMi43OTUgMy41NzQgNC4yOTZsLjcwNCAxLjE3NGMuMTY5LjI4Mi4xNDYuNjM5LS4wNjEuODk2bC0zLjUxMyA0LjM5MmMtLjA5NS4xMTktLjIyMi4yMDctLjM2NS4yNTVsLTIuNTMxLjg0NGMtLjE2MS4wNTQtLjMzNi4wNTQtLjQ5NyAwbC00LjczLTEuNTc2Yy0uNjc2LTIuMDgyLS41MzMtNC4xMDItLjUzMS00LjEyNC4xMi0xLjM3Ni0uODk5LTIuNTg4LTIuMjc0LTIuNzA3LTEuMzcyLS4xMjgtMi41ODcuODk3LTIuNzA3IDIuMjczLS4wMjIuMjYxLS41MSA2LjQyNCAzLjMxMyAxMC41OTQgMi4yMDggMi40MDggNS4yOTYgMy42MyA5LjE3OCAzLjYzLjY2IDAgMS4yODMuMDA5IDEuODcxLjAxOC41MjkuMDA4IDEuMDQyLjAxNiAxLjUzNy4wMTYgMi43NjQgMCA1LjAwNC0uMjMxIDYuNzM4LTEuOTQxIDEuNjQ5LTEuNjI2IDIuMzU0LTQuMTk1IDIuMzU0LTguNTkyLS4wMDEtLjI2My0uMDUyLS41MDgtLjEyNi0uNzQ0eiIvPjxwYXRoIGZpbGw9IiNFRjk2NDUiIGQ9Ik0yNy4wMDEgMjFjLS4zODQgMC0uNzQ5LS4yMjEtLjkxNS0uNTk0bC00LTljLS4yMjQtLjUwNS4wMDMtMS4wOTYuNTA4LTEuMzIuNTA2LS4yMjYgMS4wOTYuMDAzIDEuMzIuNTA3bDQgOWMuMjI0LjUwNS0uMDAzIDEuMDk2LS41MDggMS4zMi0uMTMyLjA2LS4yNjkuMDg3LS40MDUuMDg3eiIvPjxwYXRoIGZpbGw9IiNGRkRDNUQiIGQ9Ik0yNC43NjYgMzQuMzhsLTEuNTMxLTQuNzZzLS4wNjYuMDExLS4xNzUuMDY2Yy4wMTctLjAwOSAxLjgyMS0uOTk1IDIuNDYxLTYuMDAzLjc3NS02LjA3NS0uNzc0LTkuNi0uNzktOS42MzRsLS4wOTMtLjIzMS0zLjUtMTAuMTA0Yy0uNDUyLTEuMzA1LjIzOS0yLjcyOSAxLjU0NC0zLjE4MSAxLjMwMy0uNDUxIDIuNzI5LjI0IDMuMTgxIDEuNTQ0bDMuNDY5IDEwLjAxM2MuMzc3Ljg4NyAyLjAzNSA1LjI4NSAxLjE0OCAxMi4yMjYtMS4wNDIgOC4xNjMtNC45NDMgOS44MTYtNS43MTQgMTAuMDY0eiIvPjwvc3ZnPg==', + id: '[好的]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREI1RSIgZD0iTTM0Ljk1NiAxNy45MTZjMC0uNTAzLS4xMi0uOTc1LS4zMjEtMS40MDQtMS4zNDEtNC4zMjYtNy42MTktNC4wMS0xNi41NDktNC4yMjEtMS40OTMtLjAzNS0uNjM5LTEuNzk4LS4xMTUtNS42NjguMzQxLTIuNTE3LTEuMjgyLTYuMzgyLTQuMDEtNi4zODItNC40OTggMC0uMTcxIDMuNTQ4LTQuMTQ4IDEyLjMyMi0yLjEyNSA0LjY4OC02Ljg3NSAyLjA2Mi02Ljg3NSA2Ljc3MXYxMC43MTljMCAxLjgzMy4xOCAzLjU5NSAyLjc1OCAzLjg4NUM4LjE5NSAzNC4yMTkgNy42MzMgMzYgMTEuMjM4IDM2aDE4LjA0NGMxLjgzOCAwIDMuMzMzLTEuNDk2IDMuMzMzLTMuMzM0IDAtLjc2Mi0uMjY3LTEuNDU2LS42OTgtMi4wMTggMS4wMi0uNTcxIDEuNzItMS42NDkgMS43Mi0yLjg5OSAwLS43Ni0uMjY2LTEuNDU0LS42OTYtMi4wMTUgMS4wMjMtLjU3IDEuNzI1LTEuNjQ5IDEuNzI1LTIuOTAxIDAtLjkwOS0uMzY4LTEuNzMzLS45NjEtMi4zMzYuNzU3LS42MTEgMS4yNTEtMS41MzUgMS4yNTEtMi41ODF6Ii8+PHBhdGggZmlsbD0iI0VFOTU0NyIgZD0iTTIzLjAyIDIxLjI0OWg4LjYwNGMxLjE3IDAgMi4yNjgtLjYyNiAyLjg2Ni0xLjYzMy4yNDYtLjQxNS4xMDktLjk1Mi0uMzA3LTEuMTk5LS40MTUtLjI0Ny0uOTUyLS4xMDgtMS4xOTkuMzA3LS4yODMuNDc5LS44MDYuNzc1LTEuMzYxLjc3NWgtOC44MWMtLjg3MyAwLTEuNTgzLS43MS0xLjU4My0xLjU4M3MuNzEtMS41ODMgMS41ODMtMS41ODNIMjguN2MuNDgzIDAgLjg3NS0uMzkyLjg3NS0uODc1cy0uMzkyLS44NzUtLjg3NS0uODc1aC01Ljg4OGMtMS44MzggMC0zLjMzMyAxLjQ5NS0zLjMzMyAzLjMzMyAwIDEuMDI1LjQ3NSAxLjkzMiAxLjIwNSAyLjU0NC0uNjE1LjYwNS0uOTk4IDEuNDQ1LS45OTggMi4zNzMgMCAxLjAyOC40NzggMS45MzggMS4yMTIgMi41NDktLjYxMS42MDQtLjk5IDEuNDQxLS45OSAyLjM2NyAwIDEuMTIuNTU5IDIuMTA4IDEuNDA5IDIuNzEzLS41MjQuNTg5LS44NTIgMS4zNTYtLjg1MiAyLjIwNCAwIDEuODM4IDEuNDk1IDMuMzMzIDMuMzMzIDMuMzMzaDUuNDg0YzEuMTcgMCAyLjI2OS0uNjI1IDIuODY3LTEuNjMyLjI0Ny0uNDE1LjExLS45NTItLjMwNS0xLjE5OS0uNDE2LS4yNDUtLjk1My0uMTEtMS4xOTkuMzA1LS4yODUuNDc5LS44MDguNzc2LTEuMzYzLjc3NmgtNS40ODRjLS44NzMgMC0xLjU4My0uNzEtMS41ODMtMS41ODNzLjcxLTEuNTgzIDEuNTgzLTEuNTgzaDYuNTA2YzEuMTcgMCAyLjI3LS42MjYgMi44NjctMS42MzMuMjQ3LS40MTYuMTEtLjk1My0uMzA1LTEuMTk5LS40MTktLjI1MS0uOTU0LS4xMS0xLjE5OS4zMDUtLjI4OS40ODctLjc5OS43NzctMS4zNjMuNzc3aC03LjA2M2MtLjg3MyAwLTEuNTgzLS43MTEtMS41ODMtMS41ODRzLjcxLTEuNTgzIDEuNTgzLTEuNTgzaDguMDkxYzEuMTcgMCAyLjI2OS0uNjI1IDIuODY3LTEuNjMyLjI0Ny0uNDE1LjExLS45NTItLjMwNS0xLjE5OS0uNDE3LS4yNDYtLjk1My0uMTEtMS4xOTkuMzA1LS4yODkuNDg2LS43OTkuNzc2LTEuMzYzLjc3NkgyMy4wMmMtLjg3MyAwLTEuNTgzLS43MS0xLjU4My0xLjU4M3MuNzA5LTEuNTg0IDEuNTgzLTEuNTg0eiIvPjwvc3ZnPg==', + id: '[点赞]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREI1RSIgZD0iTTM0Ljk1NiAxOC4wODRjMCAuNTAzLS4xMi45NzUtLjMyMSAxLjQwNC0xLjM0MSA0LjMyNi03LjYxOSA0LjAxLTE2LjU0OSA0LjIyMS0xLjQ5My4wMzUtLjYzOSAxLjc5OC0uMTE1IDUuNjY4LjM0MSAyLjUxNy0xLjI4MiA2LjM4Mi00LjAxIDYuMzgyLTQuNDk4IDAtLjE3MS0zLjU0OC00LjE0OC0xMi4zMjItMi4xMjUtNC42ODgtNi44NzUtMi4wNjItNi44NzUtNi43NzFWNS45NDhjMC0xLjgzMy4xOC0zLjU5NSAyLjc1OC0zLjg4NUM4LjE5NSAxLjc4MSA3LjYzMyAwIDExLjIzOCAwaDE4LjA0NGMxLjgzOCAwIDMuMzMzIDEuNDk2IDMuMzMzIDMuMzM0IDAgLjc2Mi0uMjY3IDEuNDU2LS42OTggMi4wMTggMS4wMi41NzEgMS43MiAxLjY0OSAxLjcyIDIuODk5IDAgLjc2LS4yNjYgMS40NTQtLjY5NiAyLjAxNSAxLjAyMy41NyAxLjcyNSAxLjY0OSAxLjcyNSAyLjkwMSAwIC45MDktLjM2OCAxLjczMy0uOTYxIDIuMzM2Ljc1Ny42MTEgMS4yNTEgMS41MzUgMS4yNTEgMi41ODF6Ii8+PHBhdGggZmlsbD0iI0VFOTU0NyIgZD0iTTIzLjAyIDE0Ljc1MWg4LjYwNGMxLjE3IDAgMi4yNjguNjI2IDIuODY2IDEuNjMzLjI0Ni40MTUuMTA5Ljk1Mi0uMzA3IDEuMTk5LS40MTUuMjQ3LS45NTIuMTA4LTEuMTk5LS4zMDctLjI4My0uNDc5LS44MDYtLjc3NS0xLjM2MS0uNzc1aC04LjgxYy0uODczIDAtMS41ODMuNzEtMS41ODMgMS41ODNzLjcxIDEuNTgzIDEuNTgzIDEuNTgzSDI4LjdjLjQ4MyAwIC44NzUuMzkyLjg3NS44NzVzLS4zOTIuODc1LS44NzUuODc1aC01Ljg4OGMtMS44MzggMC0zLjMzMy0xLjQ5NS0zLjMzMy0zLjMzMyAwLTEuMDI1LjQ3NS0xLjkzMiAxLjIwNS0yLjU0NC0uNjE1LS42MDUtLjk5OC0xLjQ0NS0uOTk4LTIuMzczIDAtMS4wMjguNDc4LTEuOTM4IDEuMjEyLTIuNTQ5LS42MTEtLjYwNC0uOTktMS40NDEtLjk5LTIuMzY3IDAtMS4xMi41NTktMi4xMDggMS40MDktMi43MTMtLjUyNC0uNTg5LS44NTItMS4zNTYtLjg1Mi0yLjIwNCAwLTEuODM4IDEuNDk1LTMuMzMzIDMuMzMzLTMuMzMzaDUuNDg0YzEuMTcgMCAyLjI2OS42MjUgMi44NjcgMS42MzIuMjQ3LjQxNS4xMS45NTItLjMwNSAxLjE5OS0uNDE2LjI0NS0uOTUzLjExLTEuMTk5LS4zMDUtLjI4NS0uNDc5LS44MDgtLjc3Ni0xLjM2My0uNzc2aC01LjQ4NGMtLjg3MyAwLTEuNTgzLjcxLTEuNTgzIDEuNTgzcy43MSAxLjU4MyAxLjU4MyAxLjU4M2g2LjUwNmMxLjE3IDAgMi4yNy42MjYgMi44NjcgMS42MzMuMjQ3LjQxNi4xMS45NTMtLjMwNSAxLjE5OS0uNDE5LjI1MS0uOTU0LjExLTEuMTk5LS4zMDUtLjI4OS0uNDg3LS43OTktLjc3Ny0xLjM2My0uNzc3aC03LjA2M2MtLjg3MyAwLTEuNTgzLjcxMS0xLjU4MyAxLjU4NHMuNzEgMS41ODMgMS41ODMgMS41ODNoOC4wOTFjMS4xNyAwIDIuMjY5LjYyNSAyLjg2NyAxLjYzMi4yNDcuNDE1LjExLjk1Mi0uMzA1IDEuMTk5LS40MTcuMjQ2LS45NTMuMTEtMS4xOTktLjMwNS0uMjg5LS40ODYtLjc5OS0uNzc2LTEuMzYzLS43NzZIMjMuMDJjLS44NzMgMC0xLjU4My43MS0xLjU4MyAxLjU4M3MuNzA5IDEuNTg0IDEuNTgzIDEuNTg0eiIvPjwvc3ZnPg==', + id: '[反赞]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0VGOTY0NSIgZD0iTTMyLjMwMiAyNC4zNDdjLS42OTUtMS4wMS0uMzA3LTIuNDctLjQ4LTQuMDgyLS4xNzgtMi42My0xLjMwOC01LjE3OC0zLjUtNy4yMTZsLTcuNDY2LTYuOTQycy0xLjQ3MS0xLjM2OS0yLjg0MS4xMDNjLTEuMzY4IDEuNDcxLjEwNCAyLjg0LjEwNCAyLjg0bDMuMTU0IDIuOTM0IDIuNzM0IDIuNTQycy0uNjg1LjczNi0zLjcxMS0yLjA3OGwtMTAuMjItOS41MDZzLTEuNDczLTEuMzY4LTIuODQyLjEwNGMtMS4zNjggMS40NzEuMTAzIDIuODQuMTAzIDIuODRsOS42NjQgOC45ODljLS4wMjEtLjAyLS43MzEuNjkyLS43NDQuNjhMNS45MTcgNS45MzhzLTEuNDcyLTEuMzY5LTIuODQxLjEwM2MtMS4zNjkgMS40NzIuMTAzIDIuODQuMTAzIDIuODRMMTMuNTIgMTguNWMuMDEyLjAxMi0uNjU0Ljc2NC0uNjM0Ljc4M2wtOC45Mi04LjI5OHMtMS40NzItMS4zNjktMi44NDEuMTAzYy0xLjM2OSAxLjQ3Mi4xMDMgMi44NDEuMTAzIDIuODQxbDkuNDg0IDguODJjLjA4Ny4wODEtLjUuOTA4LS4zOTEgMS4wMDlsLTYuODM0LTYuMzU2cy0xLjQ3Mi0xLjM2OS0yLjg0MS4xMDRjLTEuMzY5IDEuNDcyLjEwMyAyLjg0MS4xMDMgMi44NDFMMTEuODk2IDMwLjcxYzEuODYxIDEuNzMxIDMuNzcyIDIuNjA3IDYuMDc2IDIuOTI4LjQ2OS4wNjUgMS4wNjkuMDY1IDEuMzE1LjA5Ni43NzcuMDk4IDEuNDU5LjM3NCAyLjM3Mi45MzQgMS4xNzUuNzIgMi45MzggMS4wMiAzLjk1MS0uMDYzbDMuNDU0LTMuNjk1IDMuMTg5LTMuNDEyYzEuMDEyLTEuMDgyLjgzMS0yLjAxNi4wNDktMy4xNTF6Ii8+PHBhdGggZD0iTTEuOTU2IDM1LjAyNmMtLjI1NiAwLS41MTItLjA5OC0uNzA3LS4yOTMtLjM5MS0uMzkxLS4zOTEtMS4wMjMgMC0xLjQxNEw0LjggMjkuNzdjLjM5MS0uMzkxIDEuMDIzLS4zOTEgMS40MTQgMHMuMzkxIDEuMDIzIDAgMS40MTRsLTMuNTUxIDMuNTVjLS4xOTUuMTk1LS40NTEuMjkyLS43MDcuMjkyem02Ljc0Ni45MjJjLS4xMDkgMC0uMjIxLS4wMTgtLjMzMS0uMDU2LS41MjEtLjE4Mi0uNzk2LS43NTItLjYxMy0xLjI3NGwuOTcxLTIuNzczYy4xODItLjUyMS43NTMtLjc5NSAxLjI3NC0uNjE0LjUyMS4xODMuNzk2Ljc1My42MTMgMS4yNzRsLS45NzEgMi43NzNjLS4xNDQuNDEyLS41My42Ny0uOTQzLjY3em0tNy42NjctNy42NjdjLS40MTIgMC0uNzk4LS4yNTctLjk0My0uNjY3LS4xODQtLjUyMS4wODktMS4wOTIuNjEtMS4yNzZsMi40OTUtLjg4MWMuNTIzLS4xOCAxLjA5Mi4wOTEgMS4yNzYuNjEuMTg0LjUyMS0uMDg5IDEuMDkyLS42MSAxLjI3NmwtMi40OTUuODgxYy0uMTExLjAzOS0uMjIzLjA1Ny0uMzMzLjA1N3ptMjkuNDYtMjEuNzY3Yy0uMjU2IDAtLjUxMi0uMDk4LS43MDctLjI5My0uMzkxLS4zOTEtLjM5MS0xLjAyNCAwLTEuNDE1bDMuNTUyLTMuNTVjLjM5MS0uMzkgMS4wMjMtLjM5IDEuNDE0IDBzLjM5MSAxLjAyNCAwIDEuNDE1bC0zLjU1MiAzLjU1Yy0uMTk1LjE5Ni0uNDUxLjI5My0uNzA3LjI5M3ptLTQuMTY0LTEuNjk3Yy0uMTA5IDAtLjIyMS0uMDE5LS4zMy0uMDU3LS41MjEtLjE4Mi0uNzk2LS43NTItLjYxNC0xLjI3NGwuOTctMi43NzNjLjE4My0uNTIxLjc1Mi0uNzk2IDEuMjc0LS42MTQuNTIxLjE4Mi43OTYuNzUyLjYxNCAxLjI3NGwtLjk3IDIuNzczYy0uMTQ0LjQxMy0uNTMxLjY3MS0uOTQ0LjY3MXptNi4xNDMgNS43NzRjLS40MTIgMC0uNzk4LS4yNTctLjk0My0uNjY3LS4xODQtLjUyMS4wOS0xLjA5Mi42MS0xLjI3NmwyLjQ5NC0uODgxYy41MjItLjE4NSAxLjA5Mi4wOSAxLjI3Ni42MS4xODQuNTIxLS4wOSAxLjA5Mi0uNjEgMS4yNzZsLTIuNDk0Ljg4MWMtLjExMS4wMzktLjIyMy4wNTctLjMzMy4wNTd6IiBmaWxsPSIjRkE3NDNFIi8+PHBhdGggZmlsbD0iI0ZGREI1RSIgZD0iTTM1LjM5IDIzLjgyMmMtLjY2MS0xLjAzMi0uMjI0LTIuNDc5LS4zNDItNC4wOTYtLjA5LTIuNjM0LTEuMTMzLTUuMjE5LTMuMjU1LTcuMzNsLTcuMjI4LTcuMTg5cy0xLjQyNC0xLjQxNy0yLjg0My4wMDhjLTEuNDE3IDEuNDI0LjAwOCAyLjg0Mi4wMDggMi44NDJsMy4wNTQgMy4wMzkgMi42NDYgMi42MzJzLS43MS43MTItMy42MzktMi4yMDJjLTIuOTMxLTIuOTE1LTkuODk0LTkuODQ1LTkuODk0LTkuODQ1cy0xLjQyNS0xLjQxNy0yLjg0My4wMDhjLTEuNDE4IDEuNDI0LjAwNyAyLjg0MS4wMDcgMi44NDFsOS4zNTYgOS4zMWMtLjAyLS4wMi0uNzU0LjY2Ny0uNzY3LjY1NEw5LjY0IDQuNTM0cy0xLjQyNS0xLjQxOC0yLjg0My4wMDdjLTEuNDE3IDEuNDI1LjAwNyAyLjg0Mi4wMDcgMi44NDJsMTAuMDExIDkuOTYyYy4wMTIuMDEyLS42OC43NDEtLjY2Ljc2MUw3LjUyIDkuNTEzcy0xLjQyNS0xLjQxNy0yLjg0My4wMDguMDA3IDIuODQzLjAwNyAyLjg0M2w5LjE4MSA5LjEzNWMuMDg0LjA4My0uNTMuODkxLS40MjUuOTk2bC02LjYxNi02LjU4M3MtMS40MjUtMS40MTctMi44NDMuMDA4LjAwNyAyLjg0My4wMDcgMi44NDNsMTAuNzkgMTAuNzMyYzEuODAyIDEuNzkzIDMuNjgyIDIuNzMyIDUuOTc0IDMuMTMxLjQ2Ny4wODEgMS4wNjcuMTAxIDEuMzExLjE0Ljc3My4xMjQgMS40NDUuNDIzIDIuMzQgMS4wMTQgMS4xNS43NTkgMi45MDIgMS4xMTggMy45NTEuMDdsMy41NzctMy41NzYgMy4zMDItMy4zMDJjMS4wNDktMS4wNS45LTEuOTkuMTU3LTMuMTV6Ii8+PC9zdmc+', + id: '[鼓掌]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0UxRThFRCIgZD0iTTM2IDExYzAtMS4xMDQtLjg5Ni0yLTItMnMtMiAuODk2LTIgMmMwIDAtLjAxMSAzLjI4NS0zIDMuODk0VjEyYzAtNi4wNzUtNC45MjUtMTEtMTEtMTFTNyA1LjkyNSA3IDEydjMuMjM3QzEuNzc4IDE2LjgwNiAwIDIzLjIzMSAwIDI3YzAgMS4xMDQuODk2IDIgMiAyczItLjg5NiAyLTJjMCAwIC4wMDItMy41NCAzLjMzNi0zLjk1OEM3LjgzOCAyNy44ODMgOC45NTQgMzMgMTEgMzNoMWM0IDAgMyAyIDcgMnMzLTIgNi0yIDIuMzk1IDIgNiAyYzEuNjU3IDAgMy0xLjM0MyAzLTMgMC0uNjc1LTIuMjc0LTQuOTk0LTMuNzU1LTkuMjY4QzM1Ljk4MSAyMS4zNDggMzYgMTQuNTggMzYgMTF6Ii8+PGNpcmNsZSBmaWxsPSIjMjkyRjMzIiBjeD0iMTMiIGN5PSIxMiIgcj0iMiIvPjxjaXJjbGUgZmlsbD0iIzI5MkYzMyIgY3g9IjIzIiBjeT0iMTIiIHI9IjQiLz48Y2lyY2xlIGZpbGw9IiM5QUFBQjQiIGN4PSIyMyIgY3k9IjEzIiByPSIyIi8+PHBhdGggZmlsbD0iIzI5MkYzMyIgZD0iTTIyLjE5MiAxOS40OTFjMi42NSAxLjk4NyAzLjU5MSA1LjIxMSAyLjEgNy4xOTktMS40OTEgMS45ODgtNC44NDkgMS45ODgtNy41IDAtMi42NS0xLjk4Ny0zLjU5MS01LjIxMS0yLjEtNy4xOTkgMS40OTItMS45ODkgNC44NDktMS45ODggNy41IDB6Ii8+PC9zdmc+', + id: '[骷髅]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48Y2lyY2xlIGZpbGw9IiNGRjc4OTIiIGN4PSI3IiBjeT0iMTgiIHI9IjUiLz48Y2lyY2xlIGZpbGw9IiNGRjc4OTIiIGN4PSIyOSIgY3k9IjE4IiByPSI1Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTI3LjMzNSAyMS42MjljLS4xNzgtLjE2MS0uNDQ0LS4xNzEtLjYzNS0uMDI5LS4wMzkuMDI5LTMuOTIyIDIuOS04LjcgMi45LTQuNzY2IDAtOC42NjItMi44NzEtOC43LTIuOS0uMTkxLS4xNDItLjQ1Ny0uMTMtLjYzNS4wMjktLjE3Ny4xNi0uMjE3LjQyNC0uMDk0LjYyOEM4LjcgMjIuNDcyIDExLjc4OCAyNy41IDE4IDI3LjVzOS4zMDEtNS4wMjggOS40MjktNS4yNDNjLjEyMy0uMjA1LjA4NC0uNDY4LS4wOTQtLjYyOHpNNy45OTkgMTVjLS4xNSAwLS4zMDMtLjAzNC0uNDQ2LS4xMDYtLjQ5NC0uMjQ3LS42OTQtLjg0OC0uNDQ3LTEuMzQyQzcuMTU4IDEzLjQ0OCA4LjQyNCAxMSAxMiAxMWMzLjU3NyAwIDQuODQyIDIuNDQ5IDQuODk0IDIuNTUzLjI0Ny40OTQuMDQ3IDEuMDk1LS40NDcgMS4zNDItLjQ5Mi4yNDUtMS4wODUuMDQ5LTEuMzM2LS40MzZDMTUuMDY4IDE0LjM3OSAxNC4yODEgMTMgMTIgMTNjLTIuMzE3IDAtMy4wOTkgMS40MzMtMy4xMDYgMS40NDctLjE3NS4zNTEtLjUyOC41NTMtLjg5NS41NTN6bTIwLjAwMiAwYy0uMzY3IDAtLjcyLS4yMDItLjg5Ni0uNTUzQzI3LjA4IDE0LjQwMSAyNi4yOTkgMTMgMjQgMTNzLTMuMDggMS40MDEtMy4xMTIgMS40NmMtLjI2LjQ4MS0uODU5LjY3LTEuMzQ1LjQyLS40ODUtLjI1Mi0uNjgyLS44MzktLjQzOC0xLjMyOEMxOS4xNTcgMTMuNDQ5IDIwLjQyMyAxMSAyNCAxMXM0Ljg0MyAyLjQ0OSA0Ljg5NSAyLjU1M2MuMjQ3LjQ5NC4wNDcgMS4wOTUtLjQ0NyAxLjM0Mi0uMTQ0LjA3MS0uMjk3LjEwNS0uNDQ3LjEwNXoiLz48L3N2Zz4=', + id: '[开心]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguMzEyIDE1LjYxMmMtLjE3NS0uMTQyLS40MjYtLjE0Ny0uNjEtLjAxNC0uMDEyLjAwOS0xLjI2MS45MDItMy43MDIuOTAyLTIuNDQgMC0zLjY5LS44OTMtMy43LS45LS4xODMtLjEzNy0uNDM1LS4xMzMtLjYxMS4wMDktLjE3OC4xNDItLjIzOC4zODYtLjE0Ni41OTQuMDYuMTM1IDEuNSAzLjI5NyA0LjQ1NyAzLjI5NyAyLjk1OCAwIDQuMzk3LTMuMTYyIDQuNDU3LTMuMjk3LjA5Mi0uMjA3LjAzMi0uNDQ5LS4xNDUtLjU5MXptLTEyLjYxLS4wMTRjLS4wMTIuMDA5LTEuMjYuOTAyLTMuNzAyLjkwMi0yLjQ0MSAwLTMuNjktLjg5My0zLjctLjktLjE4My0uMTM3LS40MzQtLjEzMy0uNjExLjAwOS0uMTc4LjE0Mi0uMjM4LjM4Ni0uMTQ2LjU5NC4wNi4xMzUgMS41IDMuMjk3IDQuNDU3IDMuMjk3IDIuOTU4IDAgNC4zOTctMy4xNjIgNC40NTctMy4yOTcuMDkyLS4yMDcuMDMyLS40NDktLjE0NS0uNTkxLS4xNzYtLjE0My0uNDI4LS4xNDctLjYxLS4wMTR6TTI5LjAwMSAxM2MtLjMwNSAwLS42MDQtLjEzOC0uODAxLS40LTIuNTkyLTMuNDU2LTYuOTYxLTIuNjI4LTcuMDA0LTIuNjItLjU0Ny4xMDgtMS4wNjgtLjI0My0xLjE3Ny0uNzg0LS4xMDgtLjU0MS4yNDMtMS4wNjguNzg0LTEuMTc3LjIzMS0uMDQ3IDUuNjU3LTEuMDcyIDguOTk2IDMuMzguMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xNzkuMTM2LS4zODkuMjAxLS41OTguMjAxek02Ljk5OSAxM2MtLjIwOCAwLS40MTktLjA2NS0uNTk5LS4yLS40NDItLjMzMS0uNTMxLS45NTgtLjItMS40IDMuMzM5LTQuNDU0IDguNzY2LTMuNDI2IDguOTk2LTMuMzguNTQyLjEwOC44OTMuNjM1Ljc4NCAxLjE3Ny0uMTA4LjU0LS42MzQuODkxLTEuMTc0Ljc4NS0uMTg2LS4wMzUtNC40MzYtLjgwOC03LjAwNiAyLjYxOC0uMTk2LjI2Mi0uNDk3LjQtLjgwMS40em0xNi4yNTUgMTAuNTc3Yy0uMTg4LS4xMTEtLjQzMi0uMDg2LS41OTcuMDYtLjAxLjAwOC0xLjAxMy44NjMtNC42NTcuODYzLTMuNjQxIDAtNC42NDYtLjg1NC00LjY0Ni0uODU0LS4xNTktLjE2LS40MDQtLjE5LS42LS4wODItLjE5NS4xMTEtLjI5My4zMzktLjIzOC41NTcuMDEuMDQ0IDEuMTQ0IDQuMzc5IDUuNDg0IDQuMzc5czUuNDc0LTQuMzM1IDUuNDg1LTQuMzc5Yy4wNTMtLjIxMy0uMDQ0LS40MzEtLjIzMS0uNTQ0eiIvPjwvc3ZnPg==', + id: '[满意]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMTggMjEuODQ5Yy0yLjk2NiAwLTQuOTM1LS4zNDYtNy4zNjktLjgxOS0uNTU3LS4xMDYtMS42MzggMC0xLjYzOCAxLjYzOCAwIDMuMjc1IDMuNzYzIDcuMzY5IDkuMDA3IDcuMzY5czkuMDA3LTQuMDk0IDkuMDA3LTcuMzY5YzAtMS42MzgtMS4wODItMS43NDUtMS42MzgtMS42MzgtMi40MzQuNDczLTQuNDAyLjgxOS03LjM2OS44MTkiLz48cGF0aCBmaWxsPSIjRTc1QTcwIiBkPSJNMTYuNjUgMy4yODFDMTUuNzkxLjg1IDEzLjEyNi0uNDI2IDEwLjY5NC40MzFjLTEuNDc2LjUyLTIuNTIxIDEuNzExLTIuOTI4IDMuMTA0LTEuMTkxLS44MjktMi43NTEtMS4xLTQuMjI1LS41OEMxLjExMSAzLjgxMy0uMTY3IDYuNDguNjkyIDguOTExYy4xMjIuMzQ0LjI4NC42NjMuNDcyLjk1OCAxLjk1MSAzLjU4MiA3LjU4OCA2LjEgMTEuMDAxIDYuMTMxIDIuNjM3LTIuMTY3IDUuNDQ2LTcuNjY1IDQuNzE4LTExLjY3Ny0uMDM4LS4zNDgtLjExMy0uNjk4LS4yMzMtMS4wNDJ6bTIuNyAwQzIwLjIwOS44NSAyMi44NzUtLjQyNiAyNS4zMDYuNDMxYzEuNDc2LjUyIDIuNTIxIDEuNzExIDIuOTI5IDMuMTA0IDEuMTkxLS44MjkgMi43NTEtMS4xIDQuMjI1LS41OCAyLjQzLjg1OCAzLjcwNyAzLjUyNSAyLjg1IDUuOTU2LS4xMjMuMzQ0LS4yODQuNjYzLS40NzMuOTU4LTEuOTUxIDMuNTgyLTcuNTg4IDYuMS0xMS4wMDIgNi4xMzEtMi42MzctMi4xNjctNS40NDUtNy42NjUtNC43MTctMTEuNjc3LjAzNy0uMzQ4LjExMi0uNjk4LjIzMi0xLjA0MnoiLz48L3N2Zz4=', + id: '[色]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjQuMzI3IDIzLjYyMmMtLjE1My0uMTMyLS4zNjgtLjE1OS0uNTUxLS4wNjlsLTQgMmMtMS44NzEuOTM1LTYuNzI3Ljk0Ny02Ljc3Ni45NDctLjI3NiAwLS41LjIyNC0uNS41IDAgLjE4NS4xMDEuMzQ3LjI1LjQzM3YuMDAxaC4wMDF2LjAwMWMuMDcxLjA0LjE1My4wNjMuMjQuMDY1aDcuMDA4YzIuNjU4IDAgNC4wODktMi4xODUgNC40NzUtMy4zNDIuMDY0LS4xOTIuMDA2LS40MDMtLjE0Ny0uNTM2ek0zMS4wMDEgMTZjLS4zMDUgMC0uNjA0LS4xMzgtLjgwMS0uNC0yLjY0MS0zLjUyMS02LjA2MS0zLjU5OS02LjIwNi0zLjYtLjU1LS4wMDYtLjk5NC0uNDU2LS45OTEtMS4wMDUuMDAzLS41NTEuNDQ3LS45OTUuOTk3LS45OTUuMTg0IDAgNC41MzcuMDUgNy44IDQuNC4zMzIuNDQyLjI0MiAxLjA2OS0uMiAxLjQtLjE4LjEzNS0uMzkuMi0uNTk5LjJ6TTQuOTk5IDE2Yy0uMjA4IDAtLjQxOS0uMDY1LS41OTktLjItLjQ0Mi0uMzMxLS41MzEtLjk1OC0uMi0xLjRDNy40NjIgMTAuMDUgMTEuODE2IDEwIDEyIDEwYy41NTIgMCAxIC40NDggMSAxIDAgLjU1MS0uNDQ1Ljk5OC0uOTk2IDEtLjE1Ni4wMDItMy41NjkuMDg2LTYuMjA1IDMuNi0uMTk1LjI2Mi0uNDk2LjQtLjguNHptMTAuODk4IDEuMzk2Yy4wMjMtLjA1Mi4wNTktLjA5Ni4wNzMtLjE1NC4xMzQtLjUzNi0uMTkyLTEuMDc5LS43MjctMS4yMTMtLjE4LS4wNDUtNC40NjctMS4wOC03Ljc5NyAxLjEzOC0uNDU5LjMwNi0uNTgzLjkyNy0uMjc3IDEuMzg3LjE5Mi4yOS41MDkuNDQ2LjgzMi40NDYuMTkgMCAuMzgzLS4wNTUuNTU0LS4xNjggMS4wOTItLjcyOSAyLjM2Mi0uOTk1IDMuNDY4LTEuMDYxLS4wMDkuMDc2LS4wMjMuMTUxLS4wMjMuMjI5IDAgMS4xMDQuODk2IDIgMiAyczItLjg5NiAyLTJjMC0uMjEyLS4wNDItLjQxMi0uMTAzLS42MDR6bTExLjk5OS0uMDAxYy4wMjMtLjA1Mi4wNTktLjA5NS4wNzMtLjE1Mi4xMzUtLjUzNi0uMTkxLTEuMDc5LS43MjctMS4yMTMtLjE4LS4wNDUtNC40NjYtMS4wOC03Ljc5NyAxLjEzOC0uNDYuMzA2LS41ODQuOTI3LS4yNzcgMS4zODcuMTkyLjI4OS41MS40NDUuODMzLjQ0NS4xOSAwIC4zODMtLjA1NS41NTQtLjE2OCAxLjA5Mi0uNzI5IDIuMzYxLS45OTQgMy40NjktMS4wNi0uMDA5LjA3Ni0uMDI0LjE1LS4wMjQuMjI4IDAgMS4xMDQuODk2IDIgMiAyczItLjg5NiAyLTJjMC0uMjEyLS4wNDItLjQxMy0uMTA0LS42MDV6Ii8+PC9zdmc+', + id: '[得意]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48Y2lyY2xlIGZpbGw9IiNGRjc4OTIiIGN4PSI3IiBjeT0iMjEiIHI9IjUiLz48Y2lyY2xlIGZpbGw9IiNGRjc4OTIiIGN4PSIyOSIgY3k9IjIxIiByPSI1Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTI4LjQxNiAxNy43MjNDMjguMzU1IDE3LjYzMiAyNi45MDEgMTUuNSAyNCAxNS41Yy0yLjkgMC00LjM1NSAyLjEzMi00LjQxNiAyLjIyMy0uMTM1LjIwMi0uMTA0LjQ3LjA3MS42MzguMTc0LjE2Ny40NDYuMTg1LjY0My4wNDIuMDEyLS4wMSAxLjI2Mi0uOTAzIDMuNzAyLS45MDMgMi40MjYgMCAzLjY3NC44ODEgMy43MDIuOTAxLjA4OS4wNjYuMTk0LjA5OS4yOTguMDk5LjEyNCAwIC4yNDgtLjA0Ni4zNDQtLjEzNy4xNzctLjE2Ny4yMDctLjQzOC4wNzItLjY0ek0xMiAxNS41Yy0yLjkgMC00LjM1NSAyLjEzMi00LjQxNiAyLjIyMy0uMTM0LjIwMi0uMTA0LjQ3LjA3MS42MzguMTc1LjE2Ny40NDcuMTg1LjY0Mi4wNDIuMDEzLS4wMSAxLjI2Mi0uOTAzIDMuNzAzLS45MDMgMi40MjYgMCAzLjY3NC44ODEgMy43MDIuOTAxLjA4OS4wNjYuMTk0LjA5OS4yOTguMDk5LjEyNCAwIC4yNDgtLjA0Ni4zNDQtLjEzNy4xNzctLjE2Ny4yMDgtLjQzOC4wNzItLjY0MS0uMDYxLS4wOS0xLjUxNS0yLjIyMi00LjQxNi0yLjIyMnpNMjEuODcxIDI3YzEuMzM1LS40MTIgMi42MjktMS4xNTYgMi42MjktMi41IDAtMi42MTktNC45MTItMi45NjgtNS40NzMtMi45OTktLjI3Ny0uMDM2LS41MS4xOTQtLjUyNi40NjgtLjAxNy4yNzQuMTkuNTExLjQ2NC41My4wMzUuMDAyIDMuNTM1LjI5OSAzLjUzNSAyLjAwMXMtMy41IDEuOTk5LTMuNTM1IDIuMDAxYy0uMDEuMDAxLS4wMTcuMDA2LS4wMjYuMDA3LS4xMjQuMDA4LS4yMy4wNjUtLjMxLjE1OWwtLjAxNS4wMjFjLS4wMjkuMDM5LS4wNTUuMDc4LS4wNzMuMTI1LS4wMTEuMDI3LS4wMTYuMDU3LS4wMjEuMDg2LS4wMDUuMDI0LS4wMTcuMDQ2LS4wMTkuMDctLjAwMS4wMS4wMDQuMDIuMDA0LjAzMXMtLjAwNS4wMjEtLjAwNC4wMzFjLjAwMi4wMjUuMDEzLjA0Ni4wMTkuMDcuMDA2LjAyOS4wMTEuMDU5LjAyMi4wODcuMDEzLjAzMi4wMzIuMDYuMDUxLjA4OC4wMTcuMDIzLjAzLjA0Ny4wNS4wNjcuMDIzLjAyNC4wNTIuMDQzLjA4MS4wNjIuMDI0LjAxNy4wNDUuMDMzLjA3MS4wNDYuMDMxLjAxNS4wNjUuMDIxLjEwMS4wMjcuMDIzLjAwNi4wNDQuMDE4LjA2OS4wMi4wMzUuMDAzIDMuNTM1LjMgMy41MzUgMi4wMDJzLTMuNSAxLjk5OS0zLjUzNSAyLjAwMWMtLjI3My4wMi0uNDgxLjI1Ny0uNDY0LjUzLjAxNy4yNjUuMjM2LjQ2OS40OTkuNDY5bC4wMjctLjAwMWMuNTYxLS4wMzEgNS40NzMtLjM4IDUuNDczLTIuOTk5IDAtMS4zNDQtMS4yOTQtMi4wODgtMi42MjktMi41em05LjEzLTExYy0uMzA1IDAtLjYwNC0uMTM4LS44MDEtLjQtMi42NDEtMy41MjEtNi4wNjEtMy41OTktNi4yMDYtMy42LS41NS0uMDA2LS45OTQtLjQ1Ni0uOTkxLTEuMDA1LjAwMy0uNTUxLjQ0Ny0uOTk1Ljk5Ny0uOTk1LjE4NCAwIDQuNTM3LjA1IDcuOCA0LjQuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xOC4xMzUtLjM5LjItLjU5OS4yek00Ljk5OSAxNmMtLjIwOCAwLS40MTktLjA2NS0uNTk5LS4yLS40NDItLjMzMS0uNTMxLS45NTgtLjItMS40QzcuNDYyIDEwLjA1IDExLjgxNiAxMCAxMiAxMGMuNTUyIDAgMSAuNDQ4IDEgMSAwIC41NTEtLjQ0NS45OTgtLjk5NiAxLS4xNTYuMDAyLTMuNTY5LjA4Ni02LjIwNSAzLjYtLjE5NS4yNjItLjQ5Ni40LS44LjR6Ii8+PC9zdmc+', + id: '[亲亲]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0I0QyIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjU0NzFCIiBkPSJNMTUuNDU3IDE1LjgxNWMtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDQuNTkxLjE3Ny4xNDMuNDI3LjE0Ny42MS4wMTQuMDEzLS4wMDkgMS4yNjItLjkwMiAzLjcwMy0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5My4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTEtLjEwOS4xNzktLjE0Mi4yMzgtLjM4Ni4xNDYtLjU5NHoiLz48cGF0aCBmaWxsPSIjRjRGN0Y5IiBkPSJNMzEgMTMuNWMwIDMuNTktMi45MSA2LjUtNi41IDYuNVMxOCAxNy4wOSAxOCAxMy41IDIwLjkxIDcgMjQuNSA3IDMxIDkuOTEgMzEgMTMuNXoiLz48Y2lyY2xlIGZpbGw9IiMyOTJGMzMiIGN4PSIyNC41IiBjeT0iMTMuNSIgcj0iMi41Ii8+PHBhdGggZmlsbD0iIzY1NDcxQiIgZD0iTTcgMjEuMjYyYzAgMy45NjQgNC41OTYgOSAxMSA5czExLTUgMTEtOWMwIDAtMTAuMzMzIDIuNzU2LTIyIDB6Ii8+PHBhdGggZmlsbD0iI0U4NTk2RSIgZD0iTTE4LjU0NSAyMy42MDRsLTEuMDkxLS4wMDVjLTMuMjE2LS4wNzQtNS40NTQtLjU5Ni01LjQ1NC0uNTk2djYuOTYxYzAgMyAyIDYgNiA2czYtMyA2LTZ2LTYuOTJjLTEuOTIyLjM5NC0zLjc4Ny41NDItNS40NTUuNTZ6Ii8+PHBhdGggZmlsbD0iI0REMkY0NSIgZD0iTTE4IDMxLjg0M2MuMzAxIDAgLjU0NS0uMjQ0LjU0NS0uNTQ1di03LjY5NGwtMS4wOTEtLjAwNXY3LjY5OWMuMDAxLjMwMS4yNDUuNTQ1LjU0Ni41NDV6Ii8+PC9zdmc+', + id: '[戏弄]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0I0QyIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjU0NzFCIiBkPSJNMzAuNiAxOC4yYy0uMTE0LS4wODUtMS45MzEtMS40MjYtNC42NDYtMi4zNDQuMDI2LS4xMTUuMDQ2LS4yMzMuMDQ2LS4zNTYgMC0uMzY5LS4xMzktLjcwMy0uMzU5LS45NjQgMS44MDItLjUyIDMuMzM0LS41MzYgMy4zNjEtLjUzNi41NTEtLjAwMi45OTgtLjQ1Ljk5Ny0xLjAwMi0uMDAxLS41NTEtLjQ0Ny0uOTk4LS45OTktLjk5OC0uMjIxIDAtNS40NTEuMDM4LTguNzA3IDMuMjkzLS4yODYuMjg2LS4zNzIuNzE2LS4yMTcgMS4wOS4xNTQuMzczLjUyLjYxNy45MjQuNjE3IDQuNTkgMCA4LjM2MyAyLjc3MyA4LjQwMSAyLjgwMS4xOC4xMzQuMzkuMTk5LjU5OC4xOTkuMzA1IDAgLjYwNS0uMTM5LjgwMi0uNDAxLjMzLS40NDMuMjQtMS4wNjgtLjIwMS0xLjM5OXptLTE0Ljg5My0yLjkwN0MxMi40NTIgMTIuMDM4IDcuMjIxIDEyIDcgMTJjLS41NTIgMC0uOTk5LjQ0Ny0uOTk5Ljk5OC0uMDAxLjU1Mi40NDYgMSAuOTk4IDEuMDAyLjAyNiAwIDEuNTU4LjAxNiAzLjM2MS41MzYtLjIyMS4yNjEtLjM2LjU5NS0uMzYuOTY0IDAgLjEyMy4wMTkuMjQxLjA0Ny4zNTYtMi43MTYuOTE4LTQuNTMzIDIuMjU5LTQuNjQ3IDIuMzQ0LS40NDIuMzMxLS41MzEuOTU4LS4yIDEuNC4xOTYuMjYyLjQ5Ny40LjgwMS40LjIwOCAwIC40MTktLjA2NS41OTktLjIuMDM3LS4wMjggMy43ODctMi44IDguNC0yLjguNDA0IDAgLjc2OS0uMjQ0LjkyNC0uNjE3LjE1NS0uMzc0LjA2OS0uODA0LS4yMTctMS4wOXpNNyAyMS4yNjNjMCAzLjk2NCA0LjU5NiA5IDExIDlzMTEtNSAxMS05YzAgMC0xMC4zMzMgMi43NTYtMjIgMHoiLz48cGF0aCBmaWxsPSIjRTg1OTZFIiBkPSJNMTguNTQ1IDIzLjYwNGwtMS4wOTEtLjAwNWMtMy4yMTYtLjA3NC01LjQ1NC0uNTk2LTUuNDU0LS41OTZ2Ni45NjFjMCAzIDIgNiA2IDZzNi0zIDYtNnYtNi45MmMtMS45MjIuMzk1LTMuNzg3LjU0My01LjQ1NS41NnoiLz48cGF0aCBmaWxsPSIjREQyRjQ1IiBkPSJNMTggMzEuODQ0Yy4zMDEgMCAuNTQ1LS4yNDQuNTQ1LS41NDV2LTcuNjk0bC0xLjA5MS0uMDA1djcuNjk5Yy4wMDEuMzAxLjI0NS41NDUuNTQ2LjU0NXoiLz48L3N2Zz4=', + id: '[吐舌]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjMuNDg1IDI4Ljg3OUMyMy40NzQgMjguODM1IDIyLjM0IDI0LjUgMTggMjQuNXMtNS40NzQgNC4zMzUtNS40ODUgNC4zNzljLS4wNTMuMjEzLjA0NC40MzEuMjMyLjU0NC4xODguMTEyLjQzMy4wODYuNTk2LS4wNi4wMDktLjAwOCAxLjAxMy0uODYzIDQuNjU3LS44NjMgMy41OSAwIDQuNjE3LjgzIDQuNjU2Ljg2My4wOTUuMDkuMjE5LjEzNy4zNDQuMTM3LjA4NCAwIC4xNjktLjAyMS4yNDYtLjA2NC4xOTYtLjExMi4yOTQtLjMzOS4yMzktLjU1N3ptMi4yOTUtMTMuMjM4Yy0uMzQxLS4wOTMtLjY5Mi0uMTQtMS4wNDMtLjE0LTIuMzQ1IDAtNC4wNTMgMi4wNi00LjEyNSAyLjE0Ny0uMTQzLjE3Ni0uMTQ4LjQyNS0uMDE3LjYwOS4xMzQuMTg0LjM3NC4yNTMuNTg2LjE3My4wMDUtLjAwMi41NzItLjIxNCAxLjU2NC0uMjE0LjcxNCAwIDEuNDY5LjEwNyAyLjI0NC4zMTkgMi4zNDIuNjM4IDMuMzEzIDEuODE4IDMuMzM0IDEuODQ0LjA5OC4xMjQuMjQzLjE5MS4zOTQuMTkxLjA2NiAwIC4xMzQtLjAxNC4xOTctLjA0MS4yMDktLjA5LjMzMS0uMzEuMjk3LS41MzQtLjAyMS0uMTQ2LS41NzctMy41NzYtMy40MzEtNC4zNTR6bS0xNC41NTQtLjEyOWMtLjMxNyAwLS42MzYuMDM5LS45NDcuMTE2LTIuODcuNzA3LTMuNTEzIDQuMTIxLTMuNTM5IDQuMjY3LS4wNC4yMjMuMDc2LjQ0My4yODEuNTQuMDY3LjAzMS4xNC4wNDcuMjExLjA0Ny4xNDUgMCAuMjg3LS4wNjMuMzg1LS4xOC4wMS0uMDEyIDEuMDEtMS4xNzggMy4zNzktMS43NjEuNzE0LS4xNzYgMS40MTItLjI2NSAyLjA3My0uMjY1IDEuMTA0IDAgMS43MzIuMjUzIDEuNzM1LjI1NC4wNjcuMDI4LjEzMS4wNC4yMDcuMDQuMjcyLjAxMi41MDktLjIyMS41MDktLjUgMC0uMTY1LS4wOC0uMzExLS4yMDMtLjQwMi0uMzY3LS40MzUtMS45NTMtMi4xNTYtNC4wOTEtMi4xNTZ6Ii8+PC9zdmc+', + id: '[失落]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjMuNDg1IDI4Ljg3OUMyMy40NzQgMjguODM1IDIyLjM0IDI0LjUgMTggMjQuNXMtNS40NzQgNC4zMzUtNS40ODUgNC4zNzljLS4wNTMuMjEzLjA0NC40MzEuMjMyLjU0NC4xODguMTEyLjQzMy4wODYuNTk2LS4wNi4wMDktLjAwOCAxLjAxMy0uODYzIDQuNjU3LS44NjMgMy41OSAwIDQuNjE3LjgzIDQuNjU2Ljg2My4wOTUuMDkuMjE5LjEzNy4zNDQuMTM3LjA4NCAwIC4xNjktLjAyMS4yNDYtLjA2NC4xOTYtLjExMi4yOTQtLjMzOS4yMzktLjU1N3ptLTcuNzgyLTExLjI4MWMtLjAxMy4wMDktMS4yNjIuOTAyLTMuNzAzLjkwMi0yLjQ0MiAwLTMuNjktLjg5My0zLjctLjktLjE5NC0uMTQ2LS40NjYtLjEzMi0uNjQ0LjAzNy0uMTc3LjE2Ny0uMjA4LjQzOC0uMDcyLjY0MS4wNjEuMDkgMS41MTUgMi4yMjIgNC40MTYgMi4yMjIgMi45IDAgNC4zNTUtMi4xMzIgNC40MTYtMi4yMjMuMTM0LS4yMDIuMTA0LS40Ny0uMDcxLS42MzgtLjE3Ni0uMTY5LS40NDktLjE4NC0uNjQyLS4wNDF6bTEyLjY0Mi4wNDJjLS4xNzUtLjE2OS0uNDQ3LS4xODYtLjY0My0uMDQyLS4wMTIuMDA5LTEuMjYyLjkwMi0zLjcwMi45MDItMi40NDEgMC0zLjY5LS44OTMtMy43LS45LS4xOTMtLjE0Ni0uNDY2LS4xMzItLjY0NC4wMzctLjE3Ny4xNjctLjIwNy40MzgtLjA3Mi42NDEuMDYxLjA5IDEuNTE1IDIuMjIyIDQuNDE2IDIuMjIyIDIuOSAwIDQuMzU1LTIuMTMyIDQuNDE2LTIuMjIzLjEzNS0uMjAxLjEwNC0uNDY5LS4wNzEtLjYzN3pNMzEuMDAxIDE2Yy0uMzA1IDAtLjYwNC0uMTM4LS44MDEtLjQtMi42NDEtMy41MjEtNi4wNjEtMy41OTktNi4yMDYtMy42LS41NS0uMDA2LS45OTQtLjQ1Ni0uOTkxLTEuMDA1LjAwMy0uNTUxLjQ0Ny0uOTk1Ljk5Ny0uOTk1LjE4NCAwIDQuNTM3LjA1IDcuOCA0LjQuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xOC4xMzUtLjM5LjItLjU5OS4yek00Ljk5OSAxNmMtLjIwOCAwLS40MTktLjA2NS0uNTk5LS4yLS40NDItLjMzMS0uNTMxLS45NTgtLjItMS40QzcuNDYyIDEwLjA1IDExLjgxNiAxMCAxMiAxMGMuNTUyIDAgMSAuNDQ4IDEgMSAwIC41NTEtLjQ0NS45OTgtLjk5NiAxLS4xNTYuMDAyLTMuNTY5LjA4Ni02LjIwNSAzLjYtLjE5NS4yNjItLjQ5Ni40LS44LjR6Ii8+PHBhdGggZmlsbD0iIzVEQURFQyIgZD0iTTIzIDIzYzYuMjExIDAgMTMgNCAxMyA5IDAgNC0zIDQtMyA0LTggMC0xLTktMTAtMTN6Ii8+PC9zdmc+', + id: '[犯困]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjIgMjdjMCAyLjc2My0xLjc5MSAzLTQgMy0yLjIxIDAtNC0uMjM3LTQtMyAwLTIuNzYxIDEuNzktNiA0LTYgMi4yMDkgMCA0IDMuMjM5IDQgNnptOC0xMmMtLjEyNCAwLS4yNS0uMDIzLS4zNzEtLjA3Mi01LjIyOS0yLjA5MS03LjM3Mi01LjI0MS03LjQ2MS01LjM3NC0uMzA3LS40Ni0uMTgzLTEuMDgxLjI3Ny0xLjM4Ny40NTktLjMwNiAxLjA3Ny0uMTg0IDEuMzg1LjI3NC4wMTkuMDI3IDEuOTMgMi43ODUgNi41NDEgNC42MjkuNTEzLjIwNi43NjMuNzg3LjU1OCAxLjMtLjE1Ny4zOTItLjUzMy42My0uOTI5LjYzek02IDE1Yy0uMzk3IDAtLjc3Mi0uMjM4LS45MjktLjYyOS0uMjA1LS41MTMuMDQ0LTEuMDk1LjU1Ny0xLjMgNC42MTItMS44NDQgNi41MjMtNC42MDIgNi41NDItNC42MjkuMzA4LS40NTYuOTI5LS41NzcgMS4zODctLjI3LjQ1Ny4zMDguNTgxLjkyNS4yNzUgMS4zODMtLjA4OS4xMzMtMi4yMzIgMy4yODMtNy40NiA1LjM3NEM2LjI1IDE0Ljk3NyA2LjEyNCAxNSA2IDE1eiIvPjxwYXRoIGZpbGw9IiM1REFERUMiIGQ9Ik0yNCAxNmg0djE5bC00LS4wNDZWMTZ6TTggMzVsNC0uMDQ2VjE2SDh2MTl6Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTE0Ljk5OSAxOGMtLjE1IDAtLjMwMy0uMDM0LS40NDYtLjEwNS0zLjUxMi0xLjc1Ni03LjA3LS4wMTgtNy4xMDUgMC0uNDk1LjI0OS0xLjA5NS4wNDYtMS4zNDItLjQ0Ny0uMjQ3LS40OTQtLjA0Ny0xLjA5NS40NDctMS4zNDIuMTgyLS4wOSA0LjQ5OC0yLjE5NyA4Ljg5NSAwIC40OTQuMjQ3LjY5NC44NDguNDQ3IDEuMzQyLS4xNzYuMzUtLjUyOS41NTItLjg5Ni41NTJ6bTE0IDBjLS4xNSAwLS4zMDMtLjAzNC0uNDQ2LS4xMDUtMy41MTMtMS43NTYtNy4wNy0uMDE4LTcuMTA1IDAtLjQ5NC4yNDgtMS4wOTQuMDQ3LTEuMzQyLS40NDctLjI0Ny0uNDk0LS4wNDctMS4wOTUuNDQ3LTEuMzQyLjE4Mi0uMDkgNC41MDEtMi4xOTYgOC44OTUgMCAuNDk0LjI0Ny42OTQuODQ4LjQ0NyAxLjM0Mi0uMTc2LjM1LS41MjkuNTUyLS44OTYuNTUyeiIvPjxlbGxpcHNlIGZpbGw9IiM1REFERUMiIGN4PSIxOCIgY3k9IjM0IiByeD0iMTgiIHJ5PSIyIi8+PGVsbGlwc2UgZmlsbD0iI0U3NUE3MCIgY3g9IjE4IiBjeT0iMjciIHJ4PSIzIiByeT0iMiIvPjwvc3ZnPg==', + id: '[流泪]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTUgMjFjMCAyLjIwOS0xLjExOSA0LTIuNSA0UzAgMjMuMjA5IDAgMjFzMS4xMTktNCAyLjUtNFM1IDE4Ljc5MSA1IDIxeiIvPjxwYXRoIGZpbGw9IiNGRkRDNUQiIGQ9Ik0zIDE4LjU2MkMzIDEwLjAzNyA4LjM3MyAzLjEyNSAxNSAzLjEyNXMxMiA2LjkxMiAxMiAxNS40MzhDMjcgMjcuMDg4IDIxLjYyNyAzNCAxNSAzNFMzIDI3LjA4OCAzIDE4LjU2MnoiLz48cGF0aCBmaWxsPSIjREQyRTQ0IiBkPSJNMjAgMGMtLjI0OSAwLS40NzguMDA3LS43MTMuMDEyQzE5LjE5LjAxIDE5LjA5NyAwIDE5IDAgOSAwIDIgNC41ODIgMiA5czYuMzczIDQgMTMgNGM0LjQ0MiAwIDcuNjQ4IDAgOS45NjYtLjA4NkwyNSAxM2w2IDE1aDJzLjM0My0zLjA1NSAxLTdjMS02IC41MzMtMjEtMTQtMjF6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTMwIDIxYzAgMi4yMDktMS4xMTkgNC0yLjUgNFMyNSAyMy4yMDkgMjUgMjFzMS4xMTktNCAyLjUtNCAyLjUgMS43OTEgMi41IDR6Ii8+PHBhdGggZmlsbD0iIzY2MjExMyIgZD0iTTEwIDIxYy0uNTUyIDAtMS0uNDQ3LTEtMXYtMmMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MmMwIC41NTMtLjQ0OCAxLTEgMXptMTAgMGMtLjU1MyAwLTEtLjQ0Ny0xLTF2LTJjMC0uNTUyLjQ0Ny0xIDEtMXMxIC40NDggMSAxdjJjMCAuNTUzLS40NDcgMS0xIDF6Ii8+PHBhdGggZmlsbD0iI0I3NzU1RSIgZD0iTTE2IDI2aC0yYy0uNTUyIDAtMS0uNDQ3LTEtMXMuNDQ4LTEgMS0xaDJjLjU1MiAwIDEgLjQ0NyAxIDFzLS40NDggMS0xIDF6Ii8+PHBhdGggZmlsbD0iI0U2RTdFOCIgZD0iTTI3IDI1YzAtMi0yLjI5My0uNzA3LTMgMC0xIDEtMyAzLTUgMi0yLjgyOC0xLjQxNC00LTEtNC0xcy0xLjE3MS0uNDE0LTQgMWMtMiAxLTQtMS01LTItLjcwNy0uNzA3LTMtMi0zIDBzMSAyIDEgMmMtMSAyIDEgMyAxIDMgMCAzIDMgMyAzIDMgMCAzIDQgMiA0IDIgMSAxIDMgMSAzIDFzMiAwIDMtMWMwIDAgNCAxIDQtMiAwIDAgMyAwIDMtMyAwIDAgMi0xIDEtMyAwIDAgMSAwIDEtMnoiLz48cGF0aCBmaWxsPSIjRkZEQzVEIiBkPSJNMTUgMjhjNyAwIDQgMiAwIDJzLTctMiAwLTJ6Ii8+PGVsbGlwc2UgZmlsbD0iI0QxRDNENCIgY3g9IjMiIGN5PSIxNCIgcng9IjIiIHJ5PSI0Ii8+PGVsbGlwc2UgZmlsbD0iI0QxRDNENCIgY3g9IjI2IiBjeT0iMTQiIHJ4PSIyIiByeT0iNCIvPjxjaXJjbGUgZmlsbD0iI0YxRjJGMiIgY3g9IjMyIiBjeT0iMjkiIHI9IjQiLz48cGF0aCBmaWxsPSIjRjFGMkYyIiBkPSJNMjkgMTJjMCAxLjEwNC0uODk2IDItMiAySDJjLTEuMTA0IDAtMi0uODk2LTItMnYtMWMwLTEuMTA0Ljg5Ni0yIDItMmgyNWMxLjEwNCAwIDIgLjg5NiAyIDJ2MXoiLz48L3N2Zz4=', + id: '[圣诞]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0I0RSIgZD0iTTMzIDE3YzEuMDcyLTYuMDg0IDEuMjYyLTE1LjA0OCAwLTE1Ljg2NEMzMS43MzguMzIyIDIyLjkyOCAzLjM1MyAyMS4wODYgNy40IDIwLjA4MSA3LjEzMiAxOCA3IDE4IDdzLTIuMDEzLjEzMi0zLjAxNy4zOTlDMTMuMTQgMy4zNTIgNC4yNjEuMzIxIDMgMS4xMzYgMS43MzggMS45NTIgMS45MjYgMTAuOTE2IDMgMTdjMCAwLS45NjcgMS45NzktLjk2NyA4Ljk1bDE2LTMuOTY3IDE2IDRDMzQuMDMzIDE4Ljk3OSAzMyAxNyAzMyAxN3oiLz48cGF0aCBmaWxsPSIjRkZEODgyIiBkPSJNMjMuOTQ2IDE5LjI4MmMtMi4wODUgMC00LjI3My40NzctNS45MTMgMS4yODEtMS42MzktLjgwNS0zLjgyNy0xLjI4MS01LjkxMi0xLjI4MS05LjkzMiAwLTEwLjA4OCA1LjEtMTAuMDg4IDYuNjY0QzIuMDMzIDI3LjUwNSA0IDM1Ljk3OSAxOCAzNS45NzlzMTYuMDMzLTguNDQxIDE2LjAzMy0xMGMwLTEuNTY0LS4xNTYtNi42OTctMTAuMDg3LTYuNjk3eiIvPjxwYXRoIGZpbGw9IiNGMjhGMjAiIGQ9Ik0yMy40MDYgOC4wNTRjMi4xNy0yLjM4MyA2LjY4MS00LjE3MiA3LjYwNy0zLjk0NS43NTIuMTgyLjYzNSA2LjM4Ny4wMzEgOS45MzgtMi41NjItNC4yNTEtNy42MzgtNS45OTMtNy42MzgtNS45OTN6bS0xMC43NDYgMGMtMi4xNjgtMi4zODMtNi42OC00LjE3Mi03LjYwNi0zLjk0NS0uNzU0LjE4Mi0uNjM3IDYuMzg3LS4wMzEgOS45MzggMi41NjMtNC4yNTEgNy42MzctNS45OTMgNy42MzctNS45OTN6Ii8+PHBhdGggZmlsbD0iI0ZBQUEzNSIgZD0iTTIyLjA0IDIwYzAtNC42OTMtMS44MDktMTMtNC4wNC0xM3MtNC4wNCA4LjMwNy00LjA0IDEzYzAgNC42OTUgMS44MDkgMiA0LjA0IDJzNC4wNCAyLjY5NSA0LjA0LTJ6Ii8+PHBhdGggZmlsbD0iIzJBMkYzMyIgZD0iTTE1LjAxOSAxNi45OTljMCAxLjEwNS0uOTA0IDItMi4wMTkgMnMtMi4wMTktLjg5NS0yLjAxOS0yYzAtMS4xMDQuOTA0LTEuOTk4IDIuMDE5LTEuOTk4czIuMDE5Ljg5NSAyLjAxOSAxLjk5OHptMTAuMDIuMDAxYzAgMS4xMDUtLjkwNCAyLTIuMDIgMkMyMS45MDQgMTkgMjEgMTguMTA1IDIxIDE3YzAtMS4xMDQuOTA0LTEuOTk4IDIuMDItMS45OTggMS4xMTUgMCAyLjAxOS44OTQgMi4wMTkgMS45OTh6Ii8+PHBhdGggZmlsbD0iI0YyOEYyMCIgZD0iTTIzLjgwNCAyOC44OTVjLTMuNDg4LjY5Ni00LjU1LS43ODUtNC43ODQtMS4yMjlWMjVjMC0uNTUzLS40NDctMS0xLTEtLjU1MyAwLTEgLjQ0Ny0xIDF2Mi42NTljLS4yNDYuNDUyLTEuMzM4IDEuOTMxLTQuODIzIDEuMjM2LS41NDgtLjExMy0xLjA2OS4yNDMtMS4xNzcuNzg0LS4xMDguNTQyLjI0MyAxLjA2OC43ODQgMS4xNzcuNzkuMTU4IDEuNDk1LjIyNyAyLjEyNy4yMjcgMi4wNzggMCAzLjMzOS0uNzQxIDQuMDgxLTEuNDczLjczNS43MzMgMS45ODYgMS40NzMgNC4wNTggMS40NzMuNjMxIDAgMS4zMzctLjA2OCAyLjEyNi0uMjI3LjU0MS0uMTA4Ljg5My0uNjM1Ljc4NC0xLjE3Ny0uMTA3LS41NDEtLjYyOS0uODk3LTEuMTc2LS43ODR6Ii8+PHBhdGggZmlsbD0iIzI5MkYzMyIgZD0iTTIyLjAyIDIxLjU5MmMwIDEuNzU4LTMuMjE2IDMuOTc4LTQuMDIgMy45NzgtLjgwMyAwLTQuMDE5LTIuMjIxLTQuMDE5LTMuOTc4QzEzLjk4MSAxOS44MzIgMTYuMjI1IDIwIDE4IDIwczQuMDItLjE2OCA0LjAyIDEuNTkyeiIvPjxwYXRoIGZpbGw9IiNGMzkxMjAiIGQ9Ik0zNC4wMjEgMzEuOTM1Yy0uMjc3IDAtLjU1My0uMTE1LS43NTEtLjMzOS0uMDMtLjAzNS0zLjE4MS0zLjUwMi0xMC40MS00LjYyNC0uNTQ2LS4wODUtLjkyLS41OTYtLjgzNS0xLjE0Mi4wODUtLjU0Ni41OTctLjkxNSAxLjE0Mi0uODM1LjM2Ni4wNTcuNzI0LjExOSAxLjA3Mi4xODcgNy4yNDIgMS40MDQgMTAuMzk5IDQuOTM5IDEwLjUzNiA1LjA5Ni4zNjIuNDE2LjMxOSAxLjA0OC0uMDk3IDEuNDExLS4xODkuMTY1LS40MjMuMjQ2LS42NTcuMjQ2eiIvPjxwYXRoIGZpbGw9IiNGMzkxMjAiIGQ9Ik0yMy4wMTQgMjYuOTgzYy0uNDA2IDAtLjc4OS0uMjUtLjkzOS0uNjUzLS4xOTEtLjUxOS4wNzQtMS4wOTQuNTkyLTEuMjg1IDUuNDc3LTIuMDIzIDEyLjE2MS0uMTg5IDEyLjQ1LS4xMDguNTMyLjE0OC44NDMuNjk5LjY5NSAxLjIzLS4xNDYuNTMyLS42OTcuODQzLTEuMjI5LjY5Ny0uMDY0LS4wMTgtNi4zNTgtMS43MzktMTEuMjIzLjA1OC0uMTE0LjA0Mi0uMjMxLjA2MS0uMzQ2LjA2MXpNMS45ODggMzEuOTM1Yy4yNzcgMCAuNTUzLS4xMTUuNzUxLS4zMzkuMDMtLjAzNSAzLjE4MS0zLjUwMiAxMC40MS00LjYyNC41NDYtLjA4NS45Mi0uNTk2LjgzNS0xLjE0Mi0uMDg1LS41NDYtLjU5Ny0uOTE1LTEuMTQyLS44MzUtLjM2Ni4wNTctLjcyNC4xMTktMS4wNzIuMTg3LTcuMjQyIDEuNDA0LTEwLjM5OSA0LjkzOS0xMC41MzYgNS4wOTYtLjM2Mi40MTYtLjMxOSAxLjA0OC4wOTcgMS40MTEuMTkuMTY1LjQyNC4yNDYuNjU3LjI0NnoiLz48cGF0aCBmaWxsPSIjRjM5MTIwIiBkPSJNMTIuOTk2IDI2Ljk4M2MuNDA2IDAgLjc4OS0uMjUuOTM4LS42NTMuMTkxLS41MTktLjA3NC0xLjA5NC0uNTkyLTEuMjg1LTUuNDc3LTIuMDIzLTEyLjE2MS0uMTg5LTEyLjQ1LS4xMDgtLjUzMi4xNDgtLjg0My42OTktLjY5NSAxLjIzLjE0Ni41MzIuNjk3Ljg0MyAxLjIyOS42OTcuMDY0LS4wMTggNi4zNTgtMS43MzkgMTEuMjIzLjA1OC4xMTUuMDQyLjIzMi4wNjEuMzQ3LjA2MXoiLz48L3N2Zz4=', + id: '[猫咪]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0REMkU0NCIgZD0iTTE1IDMwdjNzMCAzIDMgMyAzLTMgMy0zdi0zaC02eiIvPjxwYXRoIGZpbGw9IiMyNzJCMkIiIGQ9Ik0xNCAyYy4wNDEtMy0xNC0yLTE0IDggMCA0IDAgMTQgMyAxNEM3IDI0IDEzLjk0NSA2IDE0IDJ6bTggMGMtLjA0MS0zIDE0LTIgMTQgOCAwIDQgMCAxNC0zIDE0LTQgMC0xMC45NDUtMTgtMTEtMjJ6Ii8+PHBhdGggZmlsbD0iI0NDRDZERCIgZD0iTTMxIDIyYzAgNy00IDctNCA3SDlzLTQgMC00LTdDNSAyMiA2IDAgMTggMHMxMyAyMiAxMyAyMnoiLz48cGF0aCBmaWxsPSIjODg5OUE2IiBkPSJNMjMgMjIuMDI1VjIySDEzdi4wMjVjLTIuODAzLjI1My01IDIuNjA2LTUgNS40NzUgMCAzLjAzNyAyLjQ2MiA1LjUgNS41IDUuNSAxLjg2MiAwIDMuNTA1LS45MjggNC41LTIuMzQ0Ljk5NSAxLjQxNiAyLjYzOCAyLjM0NCA0LjUgMi4zNDQgMy4wMzggMCA1LjUtMi40NjMgNS41LTUuNSAwLTIuODY4LTIuMTk2LTUuMjIyLTUtNS40NzV6Ii8+PHBhdGggZmlsbD0iIzI3MkIyQiIgZD0iTTExIDE2czAtMiAyLTIgMiAyIDIgMnYyczAgMi0yIDItMi0yLTItMnYtMnptMTAgMHMwLTIgMi0yIDIgMiAyIDJ2MnMwIDItMiAyLTItMi0yLTJ2LTJ6bS02IDhjLTEgMSAyIDQgMyA0czQtMyAzLTQtNS0xLTYgMHoiLz48L3N2Zz4=', + id: '[小狗]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTMwIDIwLjE0NXMuMDk0LTIuMzYyLTEuNzkxLTMuMDY4Yy0xLjY2Ny0uNjI1LTIuMzA5LjYyMi0yLjMwOS42MjJzLjA1OS0xLjkxMy0xLjk0MS0yLjYyMmMtMS44ODUtLjY2Ny0yLjc1Ljk1OS0yLjc1Ljk1OXMtLjMwNy0xLjg3Mi0yLjI5Mi0yLjQxN0MxNy4yNDYgMTMuMTU5IDE2IDE0Ljc4NSAxNiAxNC43ODVWMi41NzZDMTYgMS42MTggMTUuNDU4LjAwMSAxMy40NTggMFMxMSAxLjY2IDExIDIuNTc2djIwLjVjMCAxLTEgMS0xIDBWMjAuNDFjMC0zLjc5Mi0yLjAzNy02LjE0Mi0yLjc1LTYuNzkyLS43MTMtLjY1LTEuNjY3LS45OC0yLjgyLS43MzQtMS45NTYuNDE2LTEuNTI5IDEuOTItLjk3NCAzLjE5NyAxLjMzNiAzLjA3OCAyLjI1MyA3LjQ2NCAyLjUzMyA5LjUzOC43OSA1Ljg1OCA1LjgwOCAxMC4zNzUgMTEuODgzIDEwLjM4MSA2LjYyNi4wMDQgMTIuMTIzLTUuMjk4IDEyLjEyOC0xMS45MjR2LTMuOTMxeiIvPjwvc3ZnPg==', + id: '[上]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTQgMTUuODk0cy0uMDkzIDIuMzYyIDEuNzkyIDMuMDY4YzEuNjY3LjYyNSAyLjMwOS0uNjIyIDIuMzA5LS42MjJzLS4wNTkgMS45MTQgMS45NDEgMi42MjJjMS44ODUuNjY4IDIuNzUtLjk1OCAyLjc1LS45NThzLjMwNyAxLjg3MSAyLjI5MiAyLjQxN0MxNi43NTUgMjIuODggMTggMjEuMjU0IDE4IDIxLjI1NHYxMi4yMDhjMCAuOTU5LjU0MiAyLjU3NSAyLjU0MyAyLjU3NiAyIC4wMDIgMi40NTctMS42NTkgMi40NTctMi41NzZ2LTIwLjVjMC0xIDEtMSAxIDB2Mi42NjZjMCAzLjc5MiAyLjAzOCA2LjE0MyAyLjc1MSA2Ljc5Mi43MTMuNjUgMS42NjcuOTc5IDIuODIuNzM0IDEuOTU2LS40MTUgMS41MjktMS45Mi45NzUtMy4xOTctMS4zMzctMy4wNzgtMi4yNTQtNy40NjQtMi41MzMtOS41MzhDMjcuMjIyIDQuNTYyIDIyLjIwNC4wNDQgMTYuMTI5LjAzOCA5LjUwMy4wMzQgNC4wMDUgNS4zMzYgNCAxMS45NjJ2My45MzJ6Ii8+PC9zdmc+', + id: '[下]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTIwLjE0NSAzMXMtMi40MzYtLjE2Ny0zLjA2OC0xLjc5MmMtLjY0Ni0xLjY1OS42MjItMi4zMDkuNjIyLTIuMzA5cy0xLjkxNC4wNTktMi42MjItMS45NDFjLS42NjgtMS44ODUuOTU4LTIuNzUuOTU4LTIuNzVzLTEuODcxLS4zMDctMi40MTctMi4yOTJDMTMuMTU4IDE4LjI0NSAxNC43ODQgMTcgMTQuNzg0IDE3SDIuNTc2QzEuNjE3IDE3IC4wMDEgMTYuNDU4IDAgMTQuNDU3LS4wMDIgMTIuNDU3IDEuNjU5IDEyIDIuNTc2IDEyaDIwLjVjMSAwIDEtMSAwLTFIMjAuNDFjLTMuNzkyIDAtNi4xNDMtMi4wMzgtNi43OTItMi43NTEtLjY1LS43MTMtLjk4LTEuNjY3LS43MzQtMi44Mi40MTUtMS45NTYgMS45Mi0xLjUyOSAzLjE5Ny0uOTc1IDMuMDc4IDEuMzM3IDcuNDY0IDIuMjU0IDkuNTM4IDIuNTMzIDUuODU4Ljc5MSAxMC4zNzUgNS44MDkgMTAuMzgxIDExLjg4NC4wMDQgNi42MjYtNS4yOTggMTIuMTI0LTExLjkyNCAxMi4xMjloLTMuOTMxeiIvPjwvc3ZnPg==', + id: '[左]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTE1Ljg1NiAzMXMyLjM5NC0uMjA4IDMuMDY4LTEuNzkyYy42OTctMS42MzktLjYyMi0yLjMwOS0uNjIyLTIuMzA5czEuOTE0LjA1OSAyLjYyMi0xLjk0MWMuNjY4LTEuODg1LS45NTgtMi43NS0uOTU4LTIuNzVzMS44NzEtLjMwNyAyLjQxNy0yLjI5MkMyMi44NDIgMTguMjQ1IDIxLjIxNiAxNyAyMS4yMTYgMTdoMTIuMjA4Yy45NTkgMCAyLjU3NS0uNTQyIDIuNTc2LTIuNTQzLjAwMi0yLTEuNjU5LTIuNDU3LTIuNTc2LTIuNDU3aC0yMC41Yy0xIDAtMS0xIDAtMWgyLjY2NmMzLjc5MiAwIDYuMTQzLTIuMDM4IDYuNzkyLTIuNzUxLjY1LS43MTMuOTc5LTEuNjY3LjczNC0yLjgyLS40MTUtMS45NTYtMS45Mi0xLjUyOS0zLjE5Ny0uOTc1LTMuMDc4IDEuMzM3LTcuNDY0IDIuMjU0LTkuNTM4IDIuNTMzQzQuNTIzIDcuNzc4LjAwNiAxMi43OTYgMCAxOC44NzEtLjAwNCAyNS40OTcgNS4yOTggMzAuOTk1IDExLjkyNCAzMWgzLjkzMnoiLz48L3N2Zz4=', + id: '[右]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTYgMjBjMCAyLjIwOS0xLjExOSA0LTIuNSA0UzEgMjIuMjA5IDEgMjBzMS4xMTktNCAyLjUtNFM2IDE3Ljc5MSA2IDIwem0yOSAwYzAgMi4yMDktMS4xMTkgNC0yLjUgNFMzMCAyMi4yMDkgMzAgMjBzMS4xMTktNCAyLjUtNCAyLjUgMS43OTEgMi41IDR6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTQgMjAuNTYyYzAtOC41MjYgNi4yNjgtMTUuNDM4IDE0LTE1LjQzOHMxNCA2LjkxMiAxNCAxNS40MzhTMjUuNzMyIDM1IDE4IDM1IDQgMjkuMDg4IDQgMjAuNTYyeiIvPjxwYXRoIGZpbGw9IiM2NjIxMTMiIGQ9Ik0xMiAyMmMtLjU1MiAwLTEtLjQ0Ny0xLTF2LTJjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjJjMCAuNTUzLS40NDggMS0xIDF6bTEyIDBjLS41NTMgMC0xLS40NDctMS0xdi0yYzAtLjU1Mi40NDctMSAxLTFzMSAuNDQ4IDEgMXYyYzAgLjU1My0uNDQ3IDEtMSAxeiIvPjxwYXRoIGZpbGw9IiNDMTY5NEYiIGQ9Ik0xOCAzMGMtNC4xODggMC02LjM1Ny0xLjA2LTYuNDQ3LTEuMTA1LS40OTQtLjI0Ny0uNjk0LS44NDgtLjQ0Ny0xLjM0Mi4yNDctLjQ5Mi44NDMtLjY5MiAxLjMzNy0uNDQ5LjA1MS4wMjQgMS45MjUuODk2IDUuNTU3Ljg5NiAzLjY2NSAwIDUuNTQtLjg4OCA1LjU1OS0uODk3LjQ5Ni0uMjQxIDEuMDk0LS4wMzQgMS4zMzYuNDU3LjI0My40OTMuMDQ1IDEuMDg5LS40NDcgMS4zMzVDMjQuMzU2IDI4Ljk0IDIyLjE4OCAzMCAxOCAzMHptMS01aC0yYy0uNTUyIDAtMS0uNDQ3LTEtMXMuNDQ4LTEgMS0xaDJjLjU1MyAwIDEgLjQ0NyAxIDFzLS40NDcgMS0xIDF6Ii8+PHBhdGggZmlsbD0iI0ZGQUMzMyIgZD0iTTE4IC4zNTRDOC43Ny4zNTQgMyA2LjgxNiAzIDEyLjJjMCA1LjM4NSAxLjE1NCA3LjUzOSAyLjMwOCA1LjM4NWwyLjMwOC00LjMwOHMzLjc5MS0uMTI0IDYuMDk5LTIuMjc4YzAgMC0xLjA3MSA0IDYuNTk0LjEyNCAwIDAtLjE2NiAzLjg3NiA1LjE5MS0uMTI0IDAgMCA0LjAzOSAxLjIwMSA1LjE5MSA2LjU4Ni4zMiAxLjQ5NCAyLjMwOSAwIDIuMzA5LTUuMzg1QzMzIDYuODE2IDI4LjM4NS4zNTQgMTggLjM1NHoiLz48L3N2Zz4=', + id: '[男孩]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQUMzMyIgZD0iTTI5Ljk2IDIzLjA4N0MzNCAyNyAzNC4wNDMgMzQuMDIxIDMzLjAyMSAzNC4wMjFzLTQuMTE1LTEuODUyLTYuMDY4LTMuOTM3QzI1IDI4IDI1LjIwMyAyMy4zMDYgMjUuMjAzIDIzLjMwNmwxLjU4Ni00LjMxOWMwLS4wMDEtLjg2OS4xODcgMy4xNzEgNC4xeiIvPjxwYXRoIGZpbGw9IiNGRkFDMzMiIGQ9Ik0yNi45NiAyMy4wODdDMzEgMjcgMzEuMDQzIDM0LjAyMSAzMC4wMjEgMzQuMDIxcy00LjExNS0xLjg1Mi02LjA2OC0zLjkzN0MyMiAyOCAyMi4yMDMgMjMuMzA2IDIyLjIwMyAyMy4zMDZsMS41ODYtNC4zMTljMC0uMDAxLS44NjkuMTg3IDMuMTcxIDQuMXpNMyAzNGMtMSAwLTEtNyAzLTExczMtNCAzLTRsMiA0czAgNS0yIDctNSA0LTYgNHoiLz48cGF0aCBmaWxsPSIjRkZBQzMzIiBkPSJNNiAzNGMtMSAwLTEtNyAzLTExczMtNCAzLTRsMiA0czAgNS0yIDctNSA0LTYgNHoiLz48cGF0aCBmaWxsPSIjRkZEQzVEIiBkPSJNNi45MTQgMTguMzUzYy0uNTcxLTIuMTM0LTIuMTE2LTMuNTc1LTMuNDUtMy4yMTctMS4zMzQuMzU4LTEuOTUgMi4zNzgtMS4zNzkgNC41MTEuNTcxIDIuMTM1IDIuMTE2IDMuNTc0IDMuNDUgMy4yMTcgMS4zMzQtLjM1OCAxLjk1MS0yLjM3OCAxLjM3OS00LjUxMXptMjcuMDAxIDEuMjk0Yy41NzEtMi4xMzQtLjA0Ni00LjE1NC0xLjM4LTQuNTEyLTEuMzMzLS4zNTYtMi44NzggMS4wODMtMy40NDkgMy4yMTgtLjU3MiAyLjEzNC4wNDUgNC4xNTMgMS4zNzkgNC41MTEgMS4zMzQuMzU4IDIuODc5LTEuMDgzIDMuNDUtMy4yMTd6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTMxIDE5YzAtOS4zODktNS44Mi0xNi0xMy0xNlM1IDkuNjExIDUgMTlzNS44MiAxNSAxMyAxNSAxMy01LjYxMSAxMy0xNXoiLz48cGF0aCBmaWxsPSIjREYxRjMyIiBkPSJNMTggMjcuNjUxYy0yLjQyIDAtNC4yNzQtLjY4Ny00LjM1Mi0uNzE1LS41MTctLjE5NC0uNzc5LS43NzEtLjU4NC0xLjI4OC4xOTQtLjUxNy43NjktLjc3OSAxLjI4Ni0uNTg1LjAxNi4wMDYgMS42MS41ODggMy42NS41ODggMi4wNDEgMCAzLjYzNS0uNTgyIDMuNjUtLjU4OC41MTYtLjE5NCAxLjA5NC4wNzEgMS4yODUuNTg3LjE5My41MTctLjA2NyAxLjA5Mi0uNTg0IDEuMjg2LS4wNzcuMDI5LTEuOTMuNzE1LTQuMzUxLjcxNXoiLz48cGF0aCBmaWxsPSIjQzE2OTRGIiBkPSJNMTkgMjNoLTJjLS41NTIgMC0xLS40NDctMS0xcy40NDgtMSAxLTFoMmMuNTUzIDAgMSAuNDQ3IDEgMXMtLjQ0NyAxLTEgMXoiLz48cGF0aCBmaWxsPSIjNjYyMTEzIiBkPSJNMTIgMjBjLS41NTIgMC0xLS40NDctMS0xdi0yYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYyYzAgLjU1My0uNDQ4IDEtMSAxem0xMiAwYy0uNTUzIDAtMS0uNDQ3LTEtMXYtMmMwLS41NTIuNDQ3LTEgMS0xczEgLjQ0OCAxIDF2MmMwIC41NTMtLjQ0NyAxLTEgMXoiLz48cGF0aCBmaWxsPSIjRkZBQzMzIiBkPSJNMzIgMTBjLTItNy03LTktMTAtOS0yIDAtNCAyLTQgMnMtMi0yLTQtMmMtMyAwLTggMi0xMCA5LTEuNjQ4IDUuNzY5IDEgMTEgMSAxMSAwLTMuMDAxIDItOSA3LTlzNi00IDYtNCAuNzg2IDQgNS43ODYgNFMzMSAxOCAzMSAyMWMwIDAgMi42NDgtNS4yMzEgMS0xMXoiLz48L3N2Zz4=', + id: '[女孩]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTggMTljMCAyLjIwOS0xLjExOSA0LTIuNSA0UzMgMjEuMjA5IDMgMTlzMS4xMTktNCAyLjUtNFM4IDE2Ljc5MSA4IDE5em0yNSAwYzAgMi4yMDktMS4xMTkgNC0yLjUgNFMyOCAyMS4yMDkgMjggMTlzMS4xMTktNCAyLjUtNCAyLjUgMS43OTEgMi41IDR6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTUgMjAuNTYyYzAtOC41MjYgNS44Mi0xNS40MzggMTMtMTUuNDM4czEzIDYuOTEyIDEzIDE1LjQzOFMyNS4xOCAzNiAxOCAzNiA1IDI5LjA4OCA1IDIwLjU2MnoiLz48cGF0aCBmaWxsPSIjNjYyMTEzIiBkPSJNMTMgMjBjLS41NTIgMC0xLS40NDctMS0xdi0yYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYyYzAgLjU1My0uNDQ4IDEtMSAxem0xMCAwYy0uNTUzIDAtMS0uNDQ3LTEtMXYtMmMwLS41NTIuNDQ3LTEgMS0xczEgLjQ0OCAxIDF2MmMwIC41NTMtLjQ0NyAxLTEgMXoiLz48cGF0aCBmaWxsPSIjQzE2OTRGIiBkPSJNMTkgMjRoLTJjLS41NTIgMC0xLS40NDctMS0xcy40NDgtMSAxLTFoMmMuNTUzIDAgMSAuNDQ3IDEgMXMtLjQ0NyAxLTEgMXoiLz48cGF0aCBmaWxsPSIjRkZBQzMzIiBkPSJNMjUuMjc0IDI3LjAzOGwtMy4yOTQtLjk0MWMuMDAzLS4wMzQuMDItLjA2My4wMi0uMDk3IDAtLjU1My0uNDQ3LTEtMS0xaC02Yy0uNTUyIDAtMSAuNDQ3LTEgMSAwIC4wMzQuMDE2LjA2My4wMTkuMDk3bC0zLjI5NC45NDFjLS41MzEuMTUyLS44MzguNzA2LS42ODYgMS4yMzYuMTI1LjQ0LjUyNS43MjYuOTYxLjcyNi4wOTEgMCAuMTg0LS4wMTMuMjc1LS4wMzhsMS45MzEtLjU1MmMtLjIxNi4yOTMtLjI3NC42ODgtLjEgMS4wMzcuMTc1LjM1MS41MjguNTUzLjg5NS41NTMuMTUgMCAuMzAzLS4wMzQuNDQ2LS4xMDVsMS41NzctLjc4OGMuMDM2LjMyNi4yMTMuNjMxLjUyOS43ODguMTQzLjA3MS4yOTYuMTA1LjQ0Ni4xMDUuMzY3IDAgLjcyLS4yMDIuODk2LS41NTNsLjEwNS0uMjExLjEwNS4yMTFjLjE3Ni4zNTEuNTI5LjU1My44OTYuNTUzLjE1IDAgLjMwMy0uMDM0LjQ0Ni0uMTA1LjMxNS0uMTU3LjQ5My0uNDYyLjUyOS0uNzg4bDEuNTc2Ljc4OGMuMTQ0LjA3MS4yOTcuMTA1LjQ0Ny4xMDUuMzY3IDAgLjcyLS4yMDIuODk2LS41NTMuMTc0LS4zNDkuMTE2LS43NDQtLjEtMS4wMzdsMS45MzEuNTUyYy4wOTEuMDI1LjE4My4wMzguMjc1LjAzOC40MzQgMCAuODM1LS4yODYuOTYxLS43MjYuMTUxLS41My0uMTU2LTEuMDg0LS42ODgtMS4yMzZ6TTE4IDBjOC42MTUgMCAxNCA2LjM1OCAxNCAxMS42NTYgMCA1LjI5OC0xLjA3NyA3LjQxNy0yLjE1NCA1LjI5OGwtMi4xNTMtNC4yMzhzLTYuNDYyIDAtOC42MTUtMi4xMmMwIDAgMy4yMyA2LjM1OC0zLjIzMSAwIDAgMCAxLjA3NyA0LjIzOS01LjM4NS0xLjA2IDAgMC0zLjIzIDIuMTItNC4zMDggNy40MTdDNS44NTUgMTguNDIzIDQgMTYuOTU0IDQgMTEuNjU2IDQgNi4zNTcgOC4zMDggMCAxOCAweiIvPjwvc3ZnPg==', + id: '[男人]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQUMzMyIgZD0iTTE4IDNjNiAwIDE2IDMgMTYgMTZzMCAxNi0zIDE2LTctMy0xMy0zLTkuOTE1IDMtMTMgM2MtMy4zNDMgMC0zLTEyLTMtMTZDMiA2IDEyIDMgMTggM3oiLz48cGF0aCBmaWxsPSIjRkZEQzVEIiBkPSJNNiAxOC41NjJjMC04LjUyNiA1LjM3My0xNS40MzggMTItMTUuNDM4czEyIDYuOTEyIDEyIDE1LjQzOFMyNC42MjcgMzQgMTggMzQgNiAyNy4wODggNiAxOC41NjJ6Ii8+PHBhdGggZmlsbD0iI0RGMUYzMiIgZD0iTTE4IDMwYy0yLjM0NyAwLTMuNTc1LTEuMTYtMy43MDctMS4yOTMtLjM5MS0uMzkxLS4zOTEtMS4wMjMgMC0xLjQxNC4zODctLjM4NyAxLjAxMy0uMzkgMS40MDQtLjAxLjA1MS4wNDcuODA2LjcxNyAyLjMwMy43MTcgMS41MTkgMCAyLjI3My0uNjkgMi4zMDUtLjcxOS4zOTgtLjM3MyAxLjAyNy0uMzYyIDEuNDA4LjAyOS4zNzkuMzkzLjM4IDEuMDExLS4wMDYgMS4zOTdDMjEuNTc1IDI4Ljg0IDIwLjM0NyAzMCAxOCAzMHoiLz48cGF0aCBmaWxsPSIjQzE2OTRGIiBkPSJNMTkgMjVoLTJjLS41NTIgMC0xLS40NDctMS0xcy40NDgtMSAxLTFoMmMuNTUzIDAgMSAuNDQ3IDEgMXMtLjQ0NyAxLTEgMXoiLz48cGF0aCBmaWxsPSIjRkZBQzMzIiBkPSJNMy4wNjQgMjRjLS4wMy0uMzI1LS4wNjQtLjY0Ny0uMDY0LTEgMC01IDMgLjU2MiAzLTMgMC0zLjU2MyAyLTQgNC02bDMtM3M1IDMgOSAzIDggMiA4IDYgMy0yIDMgM2MwIC4zNTUtLjAzMy42NzMtLjA1OCAxaDEuMDQ5QzM0IDIyLjUyMyAzNCAyMC44NjggMzQgMTkgMzQgNiAyNCAxIDE4IDFTMiA2IDIgMTljMCAxLjE1OC0uMDI4IDIuOTg2LjAxMiA1aDEuMDUyeiIvPjxwYXRoIGQ9Ik0xMyAyMmMtLjU1MiAwLTEtLjQ0Ny0xLTF2LTJjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjJjMCAuNTUzLS40NDggMS0xIDF6bTEwIDBjLS41NTMgMC0xLS40NDctMS0xdi0yYzAtLjU1Mi40NDctMSAxLTFzMSAuNDQ4IDEgMXYyYzAgLjU1My0uNDQ3IDEtMSAxeiIgZmlsbD0iIzY2MjExMyIvPjwvc3ZnPg==', + id: '[女人]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PGcgZmlsbD0iI0U3NUE3MCI+PHBhdGggZD0iTTEzLjU4OSAyNi41MjFjLS4yOTctLjQ5NS0uMjg0LTEuMTE3LjAzNS0xLjU5OWw0LjM5NS02LjY0Ni01Ljk5NS01LjEzOWMtLjU1Ni0uNDc2LS42ODYtMS4yODMtLjMxLTEuOTExbDQuMzA0LTcuMTcyYy0xLjY2OS0xLjMwMS0zLjc1NS0yLjA5LTYuMDM1LTIuMDktNS40NSAwLTkuODY4IDQuNDE3LTkuODY4IDkuODY4IDAgLjc3Mi4wOTggMS41Mi4yNjYgMi4yNDFDMS43NTEgMjIuNTg3IDExLjIxNiAzMS41NjggMTggMzQuMDM0Yy4wMjUtLjAwOS4wNTItLjAyMi4wNzctLjAzMmwtNC40ODgtNy40ODF6Ii8+PHBhdGggZD0iTTI2LjAxOCAxLjk2NmMtMi43NjUgMC01LjI0OCAxLjE1MS03LjAzNyAyLjk4M2wtNC4wNDIgNi43MzcgNi4wMzkgNS4xNzZjLjU3NC40OTIuNjkxIDEuMzM1LjI3NCAxLjk2NmwtNC42MDQgNi45NjIgNC4xNjEgNi45MzVjNi4zMzgtMy41MjkgMTMuNjIxLTExLjI2MyAxNC44MDktMTguNjQ5LjE3LS43MjEuMjY4LTEuNDY5LjI2OC0yLjI0MS0uMDAxLTUuNDUyLTQuNDE5LTkuODY5LTkuODY4LTkuODY5eiIvPjwvZz48L3N2Zz4=', + id: '[心碎]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMTYgMThjLS40MTkgMC0uODA5LS4yNjUtLjk0OS0uNjg0QzE0Ljg0OCAxNi43MTcgMTQuMDM0IDE1IDEzIDE1Yy0xLjA2MiAwLTEuODg4IDEuODI3LTIuMDUxIDIuMzE2LS4xNzUuNTIzLS43MzguODA4LTEuMjY1LjYzMi0uNTI0LS4xNzQtLjgwNy0uNzQxLS42MzItMS4yNjVDOS4xNzcgMTYuMzA3IDEwLjM1NiAxMyAxMyAxM3MzLjgyMyAzLjMwNyAzLjk0OSAzLjY4NGMuMTc1LjUyNC0uMTA4IDEuMDkxLS42MzIgMS4yNjUtLjEwNi4wMzQtLjIxMy4wNTEtLjMxNy4wNTF6bTEwIDBjLS40MTkgMC0uODA5LS4yNjUtLjk0OC0uNjg0QzI0Ljg0OSAxNi43MTcgMjQuMDMzIDE1IDIzIDE1Yy0xLjA2MiAwLTEuODg5IDEuODI3LTIuMDUyIDIuMzE2LS4xNzUuNTIzLS43MzYuODA4LTEuMjY1LjYzMi0uNTIzLS4xNzQtLjgwNy0uNzQxLS42MzItMS4yNjVDMTkuMTc3IDE2LjMwNyAyMC4zNTUgMTMgMjMgMTNzMy44MjMgMy4zMDcgMy45NDggMy42ODRjLjE3NS41MjQtLjEwOCAxLjA5MS0uNjMyIDEuMjY1LS4xMDUuMDM0LS4yMTIuMDUxLS4zMTYuMDUxem0tOCA0Yy0zLjYyMyAwLTYuMDI3LS40MjItOS0xLS42NzktLjEzMS0yIDAtMiAyIDAgNCA0LjU5NSA5IDExIDkgNi40MDQgMCAxMS01IDExLTkgMC0yLTEuMzIxLTIuMTMyLTItMi0yLjk3My41NzgtNS4zNzcgMS05IDF6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTkgMjNzMyAxIDkgMSA5LTEgOS0xLTEuMzQ0IDYuNzUtOSA2Ljc1UzkgMjMgOSAyM3oiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMTggMjcuNTk0Yy0zLjU5NiAwLTYuMjcyLS4zNzItNy45MzctLjc0NWwtLjgyNS0xLjg3MWMuODIzLjMxMiAzLjg4OS44OTcgOC43NjMuODk3IDQuOTU0IDAgOC4wMzctLjYxNiA4Ljg2NC0uOTM4bC0uNzAxIDEuODQyYy0xLjYzNC4zOC00LjQxOS44MTUtOC4xNjQuODE1eiIvPjwvc3ZnPg==', + id: '[笑脸]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguNDU3IDE3Ljc5N2MtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDUuNTkxLjE3NS4xNDIuNDI2LjE0Ny42MS4wMTQuMDEyLS4wMDkgMS4yNjItLjkwMiAzLjcwMi0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5NC4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTItLjEwOS4xNzctLjE0Mi4yMzgtLjM4Ni4xNDUtLjU5NHptLTEyIDBjLS4wNi0uMTM1LTEuNDk5LTMuMjk3LTQuNDU3LTMuMjk3LTIuOTU3IDAtNC4zOTcgMy4xNjItNC40NTcgMy4yOTctLjA5Mi4yMDctLjAzMi40NDkuMTQ0LjU5MS4xNzYuMTQyLjQyNy4xNDcuNjEuMDE0LjAxMy0uMDA5IDEuMjYyLS45MDIgMy43MDMtLjkwMiAyLjQyNiAwIDMuNjc0Ljg4MSAzLjcwMi45MDEuMDg4LjA2Ni4xOTQuMDk5LjI5OC4wOTkuMTEgMCAuMjIxLS4wMzcuMzEyLS4xMDkuMTc4LS4xNDIuMjM3LS4zODYuMTQ1LS41OTR6TTMxIDE2Yy0uMzk2IDAtLjc3Mi0uMjM4LS45MjktLjYyOS0xLjc3OC00LjQ0NS02LjIyMy01LjM4MS02LjI2OC01LjM5MS0uNTQxLS4xMDgtLjg5My0uNjM1LS43ODQtMS4xNzcuMTA4LS41NDIuNjM1LS44OTEgMS4xNzctLjc4NC4yMjYuMDQ1IDUuNTU2IDEuMTY4IDcuNzMyIDYuNjA4LjIwNS41MTMtLjA0NSAxLjA5NS0uNTU4IDEuMy0uMTIuMDUtLjI0Ni4wNzMtLjM3LjA3M3pNNSAxNmMtLjEyNCAwLS4yNDktLjAyMy0uMzcxLS4wNzItLjUxMy0uMjA1LS43NjItLjc4Ny0uNTU3LTEuMyAyLjE3Ni01LjQ0IDcuNTA2LTYuNTYzIDcuNzMyLTYuNjA4LjU0My0uMTA2IDEuMDY4LjI0MyAxLjE3Ny43ODQuMTA4LjU0LS4yNDIgMS4wNjYtLjc4MSAxLjE3Ni0uMTg1LjAzOC00LjUwNi45OC02LjI3MSA1LjM5MS0uMTU3LjM5MS0uNTMzLjYyOS0uOTI5LjYyOXptMTMgNmMtMy42MjMgMC02LjAyNy0uNDIyLTktMS0uNjc5LS4xMzEtMiAwLTIgMiAwIDQgNC41OTUgOSAxMSA5IDYuNDA0IDAgMTEtNSAxMS05IDAtMi0xLjMyMS0yLjEzMi0yLTItMi45NzMuNTc4LTUuMzc3IDEtOSAxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik05IDIzczMgMSA5IDEgOS0xIDktMS0yIDQtOSA0LTktNC05LTR6Ii8+PHBhdGggZmlsbD0iIzVEQURFQyIgZD0iTTEwLjg0NyAyOC4yMjljLS42OCAyLjY3Ny0zLjQgNC4yOTUtNi4wNzcgMy42MTUtMi42NzYtLjY3OS00LjI5NS0zLjM5OS0zLjYxNi02LjA3Ni42NzktMi42NzcgNi4zMzctOC43MDggNy4zMDctOC40NjIuOTcuMjQ3IDMuMDY1IDguMjQ3IDIuMzg2IDEwLjkyM3ptMTQuMjg2IDBjLjY4IDIuNjc3IDMuNCA0LjI5NSA2LjA3NyAzLjYxNSAyLjY3Ny0uNjc5IDQuMjk2LTMuMzk5IDMuNjE2LTYuMDc2LS42OC0yLjY3Ny02LjMzOC04LjcwOC03LjMwOC04LjQ2Mi0uOTY4LjI0Ny0zLjA2NCA4LjI0Ny0yLjM4NSAxMC45MjN6Ii8+PC9zdmc+', + id: '[笑哭]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjEyLjUiIHJ4PSIyLjUiIHJ5PSI1LjUiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMjQuNSIgY3k9IjEyLjUiIHJ4PSIyLjUiIHJ5PSI1LjUiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMTggMjJjLTMuNjIzIDAtNi4wMjctLjQyMi05LTEtLjY3OS0uMTMxLTIgMC0yIDIgMCA0IDQuNTk1IDkgMTEgOSA2LjQwNCAwIDExLTUgMTEtOSAwLTItMS4zMjEtMi4xMzItMi0yLTIuOTczLjU3OC01LjM3NyAxLTkgMXoiLz48cGF0aCBmaWxsPSIjRkZGIiBkPSJNOSAyM3MzIDEgOSAxIDktMSA5LTEtMiA0LTkgNC05LTQtOS00eiIvPjwvc3ZnPg==', + id: '[露齿笑]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguNDU3IDE3Ljc5N2MtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDUuNTkxLjE3NS4xNDIuNDI2LjE0Ny42MS4wMTQuMDEyLS4wMDkgMS4yNjItLjkwMiAzLjcwMi0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5NC4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTItLjEwOS4xNzctLjE0Mi4yMzgtLjM4Ni4xNDUtLjU5NHptLTEyIDBjLS4wNi0uMTM1LTEuNDk5LTMuMjk3LTQuNDU3LTMuMjk3LTIuOTU3IDAtNC4zOTcgMy4xNjItNC40NTcgMy4yOTctLjA5Mi4yMDctLjAzMi40NDkuMTQ0LjU5MS4xNzYuMTQyLjQyNy4xNDcuNjEuMDE0LjAxMy0uMDA5IDEuMjYyLS45MDIgMy43MDMtLjkwMiAyLjQyNiAwIDMuNjc0Ljg4MSAzLjcwMi45MDEuMDg4LjA2Ni4xOTQuMDk5LjI5OC4wOTkuMTEgMCAuMjIxLS4wMzcuMzEyLS4xMDkuMTc4LS4xNDIuMjM3LS4zODYuMTQ1LS41OTR6TTE4IDIyYy0zLjYyMyAwLTYuMDI3LS40MjItOS0xLS42NzktLjEzMS0yIDAtMiAyIDAgNCA0LjU5NSA5IDExIDkgNi40MDQgMCAxMS01IDExLTkgMC0yLTEuMzIxLTIuMTMyLTItMi0yLjk3My41NzgtNS4zNzcgMS05IDF6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTkgMjNzMyAxIDkgMSA5LTEgOS0xLTIgNC05IDQtOS00LTktNHoiLz48L3N2Zz4=', + id: '[大笑]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjE2LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguNDU3IDE3Ljc5N2MtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDUuNTkxLjE3NS4xNDIuNDI2LjE0Ny42MS4wMTQuMDEyLS4wMDkgMS4yNjItLjkwMiAzLjcwMi0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5NC4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTItLjEwOS4xNzctLjE0Mi4yMzgtLjM4Ni4xNDUtLjU5NHpNNS45OTkgMTIuNDU4Yy0uMjA4IDAtLjQxOS0uMDY1LS41OTktLjItLjQ0Mi0uMzMxLS41MzEtLjk1OC0uMi0xLjQgMy4yNjItNC4zNSA3LjYxNi00LjQgNy44LTQuNC41NTIgMCAxIC40NDggMSAxIDAgLjU1MS0uNDQ1Ljk5OC0uOTk2IDEtLjE1Ni4wMDItMy41NjkuMDg2LTYuMjA1IDMuNi0uMTk1LjI2Mi0uNDk2LjQtLjguNHptMjMuMDAyIDIuMTI1Yy0uMzA1IDAtLjYwNC0uMTM4LS44MDEtLjQtMi41OTItMy40NTctNi45NjEtMi42MjctNy4wMDQtMi42Mi0uNTQ3LjEwOC0xLjA2OC0uMjQzLTEuMTc3LS43ODQtLjEwOC0uNTQyLjI0My0xLjA2OC43ODQtMS4xNzcuMjMxLS4wNDcgNS42NTctMS4wNzIgOC45OTYgMy4zOC4zMzIuNDQyLjI0MiAxLjA2OS0uMiAxLjQtLjE3OS4xMzctLjM4OS4yMDEtLjU5OC4yMDF6bS01Ljc0NyA4Ljk5NGMtLjE4OC0uMTEtLjQzMi0uMDg3LS41OTcuMDYtLjAxLjAwOC0xLjAxMy44NjMtNC42NTcuODYzLTMuNjQxIDAtNC42NDYtLjg1NC00LjY0Ni0uODU0LS4xNTktLjE2LS40MDQtLjE5LS42LS4wODItLjE5NS4xMTEtLjI5My4zMzktLjIzOC41NTcuMDEuMDQ0IDEuMTQ0IDQuMzc5IDUuNDg0IDQuMzc5czUuNDc0LTQuMzM1IDUuNDg1LTQuMzc5Yy4wNTMtLjIxMy0uMDQ0LS40MzEtLjIzMS0uNTQ0eiIvPjwvc3ZnPg==', + id: '[眨眼]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjUuNDg1IDI3Ljg3OUMyNS40NCAyNy43IDI0LjMxNyAyMy41IDE4IDIzLjVjLTYuMzE4IDAtNy40NCA0LjItNy40ODUgNC4zNzktLjA1NS4yMTcuMDQzLjQ0Mi4yMzcuNTU0LjE5NS4xMTEuNDM5LjA3OC42LS4wNzcuMDE5LS4wMTkgMS45NTQtMS44NTYgNi42NDgtMS44NTZzNi42MyAxLjgzNyA2LjY0OCAxLjg1NWMuMDk2LjA5NS4yMjQuMTQ1LjM1Mi4xNDUuMDg0IDAgLjE2OS0uMDIxLjI0Ni0uMDY0LjE5Ni0uMTEyLjI5NC0uMzM5LjIzOS0uNTU3ek0yOS4wMDEgMTRjLS4zMDUgMC0uNjA0LS4xMzgtLjgwMS0uNC0yLjQzMi0zLjI0NC02LjUxNC0uODQ2LTYuNjg2LS43NDMtLjQ3NS4yODUtMS4wODkuMTMtMS4zNzItLjM0My0uMjg0LS40NzQtLjEzMS0xLjA4OC4zNDMtMS4zNzIgMS45OTgtMS4xOTkgNi41MTQtMi40NzcgOS4zMTQgMS4yNTcuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xNzkuMTM2LS4zODkuMjAxLS41OTguMjAxek02Ljk5OSAxNGMtLjIwOCAwLS40MTktLjA2NS0uNTk5LS4yLS40NDItLjMzMS0uNTMxLS45NTgtLjItMS40IDIuODAxLTMuNzM0IDcuMzE3LTIuNDU2IDkuMzE0LTEuMjU3LjQ3NC4yODQuNjI3Ljg5OC4zNDMgMS4zNzItLjI4NC40NzMtLjg5Ni42MjgtMS4zNy4zNDQtLjE3OS0uMTA2LTQuMjc0LTIuNDc1LTYuNjg4Ljc0Mi0uMTk1LjI2MS0uNDk2LjM5OS0uOC4zOTl6TTI5IDE2YzAtLjU1Mi0uNDQ3LTEtMS0xaC03Yy0uNTUzIDAtMSAuNDQ4LTEgMXMuNDQ3IDEgMSAxaDUuMDkyYy4yMDcuNTgxLjc1NiAxIDEuNDA4IDEgLjgyOCAwIDEuNS0uNjcxIDEuNS0xLjUgMC0uMTEtLjAxNC0uMjE3LS4wMzYtLjMyMS4wMTItLjA2LjAzNi0uMTE2LjAzNi0uMTc5em0tMTMgMGMwLS41NTItLjQ0OC0xLTEtMUg4Yy0uNTUyIDAtMSAuNDQ4LTEgMXMuNDQ4IDEgMSAxaDUuMDkyYy4yMDcuNTgxLjc1NiAxIDEuNDA4IDEgLjgyOCAwIDEuNS0uNjcxIDEuNS0xLjUgMC0uMTEtLjAxNC0uMjE3LS4wMzYtLjMyMS4wMTEtLjA2LjAzNi0uMTE2LjAzNi0uMTc5eiIvPjwvc3ZnPg==', + id: '[心烦]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguNDU3IDE3Ljc5N2MtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDUuNTkxLjE3NS4xNDIuNDI2LjE0Ny42MS4wMTQuMDEyLS4wMDkgMS4yNjItLjkwMiAzLjcwMi0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5NC4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTItLjEwOS4xNzctLjE0Mi4yMzgtLjM4Ni4xNDUtLjU5NHptLTExIDBjLS4wNi0uMTM1LTEuNDk5LTMuMjk3LTQuNDU3LTMuMjk3LTIuOTU3IDAtNC4zOTcgMy4xNjItNC40NTcgMy4yOTctLjA5Mi4yMDctLjAzMi40NDkuMTQ0LjU5MS4xNzYuMTQyLjQyNy4xNDcuNjEuMDE0LjAxMy0uMDA5IDEuMjYyLS45MDIgMy43MDMtLjkwMiAyLjQyNiAwIDMuNjc0Ljg4MSAzLjcwMi45MDEuMDg5LjA2Ni4xOTQuMDk5LjI5OC4wOTkuMTEgMCAuMjIxLS4wMzcuMzEyLS4xMDkuMTc4LS4xNDIuMjM3LS4zODYuMTQ1LS41OTR6TTEzIDI4czEtNCA1LTQgNSA0IDUgNC0xLTEtNS0xLTUgMS01IDF6Ii8+PHBhdGggZmlsbD0iIzVEQURFQyIgZD0iTTExIDExYzAgMi43NjItMi4yMzggNS01IDUtMi43NjEgMC01LTIuMjM4LTUtNVM1IDEgNiAxczUgNy4yMzggNSAxMHoiLz48L3N2Zz4=', + id: '[无语]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMTcuMzEyIDE3LjYxMmMtLjE3Ni0uMTQzLS40MjctLjE0Ny0uNjEtLjAxNC0uMDEyLjAwOS0xLjI2LjkwMi0zLjcwMi45MDItMi40NDEgMC0zLjY5LS44OTMtMy43LS45LS4xODMtLjEzNy0uNDM1LS4xMzMtLjYxMS4wMDktLjE3OC4xNDItLjIzOC4zODYtLjE0Ni41OTQuMDYuMTM1IDEuNSAzLjI5NyA0LjQ1NyAzLjI5NyAyLjk1OCAwIDQuMzk3LTMuMTYyIDQuNDU3LTMuMjk3LjA5Mi0uMjA3LjAzMi0uNDQ5LS4xNDUtLjU5MXptMTAgMGMtLjE3Ni0uMTQzLS40MjYtLjE0OC0uNjEtLjAxNC0uMDEyLjAwOS0xLjI2MS45MDItMy43MDIuOTAyLTIuNDQgMC0zLjY5LS44OTMtMy43LS45LS4xODMtLjEzNy0uNDM0LS4xMzMtLjYxMS4wMDktLjE3OC4xNDItLjIzOC4zODYtLjE0Ni41OTQuMDYuMTM1IDEuNSAzLjI5NyA0LjQ1NyAzLjI5NyAyLjk1OCAwIDQuMzk3LTMuMTYyIDQuNDU3LTMuMjk3LjA5Mi0uMjA3LjAzMi0uNDQ5LS4xNDUtLjU5MXpNMjIgMjhoLThjLS41NTIgMC0xLS40NDctMS0xcy40NDgtMSAxLTFoOGMuNTUzIDAgMSAuNDQ3IDEgMXMtLjQ0NyAxLTEgMXpNNiAxNGMtLjU1MiAwLTEtLjQ0OC0xLTEgMC0uNTUxLjQ0NS0uOTk4Ljk5Ni0xIC4xNTYtLjAwMiAzLjU2OS0uMDg2IDYuMjA1LTMuNi4zMzEtLjQ0Ljk1Ny0uNTMyIDEuNC0uMi40NDIuMzMxLjUzMS45NTguMiAxLjRDMTAuNTM4IDEzLjk1IDYuMTg0IDE0IDYgMTR6bTI0IDBjLS4xODQgMC00LjUzNy0uMDUtNy44LTQuNC0uMzMyLS40NDItLjI0Mi0xLjA2OS4yLTEuNC40NDEtLjMzMyAxLjA2Ny0uMjQyIDEuMzk5LjIgMi42NDEgMy41MjEgNi4wNjEgMy41OTkgNi4yMDYgMy42LjU1LjAwNi45OTQuNDU2Ljk5MSAxLjAwNS0uMDAyLjU1MS0uNDQ2Ljk5NS0uOTk2Ljk5NXoiLz48L3N2Zz4=', + id: '[悲伤]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNNiAxM2MtLjU1MiAwLTEtLjQ0OC0xLTEgMC0uNTUxLjQ0NS0uOTk4Ljk5Ni0xIC4xNTYtLjAwMiAzLjU2OS0uMDg2IDYuMjA1LTMuNi4zMzEtLjQ0Ljk1Ny0uNTMyIDEuNC0uMi40NDIuMzMxLjUzMS45NTguMiAxLjRDMTAuNTM4IDEyLjk1IDYuMTg0IDEzIDYgMTN6bTI0IDBjLS4xODQgMC00LjUzNy0uMDUtNy44LTQuNC0uMzMyLS40NDItLjI0Mi0xLjA2OS4yLTEuNC40NDEtLjMzMyAxLjA2Ny0uMjQyIDEuMzk5LjIgMi42NDEgMy41MjEgNi4wNjEgMy41OTkgNi4yMDYgMy42LjU1LjAwNi45OTQuNDU2Ljk5MSAxLjAwNS0uMDAyLjU1MS0uNDQ2Ljk5NS0uOTk2Ljk5NXptLjYgNy4yYy0uMTE0LS4wODYtMS45MzEtMS40MjYtNC42NDYtMi4zNDQuMDI2LS4xMTUuMDQ2LS4yMzMuMDQ2LS4zNTYgMC0uMzY5LS4xMzktLjcwMy0uMzU5LS45NjQgMS44MDItLjUyIDMuMzM0LS41MzYgMy4zNjEtLjUzNi41NTEtLjAwMi45OTgtLjQ1Ljk5Ny0xLjAwMi0uMDAxLS41NTEtLjQ0Ny0uOTk4LS45OTktLjk5OC0uMjIxIDAtNS40NTEuMDM4LTguNzA3IDMuMjkzLS4yODYuMjg2LS4zNzIuNzE2LS4yMTcgMS4wOS4xNTQuMzc0LjUyLjYxNy45MjQuNjE3IDQuNTkgMCA4LjM2MyAyLjc3MiA4LjQwMSAyLjgwMS4xOC4xMzQuMzkuMTk4LjU5OC4xOTguMzA1IDAgLjYwNS0uMTM5LjgwMi0uNC4zMy0uNDQzLjI0LTEuMDY4LS4yMDEtMS4zOTl6bS0xNC44OTMtMi45MDdDMTIuNDUyIDE0LjAzOCA3LjIyMSAxNCA3IDE0Yy0uNTUyIDAtLjk5OS40NDctLjk5OS45OTgtLjAwMS41NTIuNDQ2IDEgLjk5OCAxLjAwMi4wMjYgMCAxLjU1OC4wMTYgMy4zNjEuNTM2LS4yMjEuMjYxLS4zNi41OTUtLjM2Ljk2NCAwIC4xMjMuMDE5LjI0MS4wNDcuMzU2LTIuNzE2LjkxOC00LjUzMyAyLjI1OC00LjY0NyAyLjM0NC0uNDQyLjMzMS0uNTMxLjk1OC0uMiAxLjM5OS4xOTYuMjYzLjQ5Ny40MDEuODAxLjQwMS4yMDggMCAuNDE5LS4wNjUuNTk5LS4yLjAzNy0uMDI4IDMuNzg3LTIuOCA4LjQtMi44LjQwNCAwIC43NjktLjI0My45MjQtLjYxNy4xNTUtLjM3NC4wNjktLjgwNC0uMjE3LTEuMDl6TTE4IDMwYy0uMzA0IDAtLjU5MS0uMTM4LS43ODEtLjM3NWwtMy4xOTQtMy45OTJMMTEuOCAyOC42Yy0uMTc0LjIzMi0uNDQuMzc3LS43MjkuMzk3LS4yOS4wMjEtLjU3NC0uMDg1LS43NzgtLjI5bC0xLTFjLS4zOTEtLjM5MS0uMzkxLTEuMDIzIDAtMS40MTRzMS4wMjMtLjM5MSAxLjQxNCAwbC4xODUuMTg1TDEzLjIgMjMuNGMuMTg2LS4yNDguNDc1LS4zOTYuNzg0LS40LjI5NS0uMDEuNjAzLjEzMy43OTYuMzc1TDE4IDI3LjM5OWwzLjIxOS00LjAyNGMuMTkzLS4yNDEuNDg0LS4zNzUuNzk3LS4zNzUuMzEuMDA1LjU5OS4xNTIuNzg0LjRsMi4zMDkgMy4wNzcuMTg1LS4xODVjLjM5MS0uMzkxIDEuMDIzLS4zOTEgMS40MTQgMHMuMzkxIDEuMDIzIDAgMS40MTRsLTEgMWMtLjIwNS4yMDUtLjQ3OS4zMTQtLjc3OC4yOS0uMjg5LS4wMjEtLjU1NS0uMTY1LS43MjktLjM5N2wtMi4yMjYtMi45NjctMy4xOTMgMy45OTJjLS4xOTEuMjM4LS40NzguMzc2LS43ODIuMzc2eiIvPjwvc3ZnPg==', + id: '[呕吐]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjE1LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjguNDU3IDE3Ljc5N2MtLjA2LS4xMzUtMS40OTktMy4yOTctNC40NTctMy4yOTctMi45NTcgMC00LjM5NyAzLjE2Mi00LjQ1NyAzLjI5Ny0uMDkyLjIwNy0uMDMyLjQ0OS4xNDUuNTkxLjE3NS4xNDIuNDI2LjE0Ny42MS4wMTQuMDEyLS4wMDkgMS4yNjItLjkwMiAzLjcwMi0uOTAyIDIuNDI2IDAgMy42NzQuODgxIDMuNzAyLjkwMS4wODguMDY2LjE5NC4wOTkuMjk4LjA5OS4xMSAwIC4yMjEtLjAzNy4zMTItLjEwOS4xNzctLjE0Mi4yMzgtLjM4Ni4xNDUtLjU5NHpNNS45OTkgMTFjLS4yMDggMC0uNDE5LS4wNjUtLjU5OS0uMi0uNDQyLS4zMzEtLjUzMS0uOTU4LS4yLTEuNEM4LjQ2MiA1LjA1IDEyLjgxNiA1IDEzIDVjLjU1MiAwIDEgLjQ0OCAxIDEgMCAuNTUxLS40NDUuOTk4LS45OTYgMS0uMTU1LjAwMi0zLjU2OC4wODYtNi4yMDQgMy42LS4xOTYuMjYyLS40OTcuNC0uODAxLjR6bTIzLjAwMiAzYy0uMzA1IDAtLjYwNC0uMTM4LS44MDEtLjQtMi41OTItMy40NTYtNi45NjEtMi42MjgtNy4wMDQtMi42Mi0uNTQ3LjExLTEuMDY4LS4yNDQtMS4xNzctLjc4NC0uMTA4LS41NDEuMjQzLTEuMDY4Ljc4NC0xLjE3Ny4yMzEtLjA0NyA1LjY1Ny0xLjA3MiA4Ljk5NiAzLjM4LjMzMi40NDIuMjQyIDEuMDY5LS4yIDEuNC0uMTc5LjEzNi0uMzg5LjIwMS0uNTk4LjIwMXptLTguMTMgMTRjMS4zMzUtLjQxMiAyLjYyOS0xLjE1NiAyLjYyOS0yLjUgMC0yLjYxOS00LjkxMi0yLjk2OC01LjQ3Mi0yLjk5OS0uMjc0LS4wMjYtLjUwOS4xOTMtLjUyNy40NjgtLjAxNy4yNzQuMTkuNTExLjQ2NC41My4wMzUuMDAyIDMuNTM1LjI5OSAzLjUzNSAyLjAwMXMtMy41IDEuOTk5LTMuNTM1IDIuMDAxYy0uMDE0LjAwMS0uMDI0LjAwOS0uMDM3LjAxMS0uMDUyLjAwNi0uMTAxLjAxOC0uMTQ2LjA0bC0uMDE5LjAxMWMtLjA0Ny4wMjYtLjA4OC4wNTctLjEyNC4wOTgtLjAxNC4wMTUtLjAyNC4wMzEtLjAzNi4wNDgtLjAyMy4wMzItLjA0NC4wNjMtLjA2LjEwMi0uMDEyLjAyOS0uMDE4LjA2MS0uMDI0LjA5Mi0uMDA0LjAyMy0uMDE2LjA0NC0uMDE4LjA2NyAwIC4wMTEuMDA0LjAyMS4wMDQuMDMxcy0uMDA1LjAyMS0uMDA0LjAzMWMuMDAxLjAyNC4wMTMuMDQ1LjAxOC4wNjguMDA2LjAzMS4wMTEuMDYxLjAyMy4wOS4wMTMuMDMuMDMxLjA1Ny4wNDkuMDg0LjAxNy4wMjQuMDMyLjA1LjA1Mi4wNzEuMDIzLjAyMy4wNS4wNDEuMDc4LjA2MS4wMjQuMDE3LjA0Ni4wMzQuMDc0LjA0Ny4wMzIuMDE1LjA2Ni4wMjEuMTAxLjAyNy4wMjQuMDA2LjA0NC4wMTguMDY5LjAyLjAzNS4wMDEgMy41MzUuMjk4IDMuNTM1IDJzLTMuNSAxLjk5OS0zLjUzNSAyLjAwMWMtLjI3NC4wMi0uNDgxLjI1Ny0uNDY0LjUzLjAxNy4yNjUuMjM3LjQ2OS40OTkuNDY5bC4wMjgtLjAwMWMuNTYtLjAzMSA1LjQ3Mi0uMzggNS40NzItMi45OTkgMC0xLjM0NC0xLjI5NC0yLjA4OC0yLjYyOS0yLjV6Ii8+PHBhdGggZmlsbD0iI0U3NUE3MCIgZD0iTTM1LjQwNCAyNy4yMjJjLjczOS0xLjUxNi4xMS0zLjM0Ny0xLjQwNS00LjA4Ni0uOTIyLS40NDktMS45NTYtLjM5MS0yLjc5My4wNi0uMTYtLjkzNi0uNzUtMS43ODktMS42Ny0yLjIzNy0xLjUxNy0uNzQtMy4zNDgtLjEwOS00LjA4NyAxLjQwNi0uMTA1LjIxNS0uMTguNDM3LS4yMy42NTktLjc3NCAyLjU1Ni42NCA2LjM0MSAyLjE5MiA3Ljk0OCAyLjIyMy4yMzQgNi4wNzctLjk3OSA3LjYxNS0zLjE2MS4xNDUtLjE3OS4yNzMtLjM3NC4zNzgtLjU4OXoiLz48L3N2Zz4=', + id: '[飞吻]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjUuNDg1IDI5Ljg3OUMyNS40NCAyOS43IDI0LjMxNyAyNS41IDE4IDI1LjVjLTYuMzE4IDAtNy40NCA0LjItNy40ODUgNC4zNzktLjA1NS4yMTcuMDQzLjQ0Mi4yMzcuNTU0LjE5NS4xMDkuNDM5LjA3OS42LS4wNzcuMDE5LS4wMTkgMS45NTQtMS44NTYgNi42NDgtMS44NTZzNi42MyAxLjgzNyA2LjY0OCAxLjg1NWMuMDk2LjA5NS4yMjQuMTQ1LjM1Mi4xNDUuMDg0IDAgLjE2OS0uMDIxLjI0Ni0uMDY0LjE5Ni0uMTEyLjI5NC0uMzM5LjIzOS0uNTU3em0tOS43NzgtMTIuNTg2QzEyLjQ1MiAxNC4wMzggNy4yMjEgMTQgNyAxNGMtLjU1MiAwLS45OTkuNDQ3LS45OTkuOTk4LS4wMDEuNTUyLjQ0NiAxIC45OTggMS4wMDIuMDI5IDAgMS45MjUuMDIyIDMuOTgzLjczNy0uNTkzLjY0LS45ODIgMS42MzQtLjk4MiAyLjc2MyAwIDEuOTM0IDEuMTE5IDMuNSAyLjUgMy41czIuNS0xLjU2NiAyLjUtMy41YzAtLjE3NC0uMDE5LS4zNC0uMDM3LS41MDcuMDEzIDAgLjAyNS4wMDcuMDM3LjAwNy4yNTYgMCAuNTEyLS4wOTguNzA3LS4yOTMuMzkxLS4zOTEuMzkxLTEuMDIzIDAtMS40MTR6TTI5IDE0Yy0uMjIxIDAtNS40NTEuMDM4LTguNzA3IDMuMjkzLS4zOTEuMzkxLS4zOTEgMS4wMjMgMCAxLjQxNC4xOTUuMTk1LjQ1MS4yOTMuNzA3LjI5My4wMTMgMCAuMDI0LS4wMDcuMDM2LS4wMDctLjAxNi4xNjctLjAzNi4zMzMtLjAzNi41MDcgMCAxLjkzNCAxLjExOSAzLjUgMi41IDMuNXMyLjUtMS41NjYgMi41LTMuNWMwLTEuMTI5LS4zODktMi4xMjMtLjk4Mi0yLjc2MyAyLjA1OC0uNzE1IDMuOTU0LS43MzcgMy45ODQtLjczNy41NTEtLjAwMi45OTgtLjQ1Ljk5Ny0xLjAwMi0uMDAxLS41NTEtLjQ0Ny0uOTk4LS45OTktLjk5OHoiLz48L3N2Zz4=', + id: '[生气]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0RBMkY0NyIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjMjkyRjMzIiBkPSJNMjUuNDg1IDI5Ljg3OUMyNS40NCAyOS43IDI0LjMxNyAyNS41IDE4IDI1LjVjLTYuMzE4IDAtNy40NCA0LjItNy40ODUgNC4zNzktLjA1NS4yMTcuMDQzLjQ0Mi4yMzcuNTU0LjE5NS4xMDkuNDM5LjA3OS42LS4wNzcuMDE5LS4wMTkgMS45NTQtMS44NTYgNi42NDgtMS44NTZzNi42MyAxLjgzNyA2LjY0OCAxLjg1NWMuMDk2LjA5NS4yMjQuMTQ1LjM1Mi4xNDUuMDg0IDAgLjE2OS0uMDIxLjI0Ni0uMDY0LjE5Ni0uMTEyLjI5NC0uMzM5LjIzOS0uNTU3em0tOS43NzgtMTIuNTg2QzEyLjQ1MiAxNC4wMzggNy4yMjEgMTQgNyAxNGMtLjU1MiAwLS45OTkuNDQ3LS45OTkuOTk4LS4wMDEuNTUyLjQ0NiAxIC45OTggMS4wMDIuMDI5IDAgMS45MjUuMDIyIDMuOTgzLjczNy0uNTkzLjY0LS45ODIgMS42MzQtLjk4MiAyLjc2MyAwIDEuOTM0IDEuMTE5IDMuNSAyLjUgMy41czIuNS0xLjU2NiAyLjUtMy41YzAtLjE3NC0uMDE5LS4zNC0uMDM3LS41MDcuMDEzIDAgLjAyNS4wMDcuMDM3LjAwNy4yNTYgMCAuNTEyLS4wOTguNzA3LS4yOTMuMzkxLS4zOTEuMzkxLTEuMDIzIDAtMS40MTR6TTI5IDE0Yy0uMjIxIDAtNS40NTEuMDM4LTguNzA3IDMuMjkzLS4zOTEuMzkxLS4zOTEgMS4wMjMgMCAxLjQxNC4xOTUuMTk1LjQ1MS4yOTMuNzA3LjI5My4wMTMgMCAuMDI0LS4wMDcuMDM2LS4wMDctLjAxNi4xNjctLjAzNi4zMzMtLjAzNi41MDcgMCAxLjkzNCAxLjExOSAzLjUgMi41IDMuNXMyLjUtMS41NjYgMi41LTMuNWMwLTEuMTI5LS4zODktMi4xMjMtLjk4Mi0yLjc2MyAyLjA1OC0uNzE1IDMuOTU0LS43MzcgMy45ODQtLjczNy41NTEtLjAwMi45OTgtLjQ1Ljk5Ny0xLjAwMi0uMDAxLS41NTEtLjQ0Ny0uOTk4LS45OTktLjk5OHoiLz48L3N2Zz4=', + id: '[发怒]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjE3IiByeD0iMi41IiByeT0iMy41Ii8+PGVsbGlwc2UgZmlsbD0iIzY2NDUwMCIgY3g9IjI0LjUiIGN5PSIxNyIgcng9IjIuNSIgcnk9IjMuNSIvPjxwYXRoIGZpbGw9IiM2NjQ1MDAiIGQ9Ik01Ljk5OSAxMy41Yy0uMjA4IDAtLjQxOS0uMDY1LS41OTktLjItLjQ0Mi0uMzMxLS41MzEtLjk1OC0uMi0xLjQgMy4yNjItNC4zNSA3LjYxNi00LjQgNy44LTQuNC41NTIgMCAxIC40NDggMSAxIDAgLjU1MS0uNDQ1Ljk5OC0uOTk2IDEtLjE1NS4wMDItMy41NjguMDg2LTYuMjA0IDMuNi0uMTk2LjI2Mi0uNDk3LjQtLjgwMS40em0yNC4wMDIgMGMtLjMwNSAwLS42MDQtLjEzOC0uODAxLS40LTIuNjQxLTMuNTIxLTYuMDYxLTMuNTk5LTYuMjA2LTMuNi0uNTUtLjAwNi0uOTk0LS40NTYtLjk5MS0xLjAwNS4wMDMtLjU1MS40NDctLjk5NS45OTctLjk5NS4xODQgMCA0LjUzNy4wNSA3LjggNC40LjMzMi40NDIuMjQyIDEuMDY5LS4yIDEuNC0uMTguMTM1LS4zOS4yLS41OTkuMnptLTYuNTE2IDE0Ljg3OUMyMy40NzQgMjguMzM1IDIyLjM0IDI0IDE4IDI0cy01LjQ3NCA0LjMzNS01LjQ4NSA0LjM3OWMtLjA1My4yMTMuMDQ0LjQzMS4yMzIuNTQ0LjE4OC4xMTIuNDMzLjA4Ni41OTYtLjA2QzEzLjM1MiAyOC44NTUgMTQuMzU2IDI4IDE4IDI4YzMuNTkgMCA0LjYxNy44MyA0LjY1Ni44NjMuMDk1LjA5LjIxOS4xMzcuMzQ0LjEzNy4wODQgMCAuMTY5LS4wMjEuMjQ2LS4wNjQuMTk2LS4xMTIuMjk0LS4zMzkuMjM5LS41NTd6Ii8+PHBhdGggZmlsbD0iIzVEQURFQyIgZD0iTTE2IDMxYzAgMi43NjItMi4yMzggNS01IDVzLTUtMi4yMzgtNS01IDQtMTAgNS0xMCA1IDcuMjM4IDUgMTB6Ii8+PC9zdmc+', + id: '[眼泪]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMThTMCAyNy45NDEgMCAxOCA4LjA1OSAwIDE4IDBzMTggOC4wNTkgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjkgMTBjLTUuNTU0IDAtNy44MDItNC4zNjctNy44OTUtNC41NTMtLjI0Ny0uNDk0LS4wNDctMS4wOTUuNDQ3LTEuMzQyLjQ5My0uMjQ2IDEuMDkyLS4wNDggMS4zNC40NDNDMjIuOTY3IDQuNjk0IDI0LjcxMyA4IDI5IDhjLjU1MyAwIDEgLjQ0OCAxIDFzLS40NDcgMS0xIDF6TTcgMTBjLS41NTIgMC0xLS40NDgtMS0xcy40NDgtMSAxLTFjNS4wODMgMCA1Ljk5Ni0zLjEyIDYuMDMzLTMuMjUzLjE0NS0uNTI4LjY5Mi0uODQ4IDEuMjE5LS43MDkuNTMuMTM5Ljg1MS42NzMuNzE4IDEuMjA1QzE0LjkyMSA1LjQzNyAxMy43MDQgMTAgNyAxMHptLS45OTkgMTNjLS4zMDQgMC0uNjA0LS4xMzgtLjgwMS0uNC0uMzMyLS40NDEtLjI0Mi0xLjA2OC4yLTEuMzk5LjE0My0uMTA3IDIuOTUxLTIuMTgzIDYuODU2LTIuOTMzQzkuNzgxIDE3LjAyNyA3LjAzNCAxNyA2Ljk5OSAxN2MtLjU1Mi0uMDAxLS45OTktLjQ1LS45OTgtMS4wMDIgMC0uNTUxLjQ0Ny0uOTk4Ljk5OS0uOTk4LjIyMSAwIDUuNDUyLjAzOCA4LjcwNyAzLjI5My4yODYuMjg2LjM3Mi43MTYuMjE3IDEuMDktLjE1NS4zNzQtLjUyLjYxNy0uOTI0LjYxNy00LjYxMyAwLTguMzYzIDIuNzcyLTguNCAyLjgtLjE4LjEzNS0uMzkxLjItLjU5OS4yem0yMy45OTgtLjAwMWMtLjIwOCAwLS40MTgtLjA2NC0uNTk4LS4xOThDMjkuMzYzIDIyLjc3MiAyNS41OSAyMCAyMSAyMGMtLjQwNCAwLS43Ny0uMjQzLS45MjQtLjYxNy0uMTU1LS4zNzQtLjA2OS0uODA0LjIxNy0xLjA5QzIzLjU0OSAxNS4wMzggMjguNzc5IDE1IDI5IDE1Yy41NTIgMCAuOTk4LjQ0Ny45OTkuOTk4LjAwMS41NTItLjQ0NiAxLS45OTcgMS4wMDItLjAzNiAwLTIuNzgzLjAyNy01LjI1OCAxLjI2OCAzLjkwNS43NSA2LjcxMyAyLjgyNSA2Ljg1NSAyLjkzMy40NDEuMzMxLjUzMS45NTYuMjAxIDEuMzk4LS4xOTYuMjYxLS40OTYuNC0uODAxLjR6bS00LjU0NSA3Ljc5MmMtLjExOC0uMjU3LTIuOTM4LTYuMjkxLTcuMjEtNi4yOTEtNC4yNDkgMC03LjU0NiA2LjAwNy03LjY4NCA2LjI2Mi0uMTEzLjIwOS0uMDYzLjQ2OS4xMTkuNjIxLjA5My4wNzguMjA3LjExNy4zMjEuMTE3LjExIDAgLjIyLS4wMzYuMzExLS4xMDkuMDMxLS4wMjQgMy4xNjMtMi40NzkgNi45MzMtMi40NzkgMy43NDMgMCA2LjM4OCAyLjQzIDYuNDE0IDIuNDU0LjE3NS4xNjIuNDQyLjE4LjYzNC4wNC4xOTQtLjE0LjI2Mi0uMzk3LjE2Mi0uNjE1eiIvPjwvc3ZnPg==', + id: '[烦躁]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjE2LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMjQuNSIgY3k9IjE2LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjMuNDg1IDI3Ljg3OUMyMy40NzQgMjcuODM1IDIyLjM0IDIzLjUgMTggMjMuNXMtNS40NzQgNC4zMzUtNS40ODUgNC4zNzljLS4wNTMuMjEzLjA0NC40MzEuMjMyLjU0NC4xODguMTEyLjQzMy4wODYuNTk2LS4wNi4wMDktLjAwNyAxLjAxMy0uODYzIDQuNjU3LS44NjMgMy41OSAwIDQuNjE3LjgzIDQuNjU2Ljg2My4wOTUuMDkxLjIxOS4xMzcuMzQ0LjEzNy4wODQgMCAuMTY5LS4wMjEuMjQ2LS4wNjQuMTk2LS4xMTEuMjk0LS4zMzkuMjM5LS41NTd6Ii8+PHBhdGggZmlsbD0iIzVEQURFQyIgZD0iTTEwIDMwYzAgMi43NjItMi4yMzggNS01IDVzLTUtMi4yMzgtNS01IDQtMTAgNS0xMCA1IDcuMjM4IDUgMTB6Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTMwIDEzYy01LjU1NCAwLTcuODAyLTQuMzY3LTcuODk1LTQuNTUzLS4yNDctLjQ5NC0uMDQ3LTEuMDk1LjQ0Ny0xLjM0Mi40OTItLjI0NyAxLjA5Mi0uMDQ4IDEuMzQuNDQzQzIzLjk2NyA3LjY5NCAyNS43MTMgMTEgMzAgMTFjLjU1MyAwIDEgLjQ0OCAxIDEgMCAuNTUzLS40NDcgMS0xIDF6TTYgMTNjLS41NTIgMC0xLS40NDgtMS0xcy40NDgtMSAxLTFjNS4wODMgMCA1Ljk5Ni0zLjEyIDYuMDMzLTMuMjUzLjE0NS0uNTI4LjY5LS44NDggMS4yMTktLjcwOS41My4xMzkuODUxLjY3My43MTggMS4yMDVDMTMuOTIxIDguNDM3IDEyLjcwNCAxMyA2IDEzeiIvPjwvc3ZnPg==', + id: '[难过]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjQkREREY0IiBkPSJNMTggMTFjOC43NDkgMCAxNi4wMzMgNC41MDkgMTcuNjU2IDEwLjQ4NC4yMjItMS4xMjguMzQ0LTIuMjkyLjM0NC0zLjQ4NCAwLTkuOTQtOC4wNTktMTgtMTgtMThDOC4wNiAwIDAgOC4wNiAwIDE4YzAgMS4xOTIuMTIzIDIuMzU2LjM0NCAzLjQ4NEMxLjk2NyAxNS41MDkgOS4yNTIgMTEgMTggMTF6Ii8+PGVsbGlwc2UgZmlsbD0iIzY2NDUwMCIgY3g9IjExLjUiIGN5PSIxNi41IiByeD0iMi41IiByeT0iMy41Ii8+PGVsbGlwc2UgZmlsbD0iIzY2NDUwMCIgY3g9IjI0LjUiIGN5PSIxNi41IiByeD0iMi41IiByeT0iMy41Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTUuOTk5IDEyYy0uMjA4IDAtLjQxOS0uMDY1LS41OTktLjItLjQ0Mi0uMzMxLS41MzEtLjk1OC0uMi0xLjRDOC40NjIgNi4wNSAxMi44MTYgNiAxMyA2Yy41NTIgMCAxIC40NDggMSAxIDAgLjU1MS0uNDQ1Ljk5OC0uOTk2IDEtLjE1NS4wMDItMy41NjguMDg2LTYuMjA0IDMuNi0uMTk2LjI2Mi0uNDk3LjQtLjgwMS40em0yNC4wMDIgMGMtLjMwNSAwLS42MDQtLjEzOC0uODAxLS40LTIuNjQtMy41MjEtNi4wNjEtMy41OTgtNi4yMDYtMy42LS41NS0uMDA2LS45OTQtLjQ1Ni0uOTkxLTEuMDA1QzIyLjAwNiA2LjQ0NCAyMi40NSA2IDIzIDZjLjE4NCAwIDQuNTM3LjA1IDcuOCA0LjQuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xOC4xMzUtLjM5LjItLjU5OS4yem0tNi41MTYgMTUuODc5QzIzLjQ3NCAyNy44MzUgMjIuMzQgMjMuNSAxOCAyMy41cy01LjQ3NCA0LjMzNS01LjQ4NSA0LjM3OWMtLjA1My4yMTMuMDQzLjQzMS4yMzEuNTQ0LjE4Ny4xMTIuNDMzLjA4Ni41OTYtLjA2LjAxMS0uMDA4IDEuMDE1LS44NjMgNC42NTgtLjg2MyAzLjU4OSAwIDQuNjE3LjgzIDQuNjU2Ljg2My4wOTUuMDkuMjE5LjEzNy4zNDQuMTM3LjA4NCAwIC4xNjktLjAyMS4yNDYtLjA2NC4xOTYtLjExMi4yOTQtLjMzOS4yMzktLjU1N3oiLz48L3N2Zz4=', + id: '[焦虑]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTEuNSIgY3k9IjE2LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMjQuNSIgY3k9IjE2LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMjMuNDg1IDI3Ljg3OUMyMy40NzQgMjcuODM1IDIyLjM0IDIzLjUgMTggMjMuNXMtNS40NzQgNC4zMzUtNS40ODQgNC4zNzljLS4wNTMuMjEzLjA0My40MzEuMjMxLjU0NC4xODcuMTEyLjQzMy4wODYuNTk2LS4wNi4wMS0uMDA4IDEuMDE0LS44NjMgNC42NTctLjg2MyAzLjU5IDAgNC42MTcuODMgNC42NTYuODYzLjA5NS4wOS4yMTkuMTM3LjM0NC4xMzcuMDg0IDAgLjE2OS0uMDIxLjI0Ni0uMDY0LjE5Ni0uMTEyLjI5NC0uMzM5LjIzOS0uNTU3eiIvPjxwYXRoIGZpbGw9IiM1REFERUMiIGQ9Ik0xMCAzMGMwIDIuNzYyLTIuMjM4IDUtNSA1cy01LTIuMjM4LTUtNSA0LTEwIDUtMTAgNSA3LjIzOCA1IDEweiIvPjxwYXRoIGZpbGw9IiNCRERERjQiIGQ9Ik0xOCAxMWM4Ljc0OSAwIDE2LjAzMyA0LjUwOSAxNy42NTYgMTAuNDg0LjIyMi0xLjEyOC4zNDQtMi4yOTIuMzQ0LTMuNDg0IDAtOS45NC04LjA1OS0xOC0xOC0xOEM4LjA2IDAgMCA4LjA2IDAgMThjMCAxLjE5Mi4xMjMgMi4zNTYuMzQ0IDMuNDg0QzEuOTY3IDE1LjUwOSA5LjI1MiAxMSAxOCAxMXoiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNMzAgMTJjLTUuNTU0IDAtNy44MDItNC4zNjctNy44OTUtNC41NTMtLjI0Ny0uNDk0LS4wNDctMS4wOTUuNDQ3LTEuMzQyLjQ5Mi0uMjQ3IDEuMDkyLS4wNDggMS4zNC40NDNDMjMuOTY3IDYuNjk0IDI1LjcxMyAxMCAzMCAxMGMuNTUzIDAgMSAuNDQ4IDEgMXMtLjQ0NyAxLTEgMXpNNiAxMmMtLjU1MiAwLTEtLjQ0OC0xLTFzLjQ0OC0xIDEtMWM1LjA4MyAwIDUuOTk2LTMuMTIgNi4wMzMtMy4yNTMuMTQ1LS41MjguNjktLjg0OCAxLjIxOS0uNzA5LjUzLjEzOS44NTEuNjczLjcxOCAxLjIwNUMxMy45MjEgNy40MzcgMTIuNzA0IDEyIDYgMTJ6Ii8+PC9zdmc+', + id: '[担心]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTE4IDBDOC4wNiAwIDAgOC4wNiAwIDE4YzAgNi4wNTEgMi45OTYgMTEuMzkyIDcuNTc0IDE0LjY1NUM3LjY3OCAyNi4yMTcgNS4zMzcgMTkgMS40MDQgMTljLS40NjQgMC0uODQuMDY2LTEuMTUzLjE4M0MuNTU0IDE4LjQyNiAxLjIxMSAxOCAyLjQ0IDE4YzQuMjcgMCA2LjY2NiA4LjUwNiA2LjA5MiAxNS4yODhDMTEuMjg2IDM0Ljk5NyAxNC41MjIgMzYgMTggMzZjMy40NzkgMCA2LjcxNi0xLjAwNCA5LjQ3LTIuNzEzQzI2Ljg5MyAyNi40OCAyOS4yODggMTggMzMuNTYxIDE4YzEuMjMzIDAgMS44OTIuNDI2IDIuMTkyIDEuMTgzLS4zMTQtLjExNy0uNjkxLS4xODMtMS4xNTctLjE4My0zLjkzOCAwLTYuMjc4IDcuMTk5LTYuMTcgMTMuNjU1QzMzLjAwNSAyOS4zOTIgMzYgMjQuMDUxIDM2IDE4YzAtOS45NC04LjA1OS0xOC0xOC0xOHoiLz48cGF0aCBmaWxsPSIjQkREREY0IiBkPSJNMTggMEM4LjA2IDAgMCA4LjA2IDAgMThjMCAxLjE5Mi4xMjMgMi4zNTYuMzQ0IDMuNDg0LjIzNC0uODYzLjYtMS42OTEgMS4wNTgtMi40ODQtLjQ2MyAwLS44MzguMDY2LTEuMTUuMTgzLjI2NC0uNjU5LjgyMi0xLjA0OCAxLjc2OC0xLjE0MkM1LjAxMiAxMy44NjIgMTEuMDM3IDExIDE4IDExYzYuOTY0IDAgMTIuOTg4IDIuODYxIDE1Ljk4IDcuMDQuOTUuMDk0IDEuNTEuNDgyIDEuNzcyIDEuMTQzLS4zMTItLjExNy0uNjg5LS4xODMtMS4xNTMtLjE4My40NTguNzkzLjgyMyAxLjYyMSAxLjA1OCAyLjQ4NC4yMjEtMS4xMjguMzQzLTIuMjkyLjM0My0zLjQ4NCAwLTkuOTQtOC4wNTktMTgtMTgtMTh6Ii8+PHBhdGggZmlsbD0iI0Y1RjhGQSIgZD0iTTcuMzQ3IDExLjkxYy0uOTQ2IDMuMTc2LjEwNyA2LjI5MyAyLjM1MyA2Ljk2MiAyLjI0Ni42NyA0LjgzNC0xLjM2MiA1Ljc3OS00LjUzOC45NDYtMy4xNzUtLjEwNi02LjI5My0yLjM1MS02Ljk2Mi0yLjI0Ni0uNjY5LTQuODM0IDEuMzYzLTUuNzgxIDQuNTM4em0yMS4zMDUgMGMuOTQ2IDMuMTc2LS4xMDcgNi4yOTMtMi4zNTIgNi45NjItMi4yNDYuNjctNC44MzQtMS4zNjItNS43NzktNC41MzgtLjk0Ni0zLjE3NS4xMDctNi4yOTMgMi4zNTEtNi45NjIgMi4yNDUtLjY2OSA0LjgzMyAxLjM2MyA1Ljc4IDQuNTM4eiIvPjxwYXRoIGZpbGw9IiM2NjQ1MDAiIGQ9Ik0xOCAxOGMtMi43NTcgMC01IDIuMjQzLTUgNXY2YzAgMi43NTcgMi4yNDMgNSA1IDVzNS0yLjI0MyA1LTV2LTZjMC0yLjc1Ny0yLjI0My01LTUtNXoiLz48cGF0aCBmaWxsPSIjRkNBQjQwIiBkPSJNMS40MDQgMTljLS40NjQgMC0uODQuMDY2LTEuMTUzLjE4My4wNzItLjE3OS4xNjctLjMzNi4yODEtLjQ3NkMtMS4zMyAyMC45OTggMi44NDkgMjguNTQuODE4IDM2aDYuNDZjMS4xOS02Ljk2LTEuMjM1LTE3LTUuODc0LTE3em0zNC4zNDkuMTgzYy0uMzE0LS4xMTctLjY5MS0uMTgzLTEuMTU3LS4xODMtNC42NDEgMC03LjA2NSAxMC4wMDItNS44NzMgMTdoNi40NmMtMS45MDYtNy4wNDUgMS42NTYtMTQuMDg5LjU3LTE2LjgxN3oiLz48L3N2Zz4=', + id: '[恐惧]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMTgiIGN5PSIyNyIgcng9IjUiIHJ5PSI2Ii8+PHBhdGggZmlsbD0iIzY2NDUwMCIgZD0iTTUuOTk5IDExYy0uMjA4IDAtLjQxOS0uMDY1LS41OTktLjItLjQ0Mi0uMzMxLS41MzEtLjk1OC0uMi0xLjRDOC40NjIgNS4wNSAxMi44MTYgNSAxMyA1Yy41NTIgMCAxIC40NDggMSAxIDAgLjU1MS0uNDQ1Ljk5OC0uOTk2IDEtLjE1NS4wMDItMy41NjguMDg2LTYuMjA0IDMuNi0uMTk2LjI2Mi0uNDk3LjQtLjgwMS40em0yNC4wMDIgMGMtLjMwNSAwLS42MDQtLjEzOC0uODAxLS40LTIuNjQtMy41MjEtNi4wNjEtMy41OTgtNi4yMDYtMy42LS41NS0uMDA2LS45OTQtLjQ1Ni0uOTkxLTEuMDA1QzIyLjAwNiA1LjQ0NCAyMi40NSA1IDIzIDVjLjE4NCAwIDQuNTM3LjA1IDcuOCA0LjQuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xOC4xMzUtLjM5LjItLjU5OS4yeiIvPjxwYXRoIGZpbGw9IiNGNUY4RkEiIGQ9Ik0xOCAyM2MtMS42NTcgMC0zIDEuNzktMyA0aDZjMC0yLjIxLTEuMzQzLTQtMy00eiIvPjxlbGxpcHNlIGZpbGw9IiM2NjQ1MDAiIGN4PSIxMiIgY3k9IjE0LjUiIHJ4PSIyLjUiIHJ5PSIzLjUiLz48ZWxsaXBzZSBmaWxsPSIjNjY0NTAwIiBjeD0iMjQiIGN5PSIxNC41IiByeD0iMi41IiByeT0iMy41Ii8+PC9zdmc+', + id: '[惊讶]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48Y2lyY2xlIGZpbGw9IiNGRjc4OTIiIGN4PSIyOSIgY3k9IjIzIiByPSI1Ii8+PGNpcmNsZSBmaWxsPSIjRkY3ODkyIiBjeD0iNyIgY3k9IjIzIiByPSI1Ii8+PGNpcmNsZSBmaWxsPSIjRjVGOEZBIiBjeD0iMjQuNSIgY3k9IjE2LjUiIHI9IjUuNSIvPjxjaXJjbGUgZmlsbD0iI0Y1RjhGQSIgY3g9IjExLjUiIGN5PSIxNi41IiByPSI1LjUiLz48Y2lyY2xlIGZpbGw9IiM2NjQ1MDAiIGN4PSIxMS41IiBjeT0iMTYuNSIgcj0iMi41Ii8+PGNpcmNsZSBmaWxsPSIjNjY0NTAwIiBjeD0iMjQuNSIgY3k9IjE2LjUiIHI9IjIuNSIvPjxwYXRoIGZpbGw9IiM2NjQ1MDAiIGQ9Ik0yMiAzMGgtOGMtLjU1MiAwLTEtLjQ0Ny0xLTFzLjQ0OC0xIDEtMWg4Yy41NTMgMCAxIC40NDcgMSAxcy0uNDQ3IDEtMSAxem04LjAwMS0xOWMtLjMwNSAwLS42MDQtLjEzOC0uODAxLS40LTIuNjQtMy41MjEtNi4wNjEtMy41OTgtNi4yMDYtMy42LS41NS0uMDA2LS45OTQtLjQ1Ni0uOTkxLTEuMDA1QzIyLjAwNiA1LjQ0NCAyMi40NSA1IDIzIDVjLjE4NCAwIDQuNTM3LjA1IDcuOCA0LjQuMzMyLjQ0Mi4yNDIgMS4wNjktLjIgMS40LS4xOC4xMzUtLjM5LjItLjU5OS4yek01Ljk5OSAxMWMtLjIwOCAwLS40MTktLjA2NS0uNTk5LS4yLS40NDItLjMzMS0uNTMxLS45NTgtLjItMS40QzguNDYyIDUuMDUgMTIuODE2IDUgMTMgNWMuNTUyIDAgMSAuNDQ4IDEgMSAwIC41NTEtLjQ0NS45OTgtLjk5NiAxLS4xNTUuMDAyLTMuNTY4LjA4Ni02LjIwNCAzLjYtLjE5Ni4yNjItLjQ5Ny40LS44MDEuNHoiLz48L3N2Zz4=', + id: '[脸红]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0ZGQ0M0RCIgZD0iTTM2IDE4YzAgOS45NDEtOC4wNTkgMTgtMTggMTgtOS45NCAwLTE4LTguMDU5LTE4LTE4QzAgOC4wNiA4LjA2IDAgMTggMGM5Ljk0MSAwIDE4IDguMDYgMTggMTgiLz48cGF0aCBmaWxsPSIjNjY0NTAwIiBkPSJNNy4wMDEgMTVjLS4zMjMgMC0uNjQtLjE1Ni0uODMzLS40NDUtLjMwNi0uNDYtLjE4Mi0xLjA4MS4yNzctMS4zODdDNi41NzggMTMuMDggOS43NDYgMTEgMTQgMTFjLjU1MiAwIDEgLjQ0OCAxIDFzLS40NDggMS0xIDFjLTMuNjU1IDAtNi40MTggMS44MTQtNi40NDUgMS44MzItLjE3MS4xMTQtLjM2NC4xNjgtLjU1NC4xNjh6bTIxLjk5OCAwYy0uMTg5IDAtLjM4Mi0uMDU0LS41NTItLjE2N0MyOC40MTkgMTQuODE1IDI1LjYyOCAxMyAyMiAxM2MtLjU1MyAwLTEtLjQ0OC0xLTFzLjQ0Ny0xIDEtMWM0LjI1NCAwIDcuNDIyIDIuMDggNy41NTUgMi4xNjguNDYuMzA2LjU4NC45MjcuMjc3IDEuMzg3LS4xOTIuMjg5LS41MS40NDUtLjgzMy40NDV6Ii8+PHBhdGggZmlsbD0iI0Y1RjhGQSIgZD0iTTI3IDIyLjA5MUwzNiAxOGMwLS42Ni0uMDQxLTEuMzA5LS4xMDktMS45NUwyNyAyMC4wOTFWMTljMC0xLjEwNC0uODk2LTItMi0ySDExYy0xLjEwNCAwLTIgLjg5Ni0yIDJ2MS4wOTFMLjExIDE2LjA1Qy4wNDEgMTYuNjkxIDAgMTcuMzQgMCAxOGw5IDQuMDkxdjQuNTQ2bC03LjQ1My0xLjM1NWMuMzQxLjc3Ljc0MSAxLjUwNyAxLjE4MyAyLjIxNUw5IDI4LjYzN1YzMGMwIDEuMTA0Ljg5NiAyIDIgMmgxNGMxLjEwNCAwIDItLjg5NiAyLTJ2LTEuMzYzbDYuMjcxLTEuMTQxYy40NDEtLjcwOC44NDEtMS40NDUgMS4xODItMi4yMTVMMjcgMjYuNjM3di00LjU0NnoiLz48L3N2Zz4=', + id: '[生病]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0VGOTY0NSIgZD0iTTE4IDEwLjA4N2w1LjAwNy0uMDQ3aDYuMDE2Yy45NzMgMCAyLjI2NS0uMDM4IDMuMTk1Ljg3My0uODEtMS4xODctMi4xNzItMS45NjctMy43MTgtMS45NjdIMjhsLS4yNDMtLjA5NEgyMi4xbC4wMTYtNGMwLS44MTIuNTMxLTEuNTc4LjczNC0xLjk5OC0xLjA5Ni41OTItMS44NSAxLjczNy0xLjg1IDMuMDdsLS4wODcuMjcydjIuNjU2TDE4IDguODY4Yy0xLjIwMSAwLTIuMTgyLjQyNy0yLjkxNSAxLjI2NmwtLjAxNi0xLjM3NS4wMTYtNC44MjhjMC0uNzU4LjQwNi0xLjQzOC42NjktMS45NTRDMTQuNzEgMi42NjkgMTQgMy45NDYgMTQgNS40MjR2LjUyMmwtLjE4MS45NzguMDMxIDguMDIyYzAgLjg5MS0uNDE0IDEuNTc2LTEuMDMxIDIuMTI1LS41My40NzItMS4wNTMuNjU2LTEuODE5LjY1Ni0xLjY1NyAwLTIuODg0LTEuMjgxLTIuODg0LTIuOTM4TDguMSA1LjcxMmMwLS44MTYuNDUzLTEuMzkxLjc1Ni0xLjg2MUM3Ljc1NyA0LjQ0MSA3IDUuNTg4IDcgNi45MjRWOC44MWwtLjA3Mi4yMTR2Ni4wNThjMCAxLjk4OS0xLjg5MSAyLjc4Ni0yLjgyOCAyLjc4Ni0xLjcxOSAwLTMuMS0xLjIwMy0zLjEtMi43ODZ2Mi42NDVzLjE4NS4yMDkuMTk0LjMxMmMuODgxLjg4MiAyLjE1NiAxLjAxNiAyLjk4NCAxLjAxNiAxLjU5NCAwIDIuNjg0LS44NTEgMy4zMzctMi4wNjIuNjc4IDEuMjEyIDEuOTEzIDIuMDE2IDMuNDI4IDIuMDE2czMuNjg0LS43MzggNC4wNTYtMy4zNDRjLjE0MS4xNjcuNTA2LjUxLjY3OC42NDEuNzAzLjUzMSAxLjU4NS43MzQgMi4zMjIuNzM0bDEuMTE2LS4wMzFoMS43MzRjLS41MzUuMjctLjc3OC41NTItMS4yMDMuOTM4LTEuNzI5IDEuNTY4LTIuNTc4IDQuMDk0LTIuNTc4IDcuNjcyIDAgLjI3Ni4zMTcuNTYyLjU5NC41NjIuMjc2IDAgLjU3OC0uMzE3LjU3OC0uNTk0IDAtMy45NjIuOTczLTYuMzI3IDMuMjAzLTcuNTYyIDEuMTc1LS42NTEgMi42MjYtLjk2OSA0LjUxNi0uOTY5LjA1OSAwIC41NjItLjAzMS41NjItLjAzMS4yNzYgMCAuNTk0LS4zMzMuNTk0LS42MDkgMC0uMjc2LS4yNzEtLjU0Ny0uNTQ3LS41NDdIMjAuMTNMMTggMTUuODUzYy0xLjY1NyAwLTIuOTE1LTEuMjgxLTIuOTE1LTIuOTM4IDAtMS42NTcgMS4yNTgtMi44MjggMi45MTUtMi44Mjh6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTQuMTI0IDE4Ljk0NmMxLjQ3NCAwIDIuNzM4LS44MzEgMy4zOTItMi4wNDMuNjc4IDEuMjEyIDEuOTU4IDIuMDQzIDMuNDQ2IDIuMDQzaC4wNzZjMS4xNTMgMCAyLjE2OS0uNTEgMi44ODktMS4yOTguMDIyLS4wMjUuMDUxLS4wNDMuMDczLS4wNjh2LS4wMTRjLjE4NS0uMjEyLjM0My0uNDQ4LjQ4MS0uNjk1LjA0LS4wNzIuMDY5LS4xNTEuMTA1LS4yMjcuMDkzLS4xOTQuMTc2LS4zOTQuMjM2LS42MDYuMDUyLS4xNzMuMTA2LS4zNDQuMTM0LS41MjYuMTQxLjE2Ny4yOTYuMzE5LjQ2LjQ2LjA2OS4wNTkuMTQ3LjEwNy4yMjEuMTYyLjExNi4wODYuMjI5LjE3Ny4zNTUuMjUxLjU4OS4zNTEgMS4yNzEuNTYgMi4wMDguNTZoMy4xNjZjLS41MzUuMjctLjk5OS42MTQtMS40MjQgMS0xLjcyOSAxLjU2OC0yLjU3OSA0LjA4NS0yLjU3OSA3LjY2MyAwIC4yNzYuMjI0LjUuNS41cy41LS4yMjQuNS0uNWMwLTMuOTYyIDEuMDEtNi40MjcgMy4yNC03LjY2MyAxLjE3NS0uNjUxIDIuNjgyLS45NjcgNC41NzEtLjk2Ny4wNTkgMCAuNTI2LS4wMzMuNTI2LS4wMzMuMjc2IDAgLjUtLjIyNC41LS41cy0uMjI0LS41LS41LS41SDE4Yy0xLjY1NyAwLTMtMS4zNDMtMy0zczEuMzQzLTMgMy0zaDExYy45NzMgMCAyLjI4OC4wNTYgMy4yMTguOTY3LjMyNS4zMTguNjA0LjczNi44MDMgMS4yOTdsMS42NTkgNS40NzJjLjE1Ni41MTIuNzMgMi44NTcuNjI2IDMuMzQ2IDAgNy4zNC04LjcgMTQuOTcyLTE5LjAwNCAxNC45NzJDNi4zMjYgMzYgMSAyNy44ODMgMSAxNy45NTd2LS4yMjljLjAxLjAxLjAyMS4wMTYuMDMxLjAyNi44ODEuODgyIDEuNzk5IDEuMTkyIDIuODQ1IDEuMTkyaC4yNDh6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTMuODY0IDUuOTQ2aC4yNzFDNS43MTggNS45NDYgNyA3LjIyOSA3IDguODF2Ni4yNzNjMCAxLjU4Mi0xLjI4MiAyLjg2NC0yLjg2NCAyLjg2NGgtLjI3MkMyLjI4MiAxNy45NDYgMSAxNi42NjQgMSAxNS4wODJWOC44MWMwLTEuNTgxIDEuMjgyLTIuODY0IDIuODY0LTIuODY0ek0xNCA5LjIyMnY1LjcyNGMwIC44OTEtLjM5NiAxLjY4My0xLjAxNCAyLjIzMy0uNTMuNDcyLTEuMjIxLjc2Ny0xLjk4Ni43NjctMS42NTcgMC0zLTEuMzQzLTMtM3YtOWMwLS44MTYuMzI4LTEuNTU0Ljg1Ny0yLjA5NS41NDQtLjU1NyAxLjMwMi0uOTA1IDIuMTQzLS45MDUgMS42NTcgMCAzIDEuMzQzIDMgM3YzLjI3NnptNC0uMjc2Yy0xLjIwMSAwLTIuMjY3LjU0MS0zIDEuMzhWMy45NDdjMC0uNzU4LjI5LTEuNDQyLjc1My0xLjk3QzE2LjMwMyAxLjM1IDE3LjEuOTQ3IDE4IC45NDdjMS42NTcgMCAzIDEuMzQzIDMgM3Y1aC0zem00LTQuMDA3YzAtLjgxMi4zMjYtMS41NDUuODUtMi4wODUuNTQ0LS41NTkgMS4zMDEtLjkwOSAyLjE0My0uOTA5aC4wMTRDMjYuNjYgMS45NDYgMjggMy4yODYgMjggNC45Mzl2NC4wMDZoLTZWNC45Mzl6Ii8+PC9zdmc+', + id: '[拳头]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0VGOTY0NSIgZD0iTTguOTE2IDIzLjg5MXMxLjczNy4xMDkgMS45NC0xLjgwOGwuMDE2LTQuMTYxLjEyOC0uMDA1di0uOTZjMC0uOTUyLjU3Mi0xLjc2OSAxLjM4OS0yLjEzMy0uMjQyLjMzMS0uMjgzIDcuMTc2LS4yODMgNy4xNzYgMCAxLjEwNC43ODkgMS44OTEgMS44OTQgMS44OTEuNzU1IDAgMS4yNjUtLjMxNCAxLjYwNi0uOTMyLS40NTgtLjUyNi0uNzM0LTEuMjA2LS43MzQtMS45NTkgMC0xLjMxMi43ODEtMi4xNDEgMS4xMjgtMi4yMjIgMCAwIC4wNTYtLjA3LjA4Mi0uMDg0LjM2OC0uMzA2LjgwNC0uNTM1IDEuMjkxLS42MzRsLjAyLjAwMS4yNjEtLjE1NWg2LjkyOGMxLjMwNiAwIDEuNTU4LjQ4NiAxLjUzOC40NzVsLjAyLjAxMWMuNTkxLjMwNSAxLjA3Ni43NzMgMS40MDQgMS4zNS0uMDI1LS4wMzEtLjY4MS0uNjMzLTEuNTQzLS42MzNzLTgtLjA0Ny04LS4wNDdjLTEuMTA0IDAtMS45MjUuODMzLTEuOTI1IDEuOTM4cy44MiAxLjkyMiAxLjkyNSAxLjkyMmw1LjUtLjAxNmMuMjc2IDAgLjU5MS4zMTcuNTkxLjU5NCAwIC4yNzYtLjMxNC41NzgtLjU5MS41NzggMCAwLTEuNTU4LS4wNjktMi44NDcgMS4yNS0xLjIwOSAxLjIzOC0yLjA3OCAzLjgwMy0yLjA3OCA1LjY3MiAwIC4yNzYtLjI5OS41NzgtLjU3NS41NzhzLS41ODItLjMwMi0uNTgyLS41NzhjMC0zLjAxLjk0MS01LjUyNSAyLjc1LTYuODkxSDE4Yy0xIDAtMS4yNzMtLjI0NC0xLjQ3NC0uMzU5LjAwMS4wMDEtLjcwMSAxLjM1OS0yLjUyNiAxLjM1OS0uMjM3IDAtMS42MjgtLjA0Ny0yLjQ4Ny0xLjI2Ni0xLjEyNSAxLjQyMi0yLjU3NSAxLjI2Ni0yLjU3NSAxLjI2Ni0uNzMzIDAtMS41NjYtLjMyOC0xLjkxLS44MzNDNy4wMTUgMjQuMTg1IDcgMjQuMDk1IDcgMjR2LTEuOTE3YzAgMS4wNTkuODU3IDEuODA4IDEuOTE2IDEuODA4eiIvPjxwYXRoIGZpbGw9IiNGRkRDNUQiIGQ9Ik0yNC41ODEgMThIMThjLS4yMDggMC0uNDExLjAyMS0uNjA3LjA2MWwtLjA3My0uMjc4LTMuMjczLTEyLjQ2NHMtLjQxNi0xLjk1NyAxLjU0LTIuMzcyYzEuOTU2LS40MTYgMi4zNzIgMS41NCAyLjM3MiAxLjU0bDMuMDk3IDExLjU2OWMuNDQ2LjAyNC44NzguMDYzIDEuMzA1LjEwN2wyLjA2MS0xMC41MTJzLjE4OC0xLjk5MSAyLjE4LTEuODA0YzEuOTkxLjE4OCAxLjgwMyAyLjE3OSAxLjgwMyAyLjE3OUwyNi4zNCAxNy4xODdsLS4yMjEgMS4xOTRjLS40NjQtLjIzNS0uOTgyLS4zODEtMS41MzgtLjM4MXpNOC45MTYgMTZoLjE2OGMxLjA1OSAwIDEuOTE2Ljg1OCAxLjkxNiAxLjkxN3Y0LjE2NkMxMSAyMy4xNDIgMTAuMTQzIDI0IDkuMDg0IDI0aC0uMTY4QzcuODU3IDI0IDcgMjMuMTQyIDcgMjIuMDgzdi00LjE2NkM3IDE2Ljg1OCA3Ljg1NyAxNiA4LjkxNiAxNnpNMTUgMjFjMCAuNzUzLjI4NyAxLjQzMy43NDUgMS45NTlDMTUuNDA0IDIzLjU3NiAxNC43NTUgMjQgMTQgMjRjLTEuMTA0IDAtMi0uODk2LTItMnYtNmMwLS40NDEuMTQ3LS44NDUuMzg5LTEuMTc2LjM2NC0uNDk3Ljk0Ny0uODI0IDEuNjExLS44MjQgMS4xMDQgMCAyIC44OTYgMiAydjIuNzc4Yy0uNjA5LjU0OS0xIDEuMzM2LTEgMi4yMjJ6Ii8+PHBhdGggZmlsbD0iI0ZGREM1RCIgZD0iTTkuMDYyIDI1YzEuMDI0IDAgMS45MjUtLjUyNiAyLjQ1LTEuMzIyLjEyMy4xODMuMjcxLjM0Ni40MzEuNDk3LjA0OS4wNDYuMTAyLjA4NS4xNTUuMTI4LjExOS4wOTkuMjQzLjE4OS4zNzcuMjY5LjA2Ni4wMzkuMTMyLjA3NC4yMDEuMTA4LjE0LjA2OS4yODUuMTI1LjQzNS4xNzIuMDY3LjAyMS4xMzEuMDQ2LjIuMDYyLjIyMy4wNTIuNDUyLjA4Ni42ODkuMDg2LjIzNiAwIC40NjEtLjAzNi42ODEtLjA4OS4wNzYtLjAxOC4xNDgtLjA0Mi4yMjMtLjA2Ni4xMzctLjA0NC4yNjktLjA5OS4zOTYtLjE2MS4wODItLjA0LjE2My0uMDc2LjI0LS4xMjQuMTY0LS4xLjMxOC0uMjEzLjQ2LS4zNDEuMjAyLS4xODQuMzg0LS4zODcuNTMtLjYxOGwtLjAwMy0uMDAzYy4yLjExNS40NzMuNDAyIDEuNDczLjQwMmgyLjUzN2MtMS44MDkgMS4zNjUtMy4wMzcgMy45OS0zLjAzNyA3IDAgLjI3Ni4yMjQuNS41LjVzLjUtLjIyNC41LS41YzAtMy44NTkgMi4xODctNyA0Ljg3NS03aC4xMjVjLjI3NiAwIC41LS4yMjQuNS0uNXMtLjIyNC0uNS0uNS0uNUgxOGMtMS4xMDQgMC0yLS44OTYtMi0ycy44OTYtMiAyLTJoOGMuMDMyIDAgLjA2Mi4wMDguMDk0LjAxLjA3My4wMDMuMTQ1LjAxLjIxNi4wMjIuMDYyLjAxLjEyMi4wMjEuMTgyLjAzNy4wNjQuMDE3LjEyNS4wMzUuMTg3LjA1OC4wNjIuMDIyLjEyMi4wNDcuMTgxLjA3NS4wNTcuMDI3LjExMS4wNTguMTY1LjA5LjA1Ni4wMzMuMTA5LjA2Ny4xNjEuMTA3LjA1Mi4wMzguMTAyLjA4LjE1LjEyNC4wNDYuMDQxLjA5LjA4NC4xMzIuMTMuMDI3LjAyOS4wNTEuMDYuMDc1LjA5MWwuMDUyLjA2M2MuMDM4LjA1MS4wNzMuMTAyLjEwNi4xNTYuMDM0LjA1Ni4wNjQuMTEyLjA5My4xNzEuMDMuMDYyLjA1Ni4xMjUuMDguMTkuMDEyLjAzMS4wMjkuMDYuMDM5LjA5M0wyOSAyNGMuMTAzLjMzNS40NzkgMS44NzEuNDExIDIuMTkxQzI5LjQxMSAzMSAyNC43MTUgMzYgMTkgMzZjLTYuNTM3IDAtMTEuODQ0LTUuMjMxLTExLjk4Ni0xMS43MzRsLjAxNC4wMWMuNTE1LjQ0NSAxLjE3Ni43MjQgMS45MS43MjRoLjEyNHoiLz48L3N2Zz4=', + id: '[胜利]' + }, + { + src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+PHBhdGggZmlsbD0iI0JFMTkzMSIgZD0iTTM1Ljg4NSAxMS44MzNjMC01LjQ1LTQuNDE4LTkuODY4LTkuODY3LTkuODY4LTMuMzA4IDAtNi4yMjcgMS42MzMtOC4wMTggNC4xMjktMS43OTEtMi40OTYtNC43MS00LjEyOS04LjAxNy00LjEyOS01LjQ1IDAtOS44NjggNC40MTctOS44NjggOS44NjggMCAuNzcyLjA5OCAxLjUyLjI2NiAyLjI0MUMxLjc1MSAyMi41ODcgMTEuMjE2IDMxLjU2OCAxOCAzNC4wMzRjNi43ODMtMi40NjYgMTYuMjQ5LTExLjQ0NyAxNy42MTctMTkuOTU5LjE3LS43MjEuMjY4LTEuNDY5LjI2OC0yLjI0MnoiLz48L3N2Zz4=', + id: '[爱心]' + } +] diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..03cb675 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,213 @@ +// 文字字节数限制 +export const validateTextLength = (value, maxLimitStr) => { + // 中文、中文标点、全角字符按1长度,英文、英文符号、数字按0.5长度计算 + const cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/ + let substringStr = '' + let length = 0 + const strArr = value.split('') + let obj = {} + strArr.forEach((item) => { + if (cnReg.test(item)) { + length++ + } else { + length += 0.5 + } + if (length > maxLimitStr) { + substringStr += '' + } else { + substringStr += item + } + if (length > maxLimitStr) { + length = maxLimitStr + } + }) + obj = { + value: substringStr, + numVal: Math.floor(length) + } + return obj +} + +// 将接口URL中的参数以对象的形式展示出来 +export function getUrlParams(url) { + const urlStr = url.split('?')[1] + const urlSearchParams = new URLSearchParams(urlStr) + const result = Object.fromEntries(urlSearchParams.entries()) + return result +} + +// 生成唯一标识uuid +export function uuid(len, radix) { + const chars = + '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') + const uuid = [] + let i + radix = radix || chars.length + + if (len) { + // Compact form + for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)] + } else { + // rfc4122, version 4 form + let r + + // rfc4122 requires these characters + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' + uuid[14] = '4' + + // Fill in random data. At i==19 set the high bits of clock sequence as + // per rfc4122, sec. 4.1.5 + for (i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | (Math.random() * 16) + uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r] + } + } + } + + return uuid.join('') +} + +const transitionJsonToString = (jsonObj, callback) => { + // 转换后的jsonObj受体对象 + let _jsonObj = null + // 判断传入的jsonObj对象是不是字符串,如果是字符串需要先转换为对象,再转换为字符串,这样做是为了保证转换后的字符串为双引号 + if (Object.prototype.toString.call(jsonObj) !== '[object String]') { + try { + _jsonObj = JSON.stringify(jsonObj) + } catch (error) { + // 转换失败错误信息 + callback(error) + } + } else { + try { + jsonObj = jsonObj.replace(/(\')/g, '"') + _jsonObj = JSON.stringify(JSON.parse(jsonObj)) + } catch (error) { + // 转换失败错误信息 + callback(error) + } + } + return _jsonObj +} +// 将后端返回的JSON转为JSON字符串并格式化展示 +export const formatJson = (jsonObj, callback) => { + // 正则表达式匹配规则变量 + const reg = null + // 转换后的字符串变量 + let formatted = '' + // 换行缩进位数 + let pad = 0 + // 一个tab对应空格位数 + const PADDING = '    ' + // json对象转换为字符串变量 + let jsonString = transitionJsonToString(jsonObj, callback) + if (!jsonString) { + return jsonString + } + // 存储需要特殊处理的字符串段 + const _index = [] + // 存储需要特殊处理的“再数组中的开始位置变量索引 + let _indexStart = null + // 存储需要特殊处理的“再数组中的结束位置变量索引 + let _indexEnd = null + // 将jsonString字符串内容通过\r\n符分割成数组 + let jsonArray = [] + // 正则匹配到{,}符号则在两边添加回车换行 + jsonString = jsonString.replace(/([\{\}])/g, '\r\n$1\r\n') + // 正则匹配到[,]符号则在两边添加回车换行 + jsonString = jsonString.replace(/([\[\]])/g, '\r\n$1\r\n') + // 正则匹配到,符号则在两边添加回车换行 + jsonString = jsonString.replace(/(\,)/g, '$1\r\n') + // 正则匹配到要超过一行的换行需要改为一行 + jsonString = jsonString.replace(/(\r\n\r\n)/g, '\r\n') + // 正则匹配到单独处于一行的,符号时需要去掉换行,将,置于同行 + jsonString = jsonString.replace(/\r\n\,/g, ',') + // 特殊处理双引号中的内容 + jsonArray = jsonString.split('\r\n') + jsonArray.forEach(function (node, index) { + // 获取当前字符串段中"的数量 + const num = node.match(/\"/g) ? node.match(/\"/g).length : 0 + // 判断num是否为奇数来确定是否需要特殊处理 + if (num % 2 && !_indexStart) { + _indexStart = index + } + if (num % 2 && _indexStart && _indexStart != index) { + _indexEnd = index + } + // 将需要特殊处理的字符串段的其实位置和结束位置信息存入,并对应重置开始时和结束变量 + if (_indexStart && _indexEnd) { + _index.push({ + start: _indexStart, + end: _indexEnd + }) + _indexStart = null + _indexEnd = null + } + }) + // 开始处理双引号中的内容,将多余的"去除 + _index.reverse().forEach(function (item, index) { + const newArray = jsonArray.slice(item.start, item.end + 1) + jsonArray.splice(item.start, item.end + 1 - item.start, newArray.join('')) + }) + // 将处理后的数组通过\r\n连接符重组为字符串 + jsonString = jsonArray.join('\r\n') + // 将匹配到:后为回车换行加大括号替换为冒号加大括号 + jsonString = jsonString.replace(/\:\r\n\{/g, ':{') + // 将匹配到:后为回车换行加中括号替换为冒号加中括号 + jsonString = jsonString.replace(/\:\r\n\[/g, ':[') + // 将上述转换后的字符串再次以\r\n分割成数组 + jsonArray = jsonString.split('\r\n') + // 将转换完成的字符串根据PADDING值来组合成最终的形态 + jsonArray.forEach(function (item, index) { + let i = 0 + // 表示缩进的位数,以tab作为计数单位 + let indent = 0 + // 表示缩进的位数,以空格作为计数单位 + let padding = '' + if (item.match(/\{$/) || item.match(/\[$/)) { + // 匹配到以{和[结尾的时候indent加1 + indent += 1 + } else if ( + item.match(/\}$/) || + item.match(/\]$/) || + item.match(/\},$/) || + item.match(/\],$/) + ) { + // 匹配到以}和]结尾的时候indent减1 + if (pad !== 0) { + pad -= 1 + } + } else { + indent = 0 + } + for (i = 0; i < pad; i++) { + padding += PADDING + } + formatted += `${padding + item}
` + pad += indent + }) + // 返回的数据需要去除两边的空格和换行 + return formatted + .trim() + .replace(new RegExp('^\\' + '
' + '+|\\' + '
' + '+$', 'g'), '') +} +// 时间格式换行以空格为界限分隔开 +export const timeSplit = (val)=> { + const arr = val.split(' ') + return arr +} +// 服务费用保留两位小数 +export function formatNumber(number) { + if (number >= 0.1) { + // 数字大于等于0时,保留两位小数 + return number.toFixed(2); + } else if (number < 0.1 && number > 0.01) { + const fixedNumber = parseFloat(number.toFixed(3)); + return fixedNumber.toFixed(3); + } else{ + // 只舍不入 + const fixedNumber = parseFloat(number.toFixed(4)); + return fixedNumber.toFixed(4); + } +} diff --git a/src/utils/request/Axios.ts b/src/utils/request/Axios.ts new file mode 100644 index 0000000..5c86cbb --- /dev/null +++ b/src/utils/request/Axios.ts @@ -0,0 +1,247 @@ +import axios, { + AxiosRequestConfig, + AxiosInstance, + AxiosResponse, + AxiosError +} from 'axios' +import { stringify } from 'qs' +import isFunction from 'lodash/isFunction' +import cloneDeep from 'lodash/cloneDeep' +import { toRaw } from 'vue' +import { useSettingStore } from '@/store' +import { CreateAxiosOptions } from './AxiosTransform' +import { AxiosCanceler } from './AxiosCancel' +import { AxiosRequestConfigRetry, RequestOptions, Result } from '@/types/axios' +import { getUrlParams, uuid } from '@/utils/index' + +// Axios模块 +export class VAxios { + // axios句柄 + private instance: AxiosInstance + + // axios选项 + private readonly options: CreateAxiosOptions + + constructor(options: CreateAxiosOptions) { + this.options = options + this.instance = axios.create(options) + this.setupInterceptors() + } + + // 创建axios句柄 + private createAxios(config: CreateAxiosOptions): void { + this.instance = axios.create(config) + } + + // 获取数据处理 + private getTransform() { + const { transform } = this.options + return transform + } + + // 获取句柄 + getAxios(): AxiosInstance { + return this.instance + } + + // 配置 axios + configAxios(config: CreateAxiosOptions) { + if (!this.instance) { + return + } + this.createAxios(config) + } + + // 设置通用头信息 + setHeader(headers: Record): void { + if (!this.instance) { + return + } + Object.assign(this.instance.defaults.headers, headers) + } + + // 设置拦截器 + private setupInterceptors() { + const transform = this.getTransform() + if (!transform) { + return + } + const { + requestInterceptors, + requestInterceptorsCatch, + responseInterceptors, + responseInterceptorsCatch + } = transform + const axiosCanceler = new AxiosCanceler() + + // 请求配置处理 + this.instance.interceptors.request.use((config: any) => { + const { headers: any } = config + // const ignoreRepeat = ignoreRepeatRequest ?? this.options.requestOptions?.ignoreRepeatRequest; + const ignoreRepeat = '' + if (!ignoreRepeat) axiosCanceler.addPending(config) + + if (requestInterceptors && isFunction(requestInterceptors)) { + config = requestInterceptors(config, this.options) + } + return config + }, undefined) + + // 请求错误处理 + if (requestInterceptorsCatch && isFunction(requestInterceptorsCatch)) { + this.instance.interceptors.request.use( + undefined, + requestInterceptorsCatch + ) + } + + // 响应结果处理 + this.instance.interceptors.response.use((res: AxiosResponse) => { + if (res) axiosCanceler.removePending(res.config) + if (responseInterceptors && isFunction(responseInterceptors)) { + res = responseInterceptors(res) + } + return res + }, undefined) + + // 响应错误处理 + if (responseInterceptorsCatch && isFunction(responseInterceptorsCatch)) { + this.instance.interceptors.response.use( + undefined, + responseInterceptorsCatch + ) + } + } + + // 支持Form Data + supportFormData(config: AxiosRequestConfig) { + const headers = config.headers || this.options.headers + const contentType = headers?.['Content-Type'] || headers?.['content-type'] + + if ( + contentType !== 'application/x-www-form-urlencoded;charset=UTF-8' || + !Reflect.has(config, 'data') || + config.method?.toUpperCase() === 'GET' + ) { + return config + } + + return { + ...config, + data: stringify(config.data, { arrayFormat: 'brackets' }) + } + } + + get( + config: AxiosRequestConfig, + options?: RequestOptions + ): Promise { + return this.request({ ...config, method: 'GET' }, options) + } + + post( + config: AxiosRequestConfig, + options?: RequestOptions + ): Promise { + return this.request({ ...config, method: 'POST' }, options) + } + + put( + config: AxiosRequestConfig, + options?: RequestOptions + ): Promise { + return this.request({ ...config, method: 'PUT' }, options) + } + + delete( + config: AxiosRequestConfig, + options?: RequestOptions + ): Promise { + return this.request({ ...config, method: 'DELETE' }, options) + } + + patch( + config: AxiosRequestConfig, + options?: RequestOptions + ): Promise { + return this.request({ ...config, method: 'PATCH' }, options) + } + + // 请求 + async request( + config: AxiosRequestConfigRetry, + options?: RequestOptions + ): Promise { + // 放在最上面初始化会报错Cannot access 'useSettingStore' before initialization + const settingStore = useSettingStore() + const url = this.options.requestOptions.urlPrefix + ? window.location.origin + + this.options.requestOptions.urlPrefix + + config.url + : window.location.origin + config.url + // console.log(this.options, config, config.url.indexOf('?'), '----') + // 组装所需接口数据 + settingStore.addRequestList({ + uuid: uuid(8, 16), + url, + type: config.method, + headers: this.options.headers, + body: config.data ? { ...toRaw(config.data) } : {}, + params: getUrlParams(url), + label: + config.url.indexOf('?') !== -1 ? config.url.split('?')[0] : config.url + }) + let conf: CreateAxiosOptions = cloneDeep(config) + const transform = this.getTransform() + + const { requestOptions } = this.options + + const opt: RequestOptions = { ...requestOptions, ...options } + + const { beforeRequestHook, requestCatchHook, transformRequestHook } = + transform || {} + if (beforeRequestHook && isFunction(beforeRequestHook)) { + conf = beforeRequestHook(conf, opt) + } + conf.requestOptions = opt + + conf = this.supportFormData(conf) + + return new Promise((resolve, reject) => { + this.instance + .request>(!config.retryCount ? conf : config) + .then((res: AxiosResponse) => { + if (transformRequestHook && isFunction(transformRequestHook)) { + // 将对应接口的返回信息拼装到接口队列中 + settingStore.requestList.map((item, index) => { + if ( + item.type.toLowerCase() === res.config.method && + res.request.responseURL.includes(item.url) + ) { + settingStore.addRequestListRes(index, res.data) + } + }) + try { + const ret = transformRequestHook(res, opt) + resolve(ret) + } catch (err) { + reject(err || new Error('请求错误!')) + } + return + } + + resolve(res as unknown as Promise) + }) + .catch((e: Error | AxiosError) => { + if (requestCatchHook && isFunction(requestCatchHook)) { + reject(requestCatchHook(e, opt)) + return + } + if (axios.isAxiosError(e)) { + // 在这里重写Axios的错误信息 + } + reject(e) + }) + }) + } +} diff --git a/src/utils/request/AxiosCancel.ts b/src/utils/request/AxiosCancel.ts new file mode 100644 index 0000000..dd1362e --- /dev/null +++ b/src/utils/request/AxiosCancel.ts @@ -0,0 +1,50 @@ +import type { AxiosRequestConfig, Canceler } from "axios"; +import axios from "axios"; +import isFunction from "lodash/isFunction"; + +// 存储请求与取消令牌的键值对列表 +let pendingMap = new Map(); + +export const getPendingUrl = (config: AxiosRequestConfig) => + [config.method, config.url].join("&"); + +export class AxiosCanceler { + // 添加请求到列表 + addPending(config: AxiosRequestConfig) { + this.removePending(config); + const url = getPendingUrl(config); + config.cancelToken = + config.cancelToken || + new axios.CancelToken((cancel) => { + if (!pendingMap.has(url)) { + // 如果当前没有相同请求就添加 + pendingMap.set(url, cancel); + } + }); + } + + // 清空所有请求 + removeAllPending() { + pendingMap.forEach((cancel) => { + if (cancel && isFunction(cancel)) cancel(); + }); + pendingMap.clear(); + } + + // 移除某个请求 + removePending(config: AxiosRequestConfig) { + const url = getPendingUrl(config); + + if (pendingMap.has(url)) { + // If there is a current request identifier in pending, + // the current request needs to be cancelled and removed + const cancel = pendingMap.get(url); + if (cancel) cancel(url); + pendingMap.delete(url); + } + } + + reset() { + pendingMap = new Map(); + } +} diff --git a/src/utils/request/AxiosTransform.ts b/src/utils/request/AxiosTransform.ts new file mode 100644 index 0000000..1725cf9 --- /dev/null +++ b/src/utils/request/AxiosTransform.ts @@ -0,0 +1,49 @@ +import type { AxiosRequestConfig, AxiosResponse } from 'axios' +import { AxiosError } from 'axios' +import type { RequestOptions, Result } from '@/types/axios' + +// 创建Axios选项 +export interface CreateAxiosOptions extends AxiosRequestConfig { + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#authentication_schemes + authenticationScheme?: string + // 数据处理 + transform?: AxiosTransform + // 请求选项 + requestOptions?: RequestOptions +} + +// Axios 数据处理 +export abstract class AxiosTransform { + // 请求前Hook + beforeRequestHook?: ( + config: AxiosRequestConfig, + options: RequestOptions + ) => AxiosRequestConfig + + // 转换前Hook + transformRequestHook?: ( + res: AxiosResponse, + options: RequestOptions + ) => any + + // 请求失败处理 + requestCatchHook?: ( + e: Error | AxiosError, + options: RequestOptions + ) => Promise + + // 请求前的拦截器 + requestInterceptors?: ( + config: AxiosRequestConfig, + options: CreateAxiosOptions + ) => AxiosRequestConfig + + // 请求后的拦截器 + responseInterceptors?: (res: AxiosResponse) => AxiosResponse + + // 请求前的拦截器错误处理 + requestInterceptorsCatch?: (error: AxiosError) => void + + // 请求后的拦截器错误处理 + responseInterceptorsCatch?: (error: AxiosError) => void +} diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts new file mode 100644 index 0000000..ce6a717 --- /dev/null +++ b/src/utils/request/index.ts @@ -0,0 +1,227 @@ +// axios配置 可自行根据项目进行更改,只需更改该文件即可,其他文件可以不动 +import isString from 'lodash/isString' +import merge from 'lodash/merge' +import type { AxiosTransform, CreateAxiosOptions } from './AxiosTransform' +import { VAxios } from './Axios' +import proxy from '@/config/proxy' +import { joinTimestamp, formatRequestDate, setObjToUrlParams } from './utils' +import { TOKEN_NAME } from '@/config/global' +import { urlPrefix } from '@/config/configuration' +const env = import.meta.env.MODE || 'development' + +// 如果是mock模式 或 没启用直连代理 就不配置host 会走本地Mock拦截 或 Vite 代理 +const host = env === 'mock' || !proxy.isRequestProxy ? '' : proxy[env].host + +// 数据处理,方便区分多种处理方式 +const transform: AxiosTransform = { + // 处理请求数据。如果数据不是预期格式,可直接抛出错误 + transformRequestHook: (res, options) => { + const { isTransformResponse, isReturnNativeResponse } = options + + // 如果204无内容直接返回 + const method = res.config.method?.toLowerCase() + if (res.status === 204 || method === 'put' || method === 'patch') { + return res + } + + // 是否返回原生响应头 比如:需要获取响应头时使用该属性 + if (isReturnNativeResponse) { + return res + } + // 不进行任何处理,直接返回 + // 用于页面代码可能需要直接获取code,data,message这些信息时开启 + if (!isTransformResponse) { + return res.data + } + + // 错误的时候返回 + const { data } = res + if (!data) { + throw new Error('请求接口错误') + } + + // 这里 code为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式 + const { code } = data + + // 这里逻辑可以根据项目进行修改 + const hasSuccess = data && code === 200 + if (hasSuccess) { + return data + } + // 添加数据流的处理 + if (res && !code) { + return res + } + if (code === 604) { + return res + } + if (code >= 400 && code < 500) { + return res + } + // throw new Error(`请求接口错误, 错误码: ${code}`) + }, + + // 请求前处理配置 + beforeRequestHook: (config, options) => { + const { + apiUrl, + isJoinPrefix, + urlPrefix, + joinParamsToUrl, + formatDate, + joinTime = true + } = options + + // 添加接口前缀 + if (isJoinPrefix && urlPrefix && isString(urlPrefix)) { + config.url = `${urlPrefix}${config.url}` + } + + // 将baseUrl拼接 + if (apiUrl && isString(apiUrl)) { + config.url = `${apiUrl}${config.url}` + } + const params = config.params || {} + const data = config.data || false + if (formatDate && data && !isString(data)) { + formatRequestDate(data) + } + if (config.method?.toUpperCase() === 'GET') { + if (!isString(params)) { + // 给 get 请求加上时间戳参数,避免从缓存中拿数据。 + config.params = Object.assign( + params || {}, + joinTimestamp(joinTime, false) + ) + } else { + // 兼容restful风格 + config.url = `${config.url + params}${joinTimestamp(joinTime, true)}` + config.params = undefined + } + } else if (!isString(params)) { + if (formatDate) { + formatRequestDate(params) + } + if ( + Reflect.has(config, 'data') && + config.data && + (Object.keys(config.data).length > 0 || data instanceof FormData) + ) { + config.data = data + config.params = params + } else { + // 非GET请求如果没有提供data,则将params视为data + config.data = params + config.params = undefined + } + + if (joinParamsToUrl) { + config.url = setObjToUrlParams(config.url as string, { + ...config.params, + ...config.data + }) + } + } else { + // 兼容restful风格 + config.url += params + config.params = undefined + } + return config + }, + + // 请求拦截器处理 + requestInterceptors: (config, options) => { + // 请求之前处理config + const token = localStorage.getItem(TOKEN_NAME) + + if (token && (config as Recordable)?.requestOptions?.withToken !== false) { + // jwt token + ;(config as Recordable).headers.Authorization = + options.authenticationScheme + ? `${options.authenticationScheme} ${token}` + : token + } + return config + }, + + // 响应拦截器处理 + responseInterceptors: (res) => { + return res + }, + + // 响应错误处理 + responseInterceptorsCatch: (error: any) => { + const { config } = error + if (!config || !config.requestOptions.retry) return Promise.reject(error) + + config.retryCount = config.retryCount || 0 + + if (config.retryCount >= config.requestOptions.retry.count) + return Promise.reject(error) + + config.retryCount += 1 + + const backoff = new Promise((resolve) => { + setTimeout(() => { + resolve(config) + }, config.requestOptions.retry.delay || 1) + }) + config.headers = { + ...config.headers, + 'Content-Type': 'application/json;charset=UTF-8' + } + return backoff.then((config) => request.request(config)) + } +} + +function createAxios(opt?: Partial) { + return new VAxios( + merge( + { + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#authentication_schemes + // 例如: authenticationScheme: 'Bearer' + authenticationScheme: '', + // 超时 + timeout: 10 * 1000, + // 携带Cookie + withCredentials: true, + // 头信息 + headers: { 'Content-Type': 'application/json;charset=UTF-8' }, + // 数据处理方式 + transform, // transform,是对响应数据的处理 + // 配置项,下面的选项都可以在独立的接口请求中覆盖 + requestOptions: { + // 接口地址 + apiUrl: host, + // 是否自动添加接口前缀 + isJoinPrefix: true, + // 接口前缀 + // 例如: https://www.baidu.com/api + urlPrefix: urlPrefix, + // urlPrefix: '', + // 是否返回原生响应头 比如:需要获取响应头时使用该属性 + isReturnNativeResponse: false, + // 需要对返回数据进行处理 + isTransformResponse: true, + // post请求的时候添加参数到url + joinParamsToUrl: false, + // 格式化提交参数时间 + formatDate: true, + // 是否加入时间戳 + joinTime: true, + // 忽略重复请求 + ignoreRepeatRequest: true, + // 是否携带token + withToken: true, + // 重试 + retry: { + count: 3, + delay: 1000 + } + } + }, + opt || {} + ) + ) +} +export const request = createAxios() diff --git a/src/utils/request/utils.ts b/src/utils/request/utils.ts new file mode 100644 index 0000000..5c7ce14 --- /dev/null +++ b/src/utils/request/utils.ts @@ -0,0 +1,58 @@ +import isString from 'lodash/isString' +import isObject from 'lodash/isObject' + +const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss' + +export function joinTimestamp( + join: boolean, + restful: T +): T extends true ? string : object + +export function joinTimestamp(join: boolean, restful = false): string | object { + if (!join) { + return restful ? '' : {} + } + const now = new Date().getTime() + if (restful) { + return `?_t=${now}` + } + return { _t: now } +} + +// 格式化提交参数时间 +export function formatRequestDate(params: Recordable) { + if (Object.prototype.toString.call(params) !== '[object Object]') { + return + } + + for (const key in params) { + if (params[key] && params[key]._isAMomentObject) { + params[key] = params[key].format(DATE_TIME_FORMAT) + } + if (isString(key)) { + const value = params[key] + if (value) { + try { + params[key] = isString(value) ? value.trim() : value + } catch (error: any) { + throw new Error(error) + } + } + } + if (isObject(params[key])) { + formatRequestDate(params[key]) + } + } +} + +// 将对象转为Url参数 +export function setObjToUrlParams(baseUrl: string, obj: object): string { + let parameters = '' + for (const key in obj) { + parameters += `${key}=${encodeURIComponent(obj[key])}&` + } + parameters = parameters.replace(/&$/, '') + return /\?$/.test(baseUrl) + ? baseUrl + parameters + : baseUrl.replace(/\/?$/, '?') + parameters +} diff --git a/src/utils/validate.ts b/src/utils/validate.ts new file mode 100644 index 0000000..6966cd2 --- /dev/null +++ b/src/utils/validate.ts @@ -0,0 +1,147 @@ +// 文字字节数限制 +export const validateTextLength = (value, maxLimitStr) => { + // 中文、中文标点、全角字符按1长度,英文、英文符号、数字按0.5长度计算 + const cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/ + let substringStr = '' + let length = 0 + const strArr = value.split('') + let obj = {} + strArr.map((str) => { + if (cnReg.test(str)) { + // 中文 + length++ + } else { + // 英文 + length += 0.5 + } + // 大于最大限制的时候 + if (length > maxLimitStr) { + substringStr = substringStr + } else { + substringStr += str + } + }) + if (length > maxLimitStr) { + length = maxLimitStr + } + return (obj = { + numVal: Math.floor(length), + val: substringStr + }) +} +// 调用次数限制 +export const validateNum = (val) => { + const reg = /^[0-9]*$/ + if (reg.test(val) && val <= 999 && val >= 0) { + return true + } + return false +} +// 限制字符5-50 +export const validateText = (val) => { + if (val && val.length >= 5 && val.length <= 50) { + return true + } + return false +} +// 限制字符2-5 +export const validateText5 = (val) => { + if (val && val.length >= 2 && val.length <= 5) { + return true + } + return false +} +// 限制字符2-10 +export const validateText10 = (val) => { + if (val && val.length >= 2 && val.length <= 10) { + return true + } + return false +} +// 验证手机号 +export const validatePhone = (val) => { + const reg = + /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ + if (reg.test(val)) { + return true + } + return false +} +// 验证码 +export const validateCode = (val) => { + const reg = /^\d{6}$/ + if (reg.test(val)) { + return true + } + return false +} +// 限制字符1-500 +export const validateText500 = (val) => { + if (val && val.length >= 1 && val.length <= 500) { + return true + } + return false +} +// 限制字符5-140 +export const validateText140 = (val) => { + if (val && val.length >= 5 && val.length <= 140) { + return true + } + return false +} +// 必须是数字,且最多两位小数,且大于0小于999 +export const validateNumber = (val) => { + const reg = /^([1-9][0-9]{0,2}|0)(\.[0-9]{1,2})?$/ + if (reg.test(val)) { + return true + } + return false +} +// 必须是正整数,且大于0小于100 +export const validateNumber100 = (val) => { + const reg = /^([1-9][0-9]{0,1}|0)$/ + if (reg.test(val) && val <= 100 && val >= 0) { + return true + } + return false +} +// 必须是整数,且大于0小于1440 +export const validateNumber1440 = (val) => { + const reg = /^([1-9][0-9]{0,3}|0)$/ + if (reg.test(val) && val <= 1440 && val > 0) { + return true + } + return false +} +// 必须是整数,且大于0小于500 +export const validateNumber500 = (val) => { + const reg = /^([1-9][0-9]{0,2}|0)$/ + if (reg.test(val) && val <= 500 && val > 0) { + return true + } + return false +} +// 必须是整数,且大于0小于等于100 +export const validateNumber100s = (val) => { + const reg = /^([1-9][0-9]{0,2}|0)$/ + if (reg.test(val) && val <= 100 && val > 0) { + return true + } + return false +} +// 必须是整数,且大于0小于等于1000 +export const validateNumber1000 = (val) => { + const reg = /^([1-9][0-9]{0,3}|0)$/ + if (reg.test(val) && val <= 1000 && val > 0) { + return true + } + return false +} +// 0-20000 +export const validateNumber20000 = (val) => { + const reg = /^([1-9][0-9]{0,4}|0)$/ + if (reg.test(val) && val <= 20000 && val >= 0) { + return true + } + return false +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..aa79884 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,9 @@ +/// + +// https://cn.vitejs.dev/guide/env-and-mode.html#env-files +declare module '*.vue' { + import type { DefineComponent } from 'vue' + + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/stylelint.config.js b/stylelint.config.js new file mode 100644 index 0000000..9ac73aa --- /dev/null +++ b/stylelint.config.js @@ -0,0 +1,5 @@ +module.exports = { + defaultSeverity: "error", + extends: ["stylelint-config-prettier"], + plugins: ["stylelint-less"], +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..56263f0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"], + "noEmit": true, + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["**/*.ts", "src/**/*.d.ts", + "src/types/**/*.d.ts", "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], + "compileOnSave": false +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..e993792 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..c82a88c --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,74 @@ +import { ConfigEnv, UserConfig, loadEnv } from 'vite' +import { viteMockServe } from 'vite-plugin-mock' +import createVuePlugin from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import svgLoader from 'vite-svg-loader' + +import path from 'path' +import { withScopeId } from 'vue' + +const CWD = process.cwd() + +// https://vitejs.dev/config/ +export default ({ mode }: ConfigEnv): UserConfig => { + const { VITE_BASE_URL } = loadEnv(mode, CWD) + return { + base: VITE_BASE_URL, + define: {}, + resolve: { + alias: { + '@': path.resolve(__dirname, './src') + } + }, + + css: { + preprocessorOptions: { + less: { + modifyVars: { + hack: `true; @import (reference) "${path.resolve( + 'src/style/variables.less' + )}";` + }, + math: 'strict', + javascriptEnabled: true + } + } + }, + + plugins: [ + createVuePlugin(), + vueJsx(), + viteMockServe({ + mockPath: 'mock', + localEnabled: false, + prodEnabled: true, + supportTs: true, + logger: true, + injectCode: ` + import { setupProdMockServer } from '../mockProdServer'; + setupProdMockServer(); + ` + }), + svgLoader() + ], + + server: { + port: 3000, + host: '0.0.0.0', + open: false, + hmr: true, + proxy: { + '/api': { + target: 'http://localhost:11500', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ''), + // bypass(req,res,options){ + // const proxyUrl = new URL (req.url , (options.target)as string)?.href + // req.headers['refererss'] = proxyUrl + // res.setHeader('refererss', proxyUrl) + // } + } + } + } + } +}