From 505e112fd1518ac966b540a48c6ca1809e1b6703 Mon Sep 17 00:00:00 2001 From: zhaoxiaoqiang <287285524@qq.com> Date: Tue, 02 Aug 2022 17:29:55 +0800 Subject: [PATCH] 爱享学客户端 --- static/img/rlsbsb.png | 0 src/utils/jsBridge.js | 265 static/zc.pdf | 0 vue.config.js | 15 src/views/order/settlementEarly.vue | 352 static/img/shz.png | 0 src/assets/imgs/myHeader.png | 0 src/utils/formCheckAndComb.js | 194 static/img/homeBack.png | 0 static/rzfwxy.pdf | 0 src/utils/dateformat.js | 282 src/assets/imgs/nodata.png | 0 static/img/bgwd.png | 0 static/yhyszc.pdf | 0 src/assets/zfblx/bg.png | 0 static/LICENSE | 177 src/views/order-handling/image-upload.vue | 212 src/style/normalize.less | 219 src/store/index.js | 147 src/views/order/order-detail.vue | 329 static/zy.pdf | 0 static/bankPdf/PSBC.pdf | 0 src/assets/zfblx/code1.png | 0 static/img/logout.png | 0 src/views/user/login.vue | 359 src/assets/img/noinfo.png | 0 debug.log | 12 static/img/zlcc.png | 0 yarn.lock | 8827 ++++++++++++++++++++ src/assets/imgs/pic.png | 0 static/img/noinfo.png | 0 src/utils/index.js | 361 static/img/logo.png | 0 src/assets/imgs/userImg.png | 0 src/views/order/repayment-plan.vue | 483 + static/bankPdf/ADC.pdf | 0 src/views/order/active-repayment.vue | 415 static/bankPdf/CITIC.pdf | 0 src/assets/zfblx/2.png | 0 static/img/rlsbz.png | 0 static/ys.pdf | 0 src/views/bankCard/index.vue | 264 src/components/cell/h-cell.vue | 194 src/assets/zfblx/code.png | 0 src/utils/pageBackByAndroid.js | 43 src/utils/wechat.js | 41 src/api/index.js | 150 src/assets/imgs/logo.png | 0 src/assets/zfblx/4.png | 0 static/img/order.png | 0 src/components/validator/validator.js | 307 src/api/config.js | 123 src/views/order-handling/upload-userInfo.vue | 654 + src/views/order/my-order.vue | 115 public/index.html | 95 src/assets/imgs/openpic.png | 0 src/utils/createUserProtocol.js | 33 webpack.dev.js | 58 src/style/mixins.less | 139 src/assets/zfblx/bg3.png | 0 static/bankPdf/CMB.pdf | 0 src/assets/zfblx/course.png | 0 static/bankPdf/SPDB.pdf | 0 babel.config.js | 9 src/views/order/settle.vue | 301 src/utils/IDValidator.js | 3844 ++++++++ static/bankPdf/PAB.pdf | 0 src/assets/imgs/credit.png | 0 static/bankPdf/BOC.pdf | 0 src/views/order-handling/face-recognition.vue | 350 src/components/h-list.vue | 76 src/router/routes.js | 140 static/bankPdf/ICBC.pdf | 0 src/views/user/agreement2.vue | 113 src/components/v-navbar.vue | 98 src/store/mutations-types.js | 28 static/img/pic.png | 0 src/components/input/h-ipt.vue | 155 static/bankPdf/CCB.pdf | 0 src/utils/formValidator.js | 101 src/components/upload/uploadImg.vue | 374 static/img/bg.png | 0 static/jquery/jquery.js | 719 + static/img/success.png | 0 static/dk.pdf | 0 src/components/upload/uploadIdCard.vue | 407 src/assets/zfblx/5.png | 0 static/img/shcg.png | 0 src/style/myVideo.less | 8 src/views/order-handling/approval-results.vue | 326 src/assets/zfblx/zfb.png | 0 src/router/index.js | 46 README.md | 4 src/bus.js | 9 webpack.prod.js | 38 src/assets/imgs/business.png | 0 src/utils/deviceInfo.js | 88 src/views/order/contract.vue | 145 static/img/bankCard.png | 0 static/img/touxiang.png | 0 src/views/home.vue | 52 static/bankPdf/SHB.pdf | 0 postcss.config.js | 11 src/style/mixin.less | 98 src/views/order-handling/upload-IDcard.vue | 351 src/views/order/pay-result.vue | 157 src/views/order-handling/bank-list.vue | 448 + static/img/shsb.png | 0 src/utils/filters.js | 31 .gitignore | 13 static/bankPdf/GDB.pdf | 0 static/img/idcardz.png | 0 src/assets/imgs/yqpic.png | 0 static/bankPdf/ABC.pdf | 0 src/views/homeIndex/home-index.vue | 273 src/assets/zfblx/3.png | 0 src/style/themes.css | 13 src/views/order-handling/order-handling.vue | 121 static/bankPdf/CEB.pdf | 0 src/style/myVant.less | 12 src/store/mutations.js | 55 src/assets/zfblx/1.png | 0 src/components/pdf/cpdf.vue | 125 src/assets/zfblx/bg4.png | 0 src/utils/validator.js | 222 src/views/user/front-login.vue | 73 src/utils/config.js | 29 src/index.js | 61 src/style/themes.less | 51 src/views/personal/personal-center.vue | 186 src/views/order-handling/contract-signing.vue | 659 + static/xx.pdf | 0 webpack.common.js | 135 src/assets/zfblx/bg2.png | 0 src/style/common.less | 191 src/views/user/agreement.vue | 115 static/img/faile.png | 0 src/assets/imgs/img_details.png | 0 static/bl.pdf | 0 static/img/idcardf.png | 0 package.json | 69 static/bankPdf/CMBC.pdf | 0 static/img/ing.png | 0 src/App.vue | 60 144 files changed, 25,853 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3d5eef --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/README.md b/README.md index 2c189db..884708d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## axx_ins_client +## edu_ins_client -爱享学客户端 +教育分期平台用户端 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..4ce7753 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,9 @@ +module.exports = { + plugins: [ + ['import', { + libraryName: 'vant', + libraryDirectory: 'es', + style: true + }, 'vant'] + ] +}; \ No newline at end of file diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..4a19538 --- /dev/null +++ b/debug.log @@ -0,0 +1,12 @@ +[1008/143351.981:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1009/090254.570:WARNING:minidump_to_upload_parameters.cc(66)] duplicate annotation name metrics_client_id, discarding value 6cdb146c16ce4bfab185288f8bae5c8b +[1009/090315.609:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1011/110357.879:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1011/135443.332:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1016/133259.641:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1016/144714.941:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1016/161814.067:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1017/091122.502:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1017/103028.328:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[1025/160715.460:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) +[0428/174357.264:ERROR:http_transport_win.cc(276)] WinHttpSendRequest: �����ɹ���ɡ� (0x0) diff --git a/package.json b/package.json new file mode 100644 index 0000000..34af749 --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "scene_staging", + "version": "1.0.0", + "description": "智享收银台项目重构", + "main": "webpack.common.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "webpack --env.production --config webpack.prod.js", + "dev": "webpack-dev-server --open --config webpack.dev.js" + }, + "keywords": [], + "author": "小明丶", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.3.4", + "@babel/preset-env": "^7.3.4", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3", + "@vue/babel-preset-jsx": "^1.0.0-beta.3", + "autoprefixer": "^9.4.10", + "babel-loader": "^8.0.0-beta.0", + "babel-plugin-dynamic-import-webpack": "^1.1.0", + "babel-plugin-import": "^1.12.0", + "clean-webpack-plugin": "^1.0.1", + "copy-webpack-plugin": "^5.0.2", + "css-loader": "^2.1.0", + "cssnano": "^4.1.10", + "file-loader": "^3.0.1", + "html-webpack-plugin": "^3.2.0", + "less": "^3.9.0", + "less-loader": "^4.1.0", + "mini-css-extract-plugin": "^0.5.0", + "optimize-css-assets-webpack-plugin": "^5.0.1", + "postcss-loader": "^3.0.0", + "postcss-pxtorem": "^4.0.1", + "style-loader": "^0.23.1", + "style-resources-loader": "^1.2.1", + "uglifyjs-webpack-plugin": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.7.0", + "vue-template-compiler": "^2.6.10", + "vux-loader": "^1.2.9", + "webpack": "^4.29.6", + "webpack-cli": "^3.2.3", + "webpack-dev-server": "^3.2.1", + "webpack-merge": "^4.2.1" + }, + "dependencies": { + "axios": "^0.18.0", + "blueimp-md5": "^2.11.1", + "element-ui": "^2.13.0", + "exif-js": "^2.3.0", + "html2canvas": "^1.0.0-rc.3", + "qrcode": "^1.4.1", + "vant": "^2.8.7", + "vue": "^2.6.10", + "vue-i18n": "^8.14.0", + "vue-pdf": "^4.1.0", + "vue-router": "^3.0.2", + "vue-video-player": "^5.0.2", + "vuex": "^3.1.0", + "vuex-persistedstate": "^2.5.4", + "vux": "^2.9.2" + }, + "browserslist": [ + "last 1 version", + "> 1%", + "IE 10" + ] +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..4177fb7 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + plugins: { + 'autoprefixer': {}, + //默认不开启rem配置 + 'postcss-pxtorem': { + rootValue: 50, + mediaQuery:true, //允许在媒体查询中转换px + propList: ['*'],//px 大写 Px 就不会被转换 + } + } + } \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..6193005 --- /dev/null +++ b/public/index.html @@ -0,0 +1,95 @@ +<!-- + * @Author: 小明丶 + * @Date: 2019-08-13 18:10:18 + * @LastEditors: zxq + * @LastEditTime: 2022-07-20 10:46:58 + * @Description: + --> +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0"> + <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1"> + <title>小纷助学</title> + <link rel="stylesheet" href="//at.alicdn.com/t/font_1806850_8ykk82vs4kg.css"> + <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> + <!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script> --> + <!-- <script src="https://ins-js.oss-cn-beijing.aliyuncs.com/js/jquery.js"></script> --> + <!-- 移动端调试用需要时解开 --> + <!-- <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script> + <script> + var vConsole = new VConsole(); + </script> --> + <!-- // 加载阿里CDN的文件 --> + <!-- <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script> --> + <script> + (function (doc, win) { + var docEl = doc.documentElement, + isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), + dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1, + dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放 + dpr = 1, + scale = 1 / dpr, + resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; + docEl.dataset.dpr = dpr; + var metaEl = doc.createElement('meta'); + metaEl.name = 'viewport'; + metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale; + docEl.firstElementChild.appendChild(metaEl); + var recalc = function () { + var width = docEl.clientWidth; + if (width / dpr > 750) { + width = 750 * dpr; + } + // 乘以50,px : rem = 50 : 1 + docEl.style.fontSize = 100 * (width / 750) + 'px'; + }; + recalc(); + if (!doc.addEventListener) return; + win.addEventListener(resizeEvt, recalc, false); + })(document, window); + (function (m, ei, q, i, a, j, s) { + m[i] = m[i] || function () { + (m[i].a = m[i].a || []).push(arguments) + }; + j = ei.createElement(q), + s = ei.getElementsByTagName(q)[0]; + j.async = true; + j.charset = 'UTF-8'; + j.src = 'https://static.meiqia.com/dist/meiqia.js?_=t'; + s.parentNode.insertBefore(j, s); + })(window, document, 'script', '_MEIQIA'); + _MEIQIA('entId', 119312); + _MEIQIA('withoutBtn'); + </script> + <style type="text/css"> + .icon { + width: 1em; height: 1em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; + } + </style> +</head> + +<body> + <body> + <div id="app"></div> + <!-- cdn 生产环境打开注释!!! --> + <!-- icon 图标 --> + <script src="https://at.alicdn.com/t/font_1806850_8ykk82vs4kg.js"></script> + <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.echarts.common.min.js></script> + <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.axios.min.js></script> + <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.js></script> + <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue-router.js></script> + <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.min.js></script> + <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> + <script> + Vue.prototype.$t = ()=>{}; + </script> + </body> +</body> + +</html> diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..006506b --- /dev/null +++ b/src/App.vue @@ -0,0 +1,60 @@ +<!-- + * @Author: 小明丶 + * @Date: 2019-08-19 15:23:17 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-07-06 10:49:57 + * @Description: + --> +<template> + <div class="h-100"> + <router-view></router-view> + <!-- <van-loading type="spinner" color="white" class="app-loading" v-show="AppLoading"></van-loading> --> + <van-loading color="white" class="app-loading" v-show="AppLoading"/> + </div> +</template> + +<script> +import Vue from 'vue'; +import { Loading } from 'vant'; + +Vue.use(Loading); + import { + mapState, + mapActions, + } from 'vuex'; + + export default { + data() { + return { + + } + }, + computed:{ + ...mapState(['AppLoading']) + }, + methods: { + ...mapActions(['getArea']) + }, + created() { + this.getArea(); + }, + } +</script> + +<style lang="less" scoped> + .h-100 { + height: 100%; + } + + + .app-loading { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: @zIndex-999; + background-color: rgba(0, 0, 0, 0.5); + padding: 30px; + border-radius: 4px; + } +</style> diff --git a/src/api/config.js b/src/api/config.js new file mode 100644 index 0000000..a8f84f8 --- /dev/null +++ b/src/api/config.js @@ -0,0 +1,123 @@ +/* + * @Descripttion: 配置axios + * @Author: TM丶 + * @LastEditors: zxq + * @Date: 2019-03-30 09:07:29 + * @LastEditTime: 2022-08-02 17:23:10 + */ +import axios from 'axios'; +import md5 from 'blueimp-md5'; +import Store from "@/store/index"; +import router from '@/router/index'; +import { Notify} from 'vant'; +import {SET_APP_LOADING,SET_USER_INFO,SET_SESSION_ID} from '@/store/mutations-types'; + + +function createSign(params){ + if(params.jttechSign){ + delete params.jttechSign; + } + let keys = Object.keys(params), + paramsSign = ''; + keys.forEach(key=>{ + let val = params[key]; + if(typeof val ==='string'){ + if(val.trim().length>0){ + paramsSign +=val; + }else{ + delete params[key] + } + }else if(typeof val === 'number' && !isNaN(val)){ + paramsSign +=val; + }else if(Array.isArray(val) && !val.length){ + delete params[key] + }else if(val===null){ + delete params[key] + } + + }) + let sessionId = Store.state.sessionId || ''; + params.jttechSign = md5(paramsSign + sessionId); + return params; +} + + +function deleteCatchInfo(){ + localStorage.removeItem('user_account') + localStorage.removeItem('user_pwd') + Store.commit(SET_USER_INFO,{}) + Store.commit(SET_SESSION_ID,{}) +} + +// 错误处理 +const resolveError = { + 999(message){ + Notify(message || '网络异常,请稍后重试'); + }, + // 90040006 + 99(){ + deleteCatchInfo() + Notify('登录超时,请重新登录!'); + router.push('/'); + }, + 90040006(message){ + deleteCatchInfo() + Notify(message || '登录超时,请重新登录!'); + router.push('/'); + }, + // 密码错误 + 9990027(message){ + Notify(message); + deleteCatchInfo() + }, + // 密码错误 + 1340004(message){ + Notify(message); + deleteCatchInfo() + router.push('/') + } +} + +const $http = axios.create({ + baseURL: '/aic', + timeout: 90000, + header: { + 'Content-Type': 'application/json; charset=UTF-8' + } +}) + +// 添加请求拦截器 +$http.interceptors.request.use(config => { + if(typeof config.data ==='undefined'){ + config.data = {}; + } + config.data = createSign(config.data); + + if(!config.data.apploading){ + Store.commit(SET_APP_LOADING,true); + } + + return config; +}, error => { + Store.commit(SET_APP_LOADING,false); + return Promise.reject(error); +}) + +// 添加响应拦截器 +$http.interceptors.response.use(response => { + Store.commit(SET_APP_LOADING,false); + return response.data; +}, error => { + Store.commit(SET_APP_LOADING,false); + let data = error.response.data; + + let code = Math.abs(data.errorCode || data.status); + if(typeof resolveError[code] ==='function'){ + resolveError[code](data.errMsg || data.message); + }else{ + Notify(data.errMsg || data.message || '系统错误'); + } + return Promise.reject(data); +}) + +export default $http; diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..5a2c172 --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,150 @@ +/* + * @Descripttion:该文件用于组织服务器请求,添加请求函数时注意 函数重名! + * @Author: TM丶 + * @LastEditors: Please set LastEditors + * @Date: 2019-03-30 08:27:46 + * @LastEditTime: 2021-10-29 16:49:16 + */ + +import $http from './config'; +const api = { + uploadFile(data){ + return $http.post('/public/uploadFile',data) + },//文件上传 + areaOptions(data){ + return $http.post('/public/areaOptions',data) + },//获取读取 + wechatUserInfo(data){ + return $http.post('/wechat/userInfo',data) + },//获取微信openId + wechatGetUserInfo(data){ + return $http.post('/wechat/getUserInfo',data) + },//获取微信用户信息 + wechatgetSign(data){ + return $http.post('/wechat/getSign',data) + },//获取微信签名 + login(data){ + return $http.post('/login/login',data) + },//登录 + openIdLogin(data){ + return $http.post('/login/openIdLogin',data) + },//openId登录 + logout(data){ + return $http.post('/login/logout',data) + },//退出登录 + getVerCode(data){ + return $http.post('/user/verCode',data) + }, + // 订单创建相关 + orderCreateStep(data){ + return $http.post('/order/create/createStep',data) + },//获取订单创建步骤 + createTrial(data){ + return $http.post('/order/create/trial',data) + },//订单详情已经还款试算获取 + orderCreate(data){ + return $http.post('/order/create/create',data) + },//订单创建模块 + createInitIdInfo(data){ + return $http.post('order/create/initIdInfo',data) + },//初始化身份证信息 + getIdCardInfo(data){ + return $http.post('/order/create/getIdCardInfo',data) + },//获取身份证信息 + saveIdInfo(data){ + return $http.post('/order/create/saveIdInfo',data) + },//保存身份证信息 + getFaceUrl(data){ + return $http.post('/order/create/getFaceUrl',data) + },//获取人脸识别地址 + findFaceResult(data){ + return $http.post('/order/create/findFaceResult',data) + },//获取人脸识别结果 + createInitImgInfo(data){ + return $http.post('/order/create/initImgInfo',data) + },//初始化影像资料 + saveImgInfo(data){ + return $http.post('/order/create/saveImgInfo',data) + },//保存影像资料 + initUserInfo(data){ + return $http.post('/order/create/initUserInfo',data) + },//初始化个人信息 + saveUserInfo(data){ + return $http.post('/order/create/saveUserInfo',data) + },//保存个人信息 + initContInfo(data){ + return $http.post('/order/create/initContInfo',data) + },//初始化合同签署页面 + bankVerCode(data){ + return $http.post('/order/create/bankVerCode',data) + },//获取银行验证码 + getContInfo(data){ + return $http.post('/order/create/getContInfo',data) + },//获取合同信息 + saveContInfo(data){ + return $http.post('/order/create/saveContInfo',data) + },//保存合同签署页面 + initImgInfo(data){ + return $http.post('/order/create/initImgInfo',data) + },//初始化图片上传页面 + saveImgInfo(data){ + return $http.post('/order/create/saveImgInfo',data) + },//图片上传保存 + initAuditInfo(data){ + return $http.post('/order/create/initAuditInfo',data) + },//初始化审核结果 + + // 订单记录相关 + orderUserList(data){ + return $http.post('/order/user/list',data) + },//订单列表 + orderUserDetail(data){ + return $http.post('/order/user/detail',data) + },//订单详情 + orderUserCancel(data){ + return $http.post('/order/user/cancel',data) + },//取消订单 + initPreClose(data){ + return $http.post('/order/user/initPreClose',data) + },//初始化提前结清 + preClose(data){ + return $http.post('/order/user/preClose',data) + },//提前结清 + initRepay(data){ + return $http.post('/order/user/initRepay',data) + },//主动还款初始化 + + repay(data){ + return $http.post('/order/user/repay',data) + },//主动还款 + + repayTrial(data){ + return $http.post('/order/user/repayTrial',data) + },//主动还款试算 + + preSettleStatus(data){ + return $http.post('/order/user/preSettleStatus',data) + },//查询提前结清支付是否成功 + findRepayResult(data){ + return $http.post('/order/user/findRepayResult',data) + },//查询主动还款支付是否成功 + // ===========银行卡信息=========== + bankCardInfo(data){ + return $http.post('/user/bankCardInfo',data) + },//用户银行卡信息 + bankVerCode(data){ + return $http.post('/user/bankVerCode',data) + },//发送银行卡验证码 + bindBankCard(data){ + return $http.post('/user/bindBankCard',data) + },//绑定银行卡 + baseInfo(data){ + return $http.post('/user/baseInfo',data) + },//绑定银行卡 +} + +export default { + install(Vue, opt) { + Vue.prototype.$api = api; + } +} diff --git a/src/assets/img/noinfo.png b/src/assets/img/noinfo.png new file mode 100644 index 0000000..10ebf14 --- /dev/null +++ b/src/assets/img/noinfo.png Binary files differ diff --git a/src/assets/imgs/business.png b/src/assets/imgs/business.png new file mode 100644 index 0000000..0b2c429 --- /dev/null +++ b/src/assets/imgs/business.png Binary files differ diff --git a/src/assets/imgs/credit.png b/src/assets/imgs/credit.png new file mode 100644 index 0000000..21a76d2 --- /dev/null +++ b/src/assets/imgs/credit.png Binary files differ diff --git a/src/assets/imgs/img_details.png b/src/assets/imgs/img_details.png new file mode 100644 index 0000000..d8f9080 --- /dev/null +++ b/src/assets/imgs/img_details.png Binary files differ diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png new file mode 100644 index 0000000..4419c20 --- /dev/null +++ b/src/assets/imgs/logo.png Binary files differ diff --git a/src/assets/imgs/myHeader.png b/src/assets/imgs/myHeader.png new file mode 100644 index 0000000..fa8a747 --- /dev/null +++ b/src/assets/imgs/myHeader.png Binary files differ diff --git a/src/assets/imgs/nodata.png b/src/assets/imgs/nodata.png new file mode 100644 index 0000000..9ea398f --- /dev/null +++ b/src/assets/imgs/nodata.png Binary files differ diff --git a/src/assets/imgs/openpic.png b/src/assets/imgs/openpic.png new file mode 100644 index 0000000..dd78720 --- /dev/null +++ b/src/assets/imgs/openpic.png Binary files differ diff --git a/src/assets/imgs/pic.png b/src/assets/imgs/pic.png new file mode 100644 index 0000000..edc845c --- /dev/null +++ b/src/assets/imgs/pic.png Binary files differ diff --git a/src/assets/imgs/userImg.png b/src/assets/imgs/userImg.png new file mode 100644 index 0000000..b1b84e5 --- /dev/null +++ b/src/assets/imgs/userImg.png Binary files differ diff --git a/src/assets/imgs/yqpic.png b/src/assets/imgs/yqpic.png new file mode 100644 index 0000000..3123494 --- /dev/null +++ b/src/assets/imgs/yqpic.png Binary files differ diff --git a/src/assets/zfblx/1.png b/src/assets/zfblx/1.png new file mode 100644 index 0000000..51ff3db --- /dev/null +++ b/src/assets/zfblx/1.png Binary files differ diff --git a/src/assets/zfblx/2.png b/src/assets/zfblx/2.png new file mode 100644 index 0000000..fed081b --- /dev/null +++ b/src/assets/zfblx/2.png Binary files differ diff --git a/src/assets/zfblx/3.png b/src/assets/zfblx/3.png new file mode 100644 index 0000000..22003ad --- /dev/null +++ b/src/assets/zfblx/3.png Binary files differ diff --git a/src/assets/zfblx/4.png b/src/assets/zfblx/4.png new file mode 100644 index 0000000..64b7849 --- /dev/null +++ b/src/assets/zfblx/4.png Binary files differ diff --git a/src/assets/zfblx/5.png b/src/assets/zfblx/5.png new file mode 100644 index 0000000..3a363f8 --- /dev/null +++ b/src/assets/zfblx/5.png Binary files differ diff --git a/src/assets/zfblx/bg.png b/src/assets/zfblx/bg.png new file mode 100644 index 0000000..1050eb2 --- /dev/null +++ b/src/assets/zfblx/bg.png Binary files differ diff --git a/src/assets/zfblx/bg2.png b/src/assets/zfblx/bg2.png new file mode 100644 index 0000000..30e57b8 --- /dev/null +++ b/src/assets/zfblx/bg2.png Binary files differ diff --git a/src/assets/zfblx/bg3.png b/src/assets/zfblx/bg3.png new file mode 100644 index 0000000..76795bf --- /dev/null +++ b/src/assets/zfblx/bg3.png Binary files differ diff --git a/src/assets/zfblx/bg4.png b/src/assets/zfblx/bg4.png new file mode 100644 index 0000000..91b1433 --- /dev/null +++ b/src/assets/zfblx/bg4.png Binary files differ diff --git a/src/assets/zfblx/code.png b/src/assets/zfblx/code.png new file mode 100644 index 0000000..cfe225c --- /dev/null +++ b/src/assets/zfblx/code.png Binary files differ diff --git a/src/assets/zfblx/code1.png b/src/assets/zfblx/code1.png new file mode 100644 index 0000000..cfe225c --- /dev/null +++ b/src/assets/zfblx/code1.png Binary files differ diff --git a/src/assets/zfblx/course.png b/src/assets/zfblx/course.png new file mode 100644 index 0000000..c3ff11b --- /dev/null +++ b/src/assets/zfblx/course.png Binary files differ diff --git a/src/assets/zfblx/zfb.png b/src/assets/zfblx/zfb.png new file mode 100644 index 0000000..85c76b2 --- /dev/null +++ b/src/assets/zfblx/zfb.png Binary files differ diff --git a/src/bus.js b/src/bus.js new file mode 100644 index 0000000..97fd1eb --- /dev/null +++ b/src/bus.js @@ -0,0 +1,9 @@ +/* + * @Author: 小明丶 + * @Date: 2020-06-01 13:43:10 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-01 13:44:10 + * @Description: + */ +import Vue from 'vue' +export default new Vue() \ No newline at end of file diff --git a/src/components/cell/h-cell.vue b/src/components/cell/h-cell.vue new file mode 100644 index 0000000..56a46a1 --- /dev/null +++ b/src/components/cell/h-cell.vue @@ -0,0 +1,194 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-09 13:38:38 + * @LastEditors: zxq + * @LastEditTime: 2022-04-29 09:33:49 + * @Description: cell框组件 + --> +<template> + <div class="flex-between-g v-cell-box" @click.stop="_click"> + <div class="left flex-start-g"> + <svg v-if="icon" class="icon" aria-hidden="true" style="width:16px;height:16px;"> + <use :xlink:href="'#'+icon" /> + </svg> + <span style="color:red" v-show="isMust">*</span> + <span class="label" :class="[isTitle? 'title' : '']">{{label}}</span> + </div> + <div class="right flex-end-g"> + <slot name="v-cell-right"> + <div class="c-text-999-g" v-if="!Show_input"> + {{calcValue}} + </div> + <input + class="input" + :class="[readonly ? 'readonly' : '']" + :type="type" + :maxlength="max" + v-if="Show_input" + @blur.stop="_blur" + :disabled="readonly" + v-model="calcValue" + :placeholder="placeholder" + /> + <svg + v-if="isLink" + class="icon" + aria-hidden="true" + style="width:18px;height:18px;fill:#999;" + > + <use xlink:href="#iconright" /> + </svg> + </slot> + <slot name="button"> + + </slot> + </div> + </div> +</template> + +<script> +export default { + name: "h-cell", + props: { + max: [String, Number], + type: { + type: String, + default: "text" + }, + // 左侧文字 + label: String, + //左侧图标类名 + icon: String, + isMust:{ + type: Boolean, + default: false + }, + //是否展示右侧图标 + isLink: { + type: Boolean, + default: false + }, + // title文字加粗 + isTitle: { + type: Boolean, + default: false + }, + // 是否只读 + readonly: { + type: Boolean, + default: false + }, + // 是否禁用 + disabled: { + type: Boolean, + default: false + }, + Show_input: { + type: Boolean, + default: true + }, + // input 的vmodel + value: [String, Number], + placeholder: String + }, + computed: { + calcValue: { + get() { + return this.value; + }, + set(v) { + this.$emit("input", v); + } + } + }, + methods:{ + _click(){ + this.$emit('click') + }, + _blur(){ + this.$emit('blur'); + } + } +}; +</script> + +<style lang="less" scoped> +.v-cell-box { + padding: 16px 0; + background-color: @c-bg-fff; + margin-bottom: 1px; + border-bottom:1px solid #f1f1f1; + &:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + + } + + &:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + margin-bottom: 0; + + } + + .label { + font-size: @font-14; + font-weight:500; + color:rgba(101,101,101,1); + &.title { + font-weight: 500; + } + } + + .left { + .icon { + margin-right: 8px; + } + } + + .right{ + width: 60%; + } + + .input { + border: none; + outline: none; + width: 100%; + text-align: right; + color: @c-text-333; + background: @c-bg-fff; + &.readonly { + color:#999999; + } + &[disabled] { + opacity: 1; + -webkit-opacity: 1; + color: #999999; + -webkit-text-fill-color: #999999; + } + } + input::-webkit-input-placeholder { + color: #999999; + } + + input::-moz-placeholder { + /* Mozilla Firefox 19+ */ + color: #999999; + } + + input:-moz-placeholder { + /* Mozilla Firefox 4 to 18 */ + color: #999999; + } + + input:-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: #999999; + } + input:-internal-autofill-previewed, + input:-internal-autofill-selected { + -webkit-text-fill-color: #333; + transition: background-color 5000s ease-out 0.5s; + } +} +</style> diff --git a/src/components/h-list.vue b/src/components/h-list.vue new file mode 100644 index 0000000..a8450fe --- /dev/null +++ b/src/components/h-list.vue @@ -0,0 +1,76 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-01-07 09:27:05 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-10-24 14:41:23 + * @Description: 下滑分页组件 为保证不重复请求 使用时要根据显示内容的div高度确定一次返回条数,数据足够的情况下一次放回请装满容器 + --> +<template> + <div class="h-list" :style="{'height':height,'background':background}"> + <div class="box" ref="lisBox"> + <slot></slot> + <p v-if="loading" class="load">加载中....</p> + <p v-if="finished" class="finish">没有更多了</p> + </div> + </div> +</template> +<script> +export default { + name:'h-list', + /** + * defScroll-滚动条距离底部小于此距离执行加载,可根据需求调整距离(必传) + * finished-是否已经等到所有数据(必传) + * loading-是否显示加载(必传) + */ + props:['defScroll','finished','loading','height','background'], + data() { + return { + previous:0, + now:0, + } + }, + mounted(){ + document.querySelector('.h-list').addEventListener('scroll', this.boxScroll,true) + //window.addEventListener('scroll', this.boxScroll,true) + console.log(this.defScroll) + }, + methods:{ + boxScroll(e){ + this.now = new Date().getTime() + // 获取滚动条距离容器底部的距离 + let scrollBottom = + e.target.scrollHeight - + e.target.scrollTop - + e.target.clientHeight; + if(this.now-this.previous > 100){ + if(scrollBottom < this.defScroll && !this.finished && scrollBottom!=0){ + this.loading = true + this.$emit('scroll') + this.previous = this.now + return + }else{ + this.loading = false + return + } + } + }, + } +} +</script> +<style lang="less" scoped> +.h-list::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar { + display: none; + } +.h-list{ + overflow: scroll; + height: 75vh; + background-color: #fff; + width: 100%; + padding-bottom: 20px; + display: flex; + justify-content: center; + .load,.finish{ + text-align: center; + } +} +</style> \ No newline at end of file diff --git a/src/components/input/h-ipt.vue b/src/components/input/h-ipt.vue new file mode 100644 index 0000000..653f76b --- /dev/null +++ b/src/components/input/h-ipt.vue @@ -0,0 +1,155 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-08 19:04:22 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-24 11:27:18 + * @Description: 登录也输入框组件 + --> +<template> + <div class="h-ipt-box"> + <div class="ipt-div"> + <i class="left iconfont" :class="icon" v-if="icon"></i> + <input + :type="type" + class="ipt" + v-model="newValue" + :maxlength="maxlength" + :placeholder="placeholder" + @focus="showClose" + @blur="noClose" + /> + <div class="right-slot"> + <slot name="right"> + </slot> + </div> + + <i class="right iconfont iconreeor-fill" v-if="close && newValue && getClose" @click="deleteMsg"></i> + </div> + </div> +</template> +<script> +export default { + name:'h-ipt', + model: { + prop: "value", + event: "input" + }, + props: { + getClose:{ + type:Boolean, + default:false + }, + icon: { + type: String + }, + maxlength: { + type: Number + }, + placeholder: { + type: String, + default: "请输入" + }, + value: { + type: [String, Number] + }, + type: { + type: String, + default: "text" + }, + + }, + data() { + return { + close:false, + }; + }, + computed: { + newValue: { + get: function() { + return this.value; + }, + set: function(value) { + this.$emit("input", value); + } + } + }, + methods:{ + showClose(){ + this.close = true + }, + noClose(){ + this.close = false + }, + deleteMsg(){ + this.newValue = '' + } + } +}; +</script> +<style lang="less" scoped> +.h-ipt-box { + width: 100%; + text-align: center; + .ipt-div { + display: inline-block; + width: 80%; + height: 40px; + border-radius: 20px; + border: 1px solid rgb(234, 234, 234); + //line-height: 40px; + position: relative; + .left { + font-size: 24px; + color: @c-default; + position: absolute; + left: 10px; + top: 6px; + } + .right{ + font-size: 18px; + color: @c-default; + position: absolute; + right: 10px; + top: 10px; + } + .ipt { + position: absolute; + right: 100px; + top: 10px; + width: 50%; + border: 0; // 去除未选中状态边框 + outline: none; // 去除选中状态边框 + background-color: rgba(0, 0, 0, 0); // 透明背景 + } + .right-slot{ + position: absolute; + right: 10px; + top: 6px; + } + } + + input::-webkit-input-placeholder { + color: rgb(163, 163, 163); + } + + input::-moz-placeholder { + /* Mozilla Firefox 19+ */ + color: rgb(163, 163, 163); + } + + input:-moz-placeholder { + /* Mozilla Firefox 4 to 18 */ + color: rgb(163, 163, 163); + } + + input:-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: rgb(163, 163, 163); + } + input:-internal-autofill-previewed, + input:-internal-autofill-selected { + -webkit-text-fill-color: #333; + transition: background-color 5000s ease-out 0.5s; + } +} +</style> \ No newline at end of file diff --git a/src/components/pdf/cpdf.vue b/src/components/pdf/cpdf.vue new file mode 100644 index 0000000..cafa67f --- /dev/null +++ b/src/components/pdf/cpdf.vue @@ -0,0 +1,125 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-07-01 19:52:15 + * @LastEditors: zxq + * @LastEditTime: 2022-06-16 16:42:41 + * @Description: +--> +<template> + <div class="cpdf" id="cpdf"> + <div class="center"> + <!-- <div class="contor"> + <button @click="prev">上一页</button> + <button @click="next">下一页</button> + <span>Page: <span v-text="page_num"></span> / <span v-text="page_count"></span></span> + + <button @click="addscale" >加</button> + <button @click="minus" >减</button> + <button id="prev" @click="closepdf">关闭</button> + </div> --> + <!-- <canvas class="canvasstyle" id="the-canvas"></canvas> --> + <canvas id="the-canvas" style="border:1px solid black"></canvas> + </div> + </div> +</template> +<script> +// import PDFJS from "pdfjs-dist"; +// import { TextLayerBuilder } from "pdfjs-dist/web/pdf_viewer"; +// import "pdfjs-dist/web/pdf_viewer.css"; +// PDFJS.GlobalWorkerOptions.workerSrc = "pdfjs-dist/build/pdf.worker.js"; + +var container; +export default { + name: "c-pdf", + props: { + msg: String + }, + mounted() { + // this.$nextTick(() => { + // let url = + // "http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf"; + // this.getPDF(url); + // }); + }, + methods: { + async getPDF(url) { + let pdf = await PDFJS.getDocument(url) + container = container || document.querySelector('#container') + for(let i = 0; i < pdf.numPages; i++) { + try{ + await this.rendPDF(pdf, i) + } catch(e) { + // console.error(e) + } + } + }, + // async renderPDF(pdf, num) { + // let page = await pdf.getPage(num) + // // 设置展示比例 + // let scale = 1.5; + // let viewport = page.getViewport(scale); + + // let pageDiv = document.createElement('div'); + // pageDiv.setAttribute('id', 'page-' + (page.pageIndex + 1)); + // pageDiv.setAttribute('style', 'position: relative'); + // container.appendChild(pageDiv); + + // let canvas = document.createElement('canvas'); + // pageDiv.appendChild(canvas); + // let context = canvas.getContext('2d'); + // canvas.height = viewport.height; + // canvas.width = viewport.width; + + // let renderContext = { + // canvasContext: context, + // viewport: viewport + // }; + + // await page.render(renderContext); + // let textContent = await page.getTextContent() + // // 创建文本图层div + // const textLayerDiv = document.createElement('div'); + // textLayerDiv.setAttribute('class', 'textLayer'); + // textLayerDiv.setAttribute('style', `width: ${viewport.width}px; margin: 0 auto;`) + // // 将文本图层div添加至每页pdf的div中 + // pageDiv.appendChild(textLayerDiv); + + // // 创建新的TextLayerBuilder实例 + // var textLayer = new TextLayerBuilder({ + // textLayerDiv: textLayerDiv, + // pageIndex: page.pageIndex, + // viewport: viewport + // }); + + // textLayer.setTextContent(textContent); + + // textLayer.render(); + + // } + } +}; + +</script> +<style type="text/less" lang="less" rel="stylesheet/less"> + .cpdf { + position: fixed; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, .5); + width: 100%; + height: 100%; + z-index: 99999; + display: flex; + justify-content: center; + align-items: center; + .center { + text-align: center; + height: 100%; + overflow: auto; + padding-top: 20px; + .contor { + margin-bottom: 10px; + } + } + } +</style> diff --git a/src/components/upload/uploadIdCard.vue b/src/components/upload/uploadIdCard.vue new file mode 100644 index 0000000..4ecaabc --- /dev/null +++ b/src/components/upload/uploadIdCard.vue @@ -0,0 +1,407 @@ +<!-- + * @Date: 2019-08-30 18:04:49 + * @LastEditors: zxq + * @LastEditTime: 2022-06-10 14:38:34 + * @Description: + --> +<template> + <div class="component-photo-upload"> + <div class="photo-list"> + <!--上传按钮--> + <div class="pic-item-box-z" @click="handleUploadPicture(1)"> + <img v-if="picZ.fileUrl" :src="picZ.fileUrl" alt /> + <img v-if="!picZ.fileUrl&&cardFont" :src="cardFont" alt /> + </div> + <!--上传按钮--> + <div class="pic-item-box-f" @click="handleUploadPicture(2)"> + <img v-if="picF.fileUrl" :src="picF.fileUrl" alt /> + <img v-if="!picF.fileUrl&&cardBack" :src="cardBack" alt /> + </div> + </div> + <!-- 真正的上传按钮--> + <div> + <input + style="display: none;cursor:pointer" + type="file" + id='androidInputFileImage' + ref="androidInputFileImage" + @change="handlePhotoChange($event,1)" + accept="image/jpg, image/jpeg, image/png" + /> + <input + style="display: none;cursor:pointer;" + type="file" + id='androidInputFileCapture' + ref="androidInputFileCapture" + @change="handlePhotoChange($event,2)" + accept="image/*" + capture="camera" + /> + </div> + <!--选择上传图片还是拍照--> + <van-action-sheet + v-model="selectModel" + :close-on-click-overlay="false" + cancel-text="取消" + :actions="nav" + @select="handleMenuSelect" + ></van-action-sheet> + <!-- <button @click="onclick">aa</button> --> + </div> +</template> + +<script> +import Bus from "../../bus"; +import { SET_APP_LOADING } from "@/store/mutations-types"; +import { mapMutations } from "vuex"; +import EXIF from "exif-js"; +import { _imgCompress, _fileToBase64 } from "@/utils/index"; +import Vue from "vue"; +import { ActionSheet } from "vant"; +Vue.use(ActionSheet); +export default { + name: "upLoadIdCard", + data() { + return { + selectModel: false, // 模态窗选择拍照还是相册 + nav: [{ name: "拍照" }, { name: "从手机相册选择" }], + picList: [{}, {}], + picZ: {}, + picF: {}, + zOrf: "", + isFirst: true + }; + }, + props: { + cardFont: { + type: String + }, + cardBack: { + type: String + } + }, + watch: { + cardFont: function(newVal, oldVal) { + if (newVal) { + this.picList[0].fileId = this.cardFont.slice(1); + this.picList[0].fileUrl = this.cardFont; + } + }, + cardBack: function(newVal, oldVal) { + if (this.cardBack) { + this.picList[1].fileId = this.cardBack.slice(1); + this.picList[1].fileUrl = this.cardBack; + } + } + }, + methods: { + ...mapMutations([SET_APP_LOADING]), + // 处理图片上传的事件(deleteIndex---删除图片的索引) + handlePhotoChange: function(evt,type) { + let that = this; + let shebei = this.judgeBrand(navigator.userAgent.toLowerCase()); + that.SET_APP_LOADING(true); + // 图片是单选还是多选 + const files = Array.prototype.slice.call(evt.target.files); + // 图片的处理 + files.forEach(function(file, i) { + // 图片的拍摄方向 + var orientation; + // 格式是否支持的判断 + if (!/\/(?:jpg|jpeg|png)/i.test(file.type)) { + that.$vux.toast.text("仅支持jpg|png图片格式", "middle"); + that.SET_APP_LOADING(false); + return; + } + // 获取文件内容 + let reader = new FileReader(); + // reader.readAsArrayBuffer(file); + reader.onload = function(e) { + // EXIF.getData(file, function() { + // orientation = EXIF.getTag(this, "Orientation"); + // console.log(orientation) + // 使用exif,处理图片的旋转问题,然后执行回调函数(orientation永远是0); + // if(type==2&&orientation){ + // // 拍照上传 + // that.getImgData(e.target.result, orientation, function(data) { + // // 这里可以使用校正后的图片data了 + // var img = new Image(); + // img.src = data; + // // 图片加载完毕之后进行压缩,然后上传 + // if (img.complete) { + + // callback(); + // } else { + // img.onload = callback; + // } + // // 图片的路径获取成功后 + // function callback(){ + // // 压缩后的图片的base64字符串 + // let data = that.compress(img); + // // 调取接口上传图片 + // that.submitUploadImg(that.fileType, data); + // } + // }); + // }else{ + var comimg = new Image(); + comimg.src = e.target.result; + comimg.onload = function(eimg){ + let num = 1; + if(this.width<this.height){ + num = 8 + } + that.getImgData(e.target.result, num, function(data) { + // 这里可以使用校正后的图片data了 + var img = new Image(); + img.src = data; + // 图片加载完毕之后进行压缩,然后上传 + if (img.complete) { + callback(); + } else { + img.onload = callback; + } + // 图片的路径获取成功后 + function callback() { + // 压缩后的图片的base64字符串 + console.log(img.width,img.height) + let data = that.compress(img); + // 调取接口上传图片 + that.submitUploadImg(that.fileType, data); + } + }); + } + // } + // }) + }; + reader.readAsDataURL(file); + }); + }, + // type文件上传的路径,data图片的base64字符串(删除图片即重新上传) + submitUploadImg: function(type, base64) { + let that = this; + // 防止操作的模态窗 + let submitInfo = { + base64Data: base64.split(",")[1], // 文件base64 + suffix: base64.split(",")[0].split(";")["0"].split("/")[1] + }; + this.$api.uploadFile(submitInfo).then( + res => { + if (that.zOrf == 1) { + that.picZ = { + fileUrl: res.body.fileUrl, + fileId: res.body.fileId + }; + that.picList[0] = that.picZ; + } else { + that.picF = { + fileUrl: res.body.fileUrl, + fileId: res.body.fileId + }; + that.picList[1] = that.picF; + } + if (this.picList[1].fileId && this.picList[0].fileId) { + this.getIdCardInfo(); + } + that.SET_APP_LOADING(false); + }, + error => { + this.SET_APP_LOADING(false); + } + ); + }, + // 获取身份证信息 + getIdCardInfo() { + if (!this.isFirst) { + this.$api + .getIdCardInfo({ + idBackId: this.picList[1].fileId, + idFrontId: this.picList[0].fileId + }) + .then(res => { + let obj = res.body; + obj.idBackUrl = this.picList[1].fileUrl; + obj.idFrontUrl = this.picList[0].fileUrl; + Bus.$emit("getIdUserInfo", obj); + }); + } + }, + // 图片旋转处理 + getImgData: function(img, dir, next) { + // @param {string} img 图片的base64 + // @param {int} dir exif获取的方向信息 + // @param {function} next 回调方法,返回校正方向后的base64 + var image = new Image(); + let canvas = document.createElement("canvas"); + let ctx = canvas.getContext("2d"); + image.onload = function() { + let resultWidth = 0; + let resultHeight = 0; + let maxWidthOrHeight = 1024; + let drawWidth = this.naturalWidth; + let drawHeight = this.naturalHeight; + // 以下改变图片大小,控制最大宽度为1024 + var maxSide = Math.max(drawWidth, drawHeight); + if (maxSide > maxWidthOrHeight) { + let minSide = Math.min(drawWidth, drawHeight); + minSide = (minSide / maxSide) * maxWidthOrHeight; + maxSide = maxWidthOrHeight; + if (drawWidth > drawHeight) { + resultWidth = maxSide; + resultHeight = minSide; + } else { + resultWidth = minSide; + resultHeight = maxSide; + } + } else { + resultWidth = drawWidth; + resultHeight = drawHeight; + } + if (dir === 3) { + canvas.width = resultWidth; + canvas.height = resultHeight; + ctx.translate(resultWidth, resultHeight); + ctx.rotate(Math.PI); + } else if (dir === 6) { + canvas.width = resultHeight; + canvas.height = resultWidth; + ctx.translate(resultHeight, 0); + ctx.rotate(Math.PI / 2); + } else if (dir === 8) { + canvas.width = resultHeight; + canvas.height = resultWidth; + ctx.translate(0, resultWidth); + ctx.rotate(-Math.PI / 2); + } else { + canvas.width = resultWidth; + canvas.height = resultHeight; + } + ctx.drawImage(this, 0, 0, resultWidth, resultHeight); + // 返回校正图片 + next(canvas.toDataURL("image/jpeg", 0.8)); + }; + image.src = img; + }, + compress(img) { + let quality = 0.92, //压缩比例 + w = img.width, + h = img.height, + canvas = document.createElement("canvas"), + ctx = canvas.getContext("2d"); + canvas.width = w; + canvas.height = h; + ctx.drawImage(img, 0, 0, w, h); + return canvas.toDataURL("image/jpeg", quality); + }, + checkAuth(id) { + // authStatus: 0 未授权 1授权---用户授权后才能执行下一步 + this.$api + .checkAuth({ + fileId: id + }) + .then(res => { + if (res.body.authStatus === 1) { + this.$emit("on-check-auth", "下一步"); + } + }); + }, + // 点击上传按钮 + handleUploadPicture(i) { + this.isFirst = false; + this.zOrf = i; + // this.$refs.androidInputFileCapture.click(); + this.selectModel = true; + }, + // 选择拍照或者相册选项 + handleMenuSelect(item, index) { + if (index === 0) { + this.$refs.androidInputFileCapture.click(); + } else { + this.$refs.androidInputFileImage.click(); + } + this.selectModel = false; + }, + // 处理图片的删除 + handleDeletePicture(index) { + this.selectModel = true; + }, + judgeBrand(sUserAgent) { + var isIphone = sUserAgent.match(/iphone/i) == "iphone"; + var isHuawei = sUserAgent.match(/huawei/i) == "huawei"; + var isHonor = sUserAgent.match(/honor/i) == "honor"; + var isOppo = sUserAgent.match(/oppo/i) == "oppo"; + var isOppoR15 = sUserAgent.match(/pacm00/i) == "pacm00"; + var isVivo = sUserAgent.match(/vivo/i) == "vivo"; + var isXiaomi = sUserAgent.match(/mi\s/i) == "mi "; + var isXiaomi2s = sUserAgent.match(/mix\s/i) == "mix "; + var isRedmi = sUserAgent.match(/redmi/i) == "redmi"; + var isSamsung = sUserAgent.match(/sm-/i) == "sm-"; + if (isIphone) { + return 'iphone'; + } else if (isHuawei || isHonor) { + return 'huawei'; + } else if (isOppo || isOppoR15) { + return 'oppo'; + } else if (isVivo) { + return 'vivo'; + } else if (isXiaomi || isRedmi || isXiaomi2s) { + return 'xiaomi'; + } else if (isSamsung) { + return 'samsung'; + } else { + return 'default'; + } + } + }, + created(){ + // let + // console.log(shebei); + } +}; +</script> + +<style lang="less" scoped > +.component-photo-upload { + .pic-title { + h4 { + padding: 10px 0; + font-size: 15px; + line-height: 1; + color: #333; + font-weight: normal; + } + } + + .photo-list { + // .pic-item-box{ + // width: 239px; + // height: 134px; + // } + + .pic-item-box-z { + width: 239px; + height: 134px; + background-image: url("../../../static/img/idcardz.png"); + background-size: cover; + margin: auto; + margin-bottom: 20px; + + img { + width: 100%; + height: 100%; + } + } + + .pic-item-box-f { + width: 239px; + height: 134px; + background-image: url("../../../static/img/idcardf.png"); + background-size: cover; + margin: auto; + img { + width: 100%; + height: 100%; + } + } + } +} +</style> diff --git a/src/components/upload/uploadImg.vue b/src/components/upload/uploadImg.vue new file mode 100644 index 0000000..1f088a6 --- /dev/null +++ b/src/components/upload/uploadImg.vue @@ -0,0 +1,374 @@ +<!-- + * @Date: 2019-08-30 18:04:49 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-08 14:09:13 + * @Description: + --> +<template> + <div class="component-photo-upload-img"> + <!--title 和上传按钮的图标--> + <div class="pic-title"> + <span v-if="hasTips" style="font-size:14px;color:#FF6666;">*</span> + <span style="font-size:14px;font-weight:500;color:#333333;">{{ title }}</span> + </div> + <!--图片上传列表,删除即重新上传--> + <div class="photo-list"> + <!--图片上传列表--> + <template v-for="(item, index) in picList"> + <div class="pic-item-box" v-if="picList instanceof Array && picList.length" :key="index"> + <div class="close-div"> + <div class="close-div-box"> + <van-icon name="clear" v-if="picList.length > 1" @click="deletPhoto(item,index)" /> + </div> + </div> + <!-- <img :src="item.fileUrl" @click="handleDeletePicture(index)" /> --> + <img :src="item" @click="handleDeletePicture(index)" /> + </div> + </template> + <!--上传按钮--> + <div class="pic-item-box" @click="handleUploadPicture" v-if="showUploadBtn"> + <i class="iconfont iconzhaoxiang"></i> + </div> + </div> + <!-- 真正的上传按钮--> + <div> + <input + style="display: none" + type="file" + ref="androidInputFileImage" + @change="handlePhotoChange($event)" + accept="image/*" + /> + <input + style="display: none" + type="file" + ref="androidInputFileCapture" + @change="handlePhotoChange($event)" + accept="image/*" + capture="camera" + /> + </div> + <!--选择上传图片还是拍照--> + + <van-action-sheet + v-model="selectModel" + :close-on-click-overlay="false" + cancel-text="取消" + :actions="nav" + @select="handleMenuSelect" + ></van-action-sheet> + </div> +</template> + +<script> +import { SET_APP_LOADING } from "@/store/mutations-types"; +import { mapMutations } from "vuex"; +import EXIF from "exif-js"; + +import { _imgCompress, _fileToBase64 } from "@/utils/index"; +import Vue from "vue"; +import { Icon } from "vant"; +import { ActionSheet } from 'vant'; + +Vue.use(ActionSheet); +Vue.use(Icon); +export default { + name: "sceneUploadFile", + data() { + return { + selectModel: false, // 模态窗选择拍照还是相册 + deleteIndex: -1, // 删除图片的index + nav: [{ name: "拍照" }, { name: "从手机相册选择" }] + }; + }, + props: [ + "title", + "fileType", // 文件类型1-合同资料 2-现场合照 3-资料证明 + "picList", + "sourceType", + "typeId", + "hasTips" + ], + computed: { + showUploadBtn() { + let num = Number(this.fileType), + isArray = Array.isArray(this.picList); + + // 这里只能上传一张 + if (num === 2 ) { + return isArray && this.picList.length < 1; + } else if (num === 10 || num === 13) { + // 这个类型,只能上传两张 + return isArray && this.picList.length < 2; + } else { + return isArray && this.picList.length < 4; + } + } + }, + methods: { + ...mapMutations([SET_APP_LOADING]), + //删除照片 + deletPhoto(item, i) { + //console.log(item); + this.picList.splice(i, 1); + }, + // 处理图片上传的事件(deleteIndex---删除图片的索引) + handlePhotoChange: function(evt) { + let that = this; + that.SET_APP_LOADING(true); + // 图片是单选还是多选 + const files = Array.prototype.slice.call(evt.target.files); + // 图片的处理 + files.forEach(function(file, i) { + // 图片的拍摄方向 + var orientation; + // 格式是否支持的判断 + if (!/\/(?:jpg|jpeg|png)/i.test(file.type)) { + that.$vux.toast.text("仅支持jpg|png图片格式", "middle"); + that.SET_APP_LOADING(false); + return; + } + // 读取图片的元信息 + EXIF.getData(file, function() { + orientation = EXIF.getTag(this, "Orientation"); + }); + // 获取文件内容 + let reader = new FileReader(); + reader.onload = function() { + that.$refs.androidInputFileCapture.value = null; + that.$refs.androidInputFileImage.value = null; + // 使用exif,处理图片的旋转问题,然后执行回调函数 + that.getImgData(this.result, orientation, function(data) { + // 这里可以使用校正后的图片data了 + var img = new Image(); + img.src = data; + + // 图片加载完毕之后进行压缩,然后上传 + if (img.complete) { + callback(); + } else { + img.onload = callback; + } + // 图片的路径获取成功后 + function callback() { + // 压缩后的图片的base64字符串 + let data = that.compress(img); + // 调取接口上传图片 + that.submitUploadImg(that.fileType, data, that.deleteIndex); + } + }); + }; + reader.readAsDataURL(file); + }); + }, + // type文件上传的路径,data图片的base64字符串(删除图片即重新上传) + submitUploadImg: function(type, base64, deleteIndex) { + let that = this; + // 防止操作的模态窗 + let submitInfo = { + base64Data: base64.split(",")[1], // 文件base64 + //fileType: type, + suffix: base64 + .split(",")[0] + .split(";") + ["0"].split("/")[1] + }; + this.$api + .uploadFile({ + ...submitInfo, + }) + .then( + res => { + // 如果存在删除图片索引 + if (deleteIndex >= 0) { + // 删除以前的那张照片,然后添加新上传的图片 + // this.picList.splice(deleteIndex, 1, { + // fileUrl: res.body.fileUrl, + // fileId: res.body.fileId + // }); + this.picList.splice(deleteIndex, 1, res.body.fileUrl); + // 将删除索引重置为-1,即当前状态重置为新增,而非删除状态 + this.deleteIndex = -1; + } else { + // this.picList.unshift({ + // fileUrl: res.body.fileUrl, + // fileId: res.body.fileId + // }); + this.picList.unshift( + res.body.fileUrl + ); + } + // 如果是支付二维码的话,需要调取检查授权 + if (Number(this.fileType) === 8) { + this.checkAuth(res.body.fileId); + } + that.SET_APP_LOADING(false); + // 提交整个图片列表 + this.$emit("on-change-pic", this.picList); + }, + error => { + this.SET_APP_LOADING(false); + } + ); + + }, + // 图片旋转处理 + getImgData: function(img, dir, next) { + // @param {string} img 图片的base64 + // @param {int} dir exif获取的方向信息 + // @param {function} next 回调方法,返回校正方向后的base64 + var image = new Image(); + let canvas = document.createElement("canvas"); + let ctx = canvas.getContext("2d"); + image.onload = function() { + let resultWidth = 0; + let resultHeight = 0; + let maxWidthOrHeight = 1024; + let drawWidth = this.naturalWidth; + let drawHeight = this.naturalHeight; + + // 以下改变图片大小,控制最大宽度为1024 + var maxSide = Math.max(drawWidth, drawHeight); + if (maxSide > maxWidthOrHeight) { + let minSide = Math.min(drawWidth, drawHeight); + minSide = (minSide / maxSide) * maxWidthOrHeight; + maxSide = maxWidthOrHeight; + if (drawWidth > drawHeight) { + resultWidth = maxSide; + resultHeight = minSide; + } else { + resultWidth = minSide; + resultHeight = maxSide; + } + } else { + resultWidth = drawWidth; + resultHeight = drawHeight; + } + + if (dir === 3) { + canvas.width = resultWidth; + canvas.height = resultHeight; + ctx.translate(resultWidth, resultHeight); + ctx.rotate(Math.PI); + } else if (dir === 6) { + canvas.width = resultHeight; + canvas.height = resultWidth; + ctx.translate(resultHeight, 0); + ctx.rotate(Math.PI / 2); + } else if (dir === 8) { + canvas.width = resultHeight; + canvas.height = resultWidth; + ctx.translate(0, resultWidth); + ctx.rotate(-Math.PI / 2); + } else { + canvas.width = resultWidth; + canvas.height = resultHeight; + } + ctx.drawImage(this, 0, 0, resultWidth, resultHeight); + // 返回校正图片 + next(canvas.toDataURL("image/jpeg", 0.8)); + }; + image.src = img; + }, + compress(img) { + let quality = 0.92, //压缩比例 + w = img.width, + h = img.height, + canvas = document.createElement("canvas"), + ctx = canvas.getContext("2d"); + canvas.width = w; + canvas.height = h; + ctx.drawImage(img, 0, 0, w, h); + return canvas.toDataURL("image/jpeg", quality); + }, + checkAuth(id) { + // authStatus: 0 未授权 1授权---用户授权后才能执行下一步 + this.$api + .checkAuth({ + fileId: id + }) + .then(res => { + if (res.body.authStatus === 1) { + this.$emit("on-check-auth", "下一步"); + } + }); + }, + // 点击上传按钮 + handleUploadPicture() { + if(this.fileType==2){ + this.$refs.androidInputFileCapture.click(); + }else{ + this.selectModel = true; + } + + }, + // 选择拍照或者相册选项 + handleMenuSelect(item, index) { + if (index === 0) { + this.$refs.androidInputFileCapture.click(); + } else { + this.$refs.androidInputFileImage.click(); + } + this.selectModel = false; + }, + // 处理图片的删除 + handleDeletePicture(index) { + this.deleteIndex = index; + this.selectModel = true; + } + } +}; +</script> + +<style lang="less" scoped> +.component-photo-upload-img { + .pic-title { + margin-bottom: 10px; + } + + .photo-list { + display: flex; + padding-bottom: 20px; + flex-wrap: wrap; + + .pic-item-box { + position: relative; + height: 100px; + width: 100px; + margin-right: 10px; + margin-bottom: 10px; + line-height: 100px; + text-align: center; + background: rgba(245, 249, 255, 1); + border: 1px dashed rgba(81, 148, 254, 1); + border-radius: 4px; + .iconzhaoxiang { + font-size: 30px; + color: #5194fe; + } + .close-div { + position: absolute; + top: -45px; + right: -10px; + //border: 1px red solid; + //border-radius:50% ; + height: 20px; + width: 20px; + .close-div-box { + //border: 1px red solid; + //border-radius:50% ; + height: 20px; + width: 20px; + i { + font-size: 20px; + } + } + } + img { + width: 100%; + height: 100%; + } + } + } +} +</style> diff --git a/src/components/v-navbar.vue b/src/components/v-navbar.vue new file mode 100644 index 0000000..128f38b --- /dev/null +++ b/src/components/v-navbar.vue @@ -0,0 +1,98 @@ +<!-- + * @Author: 小明丶 + * @Date: 2019-08-15 15:44:44 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-22 18:17:12 + * @Description: 头部组件 + --> +<template> + <div class="nav-bar flex-start-g" :class="[fixed ? 'fixed' : '']" :style="{'background':background}"> + <slot name="left-back"> + <svg class="icon" aria-hidden="true" style="width:25px;height:44px;" @click="go"> + <use xlink:href="#iconzuojiantou"></use> + </svg> + </slot> + <h4 class="title text-center-g" :style="{'color':titleColor}">{{title}}</h4> + <div class="rightText" @click="rightClick"> + <slot name="right">{{rightText}}</slot> + </div> + </div> +</template> + +<script> + export default { + name: 'v-navbar', + props: { + title: { + type: String, + require: true, + }, + rightText: { + type: String, + }, + fixed:{ + type:Boolean, + default:false + }, + back:{ + type:String, + }, + background:{ + type:String, + default:'#fff' + }, + titleColor:{ + type:String + }, + + }, + methods:{ + rightClick(){ + this.$emit('right-click') + }, + go(){ + if(this.back){ + this.$router.push(this.back) + }else{ + this.$router.back() + } + } + } + } +</script> + +<style lang="less" scoped> + .nav-bar { + background-color: @c-bg-fff; + .lh(44px); + position: relative; + padding: 0 20px; + z-index: @zIndex-100; + &.fixed{ + position: fixed; + top: 0; + left: 0; + right: 0; + } + + .icon { + z-index: @zIndex-20; + } + + .title { + font-size: @font-16; + position: absolute; + left: 60px; + right: 60px; + } + + .rightText { + font-size: @font-14; + position: absolute; + right: 20px; + height: 44px; + min-width: 50px; + text-align: right; + } + } +</style> diff --git a/src/components/validator/validator.js b/src/components/validator/validator.js new file mode 100644 index 0000000..5b7af6a --- /dev/null +++ b/src/components/validator/validator.js @@ -0,0 +1,307 @@ +/* + * @Author: 小明丶 + * @Date: 2020-05-09 09:35:12 + * @LastEditors: zxq + * @LastEditTime: 2022-03-30 09:33:47 + * @Description: + */ +import { + Toast, +} from 'vant'; +import IDValidator from '@/utils/IDValidator'; +import vNavBar from '../v-navbar'; +import vCell from '../cell/h-cell'; +import hIpt from '../input/h-ipt'; +import hList from '../h-list'; +import upLoadIdCard from '../upload/uploadIdCard' + +var arr = [ + vNavBar, + vCell, + hIpt, + hList, + upLoadIdCard +] + +export default { + install(Vue, opt) { + // 循环注入自定义组件 + arr.forEach(item => { + Vue.component(item.name, item) + }) + + // 老项目的 函数 + Vue.prototype.$tool = { + toast(text) { + Toast(text) + }, + // 金额格式化 + formatMoney(str = 0) { + str = str + ''; + let newStr = ''; + let count = 0; + if (str.indexOf('.') === -1) { + for (let i = str.length - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; + } + count++; + } + str = newStr + '.00'; // 自动补小数点后两位 + return str; + } else { + for (let i = str.indexOf('.') - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; // 逐个字符相接起来 + } + count++; + } + str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3); + return str; + } + }, + // 身份证 中间用* 显示 + cardIDHide(cardid) { + if (cardid) { + return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2'); + } else { + return ''; + } + }, + //手机号,中间四位*显示 + formatPhone(phone) { + return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); + }, + // 电话号码格式 + checkPhone(phone) { + let reg = /^1(3|4|5|6|7|8|9)\d{9}$/ + //let reg = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; + return reg.test(phone); + }, + //座机/手机/400号码验证 + checkCompanyPhone(phone) { + let reg = /^([0-9]{3,4}-)?[0-9]{7,8}$|^1(3|4|5|6|7|8|9)\d{9}$|^\d{3,4}-\d{3,4}-\d{3,4}$/ + return reg.test(phone) + }, + checkEmail(email) { + // 验证邮箱格式 + //let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/; + let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/; + return reg.test(email); + }, + checkVerifyCode(code) { + // 验证验证码格式 + let reg = /^\d{6}$/; + return reg.test(code); + }, + checkDynamicCode(code) { + // 验证邀请码格式 + let reg = /^[A-Za-z0-9]{4}$/; + return reg.test(code); + }, + // password check + checkPassword(password) { + // 验证密码格式 + let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; + return reg.test(password); + }, + // name check + checkName(name) { + // 验证用户名格式 + let reg = /^[\u4E00-\u9FA5]{2,10}$/; + return reg.test(name); + }, + //校验真实姓名 + checkRealName(name) { + // 验证用户名格式 + let reg = /^[\u4E00-\u9FA5]{2,6}$/; + return reg.test(name); + }, + // 账户名称的正则表达式 + checkUsername(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/; + return reg.test(name); + }, + //身份证详细地址验证 + checkCardAddress(address) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{9,30}$/; + return reg.test(address); + }, + //详细地址验证 + checkAddress(address) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{9,30}$/; + return reg.test(address); + }, + // 统一验证 + checkCommonField(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/; + return reg.test(name); + }, + // idCard check + checkIDCard(idCard) { + // 验证身份证格式 + return IDValidator.isValid(idCard); + }, + isIdcard(val) { + let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val); + return result; + }, + checkValEmpty(str) { + // 验证是否为空 + if ( + str === undefined || + str === null || + str.length <= 0 || + str === 'undefined' + ) { + return true; + } else { + return false; + } + }, + // 验证佣金输入金额 + checkCommission(commission) { + // 小于100且后面可以带4个小数点 + let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/; + //一亿以内,保留四位小数 + // /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/ + // 如果通过的话,那么判断小数点的前几位数字 + return reg.test(commission); + }, + // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写 + checkChannelNo(channelNo) { + let reg = /^[\w\d]{4,8}$/; + return reg.test(channelNo); + }, + //验证是否包含空格 + checkSpace(val) { + let reg = /^\s+$/; + if (reg.test(val)) { + return true; + } else { + return false; + } + }, + //将发送请求中的参数格式化,如果为空则转为null + formatReq(obj) { + for (let i in obj) { + let item = obj[i]; + if (item === null) continue; + if ( + item === undefined || + item === '' || + item === 'undefined' || + item.length <= 0 || + JSON.stringify(item) == '{}' + ) { + obj[i] = null; + } + } + return obj; + }, + // 只能输入数字与小数点正则判断 + checkIntegerAndDot(checkVal) { + let dotReg = /\./g; + let IntegerReg = /^[1-9]{1}\d{0,5}$/; + // 如果输入了多个点,直接不符合要求 + if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) { + return false; + // 输入了一个点 + } else if ( + checkVal.match(dotReg) && + checkVal.match(dotReg).length === 1 + ) { + // 开头与结尾都不能出现点,点的前面与后面必须是数字 + let strLen = checkVal.length; + if ( + checkVal.indexOf('.') === 0 || + checkVal.indexOf('.') === strLen - 1 + ) { + return false; + // 超过个数的限制的话 + } else { + return strLen <= 6; + } + // 没有小数点的话,那么就是全部数字进行匹配 + } else if (!checkVal.match(dotReg)) { + return IntegerReg.test(checkVal); + } + }, + //银行卡验证 + bankCard(idCard) { + let reg = /^([1-9]{1})(\d{14,30})$/; + return reg.test(idCard); + }, + //公司名称校验 + checkCompany(name) { + let reg = /^[\u4e00-\u9fa5a-zA-Z]{2,20}$/; + return reg.test(name); + }, + date(date, fmt) { + if (!date) { + return null; + } + if (typeof date === 'string') { + date = new Date(date.replace(/-/g, '/')); + } + if (typeof date === 'number') { + date = new Date(date); + } + if (fmt === undefined) { + return Number(date); + } else { + var o = { + 'M+': date.getMonth() + 1, + 'D+': date.getDate(), + 'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + S: date.getMilliseconds() + }; + var week = { + '0': '\u65e5', + '1': '\u4e00', + '2': '\u4e8c', + '3': '\u4e09', + '4': '\u56db', + '5': '\u4e94', + '6': '\u516d' + }; + if (/(Y+)/.test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + (date.getFullYear() + '').substr(4 - RegExp.$1.length) + ); + } + if (/(E+)/.test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + (RegExp.$1.length > 1 + ? RegExp.$1.length > 2 + ? '\u661f\u671f' + : '\u5468' + : '') + week[date.getDay() + ''] + ); + } + for (var k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 + ? o[k] + : ('00' + o[k]).substr(('' + o[k]).length) + ); + } + } + return fmt; + } + }, + } + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..2ed246d --- /dev/null +++ b/src/index.js @@ -0,0 +1,61 @@ +/* + * @Descripttion: 修改配置 + * @Author: TM丶 + * @Date: 2019-08-14 14:05:51 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2021-10-28 15:20:31 + */ + + +import Vue from 'vue'; +import 'element-ui/lib/theme-chalk/index.css'; +import { Select } from 'element-ui' +import Validator from '@/utils/formValidator'; +import vantRegister from '@/components/validator/validator' + +import store from "@/store/index"; +import router from "@/router/index"; +import App from "./App.vue"; +import api from "@/api"; //接口 +import filters from '@/utils/filters'; +// import Vant from 'vant' +// import 'vant/lib/vant-css/index.css' + +import androidBack from './utils/pageBackByAndroid'; +Vue.config.productionTip = false; // 关闭生产的提示 + + +import "@/style/normalize.less"; +import "@/style/common.less"; + + +Vue.use(api) +Vue.use(filters) +Vue.use(Validator) +Vue.use(vantRegister) +Vue.use(Select) +// Vue.use(Vant) + + +new Vue({ + store, + router, + mounted() { + var u = navigator.userAgent; + if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { + window.addEventListener("resize", function() { + let el = document.activeElement; + if(el.tagName=="INPUT" || el.tagName=="TEXTAREA") { + window.setTimeout(function() { + el.scrollIntoView({ + behavior:'smooth', + }); + },16.7); + } + }) + } + }, + render: h => h(App) +}).$mount("#app") + +androidBack.androidBackBtn(); diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..a70173f --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,46 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-19 15:23:17 + * @LastEditors: zxq + * @LastEditTime: 2022-08-02 17:27:35 + * @Description: + */ +import Vue from "vue"; +import VueRouter from 'vue-router'; +import routes from './routes'; +import Store from '@/store'; +Vue.use(VueRouter); + +let router = new VueRouter({ + mode:"hash", //history + routes, + scrollBehavior (to, from, savedPosition) { + return { + x:0, + y:0 + } + }, +}) + +// 全局前置守卫:页面跳转前拦截 +router.beforeEach((to, from, next) => { + if(to.meta.isLogin){ + next() + }else{ + // 需要登录的页面 + if(Store.state.sessionId){ + next() + }else{ + + next('/login') + } + } +}) + + +//全局后置守卫:页面跳转后执行 +router.afterEach((to, from) => { + +}) + +export default router; diff --git a/src/router/routes.js b/src/router/routes.js new file mode 100644 index 0000000..ab6e40a --- /dev/null +++ b/src/router/routes.js @@ -0,0 +1,140 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-13 18:10:18 + * @LastEditors: zxq + * @LastEditTime: 2022-08-02 17:27:11 + * @Description: + */ +export default [ + // { + // path:"/", + // name:'front-login', + // component:()=>import("@/views/user/front-login.vue"), + // meta:{ + // isLogin:true + // } + // }, + { + path:"/login", + name:'login', + component:()=>import("@/views/user/login.vue"), + meta:{ + isLogin:true + } + }, + { + path:"/agreement", + name:'agreement', + component:()=>import("@/views/user/agreement.vue"), + meta:{ + isLogin:true + } + }, + // { + // path:"/agreement2", + // name:'agreement2', + // component:()=>import("@/views/user/agreement2.vue"), + // }, + { + path:"/", + name:'home', + component:()=>import("@/views/home.vue"), + children:[ + { + path:'/home/index', + name:'index', + component:()=>import("@/views/homeIndex/home-index.vue"), + }, + { + path:'/home/personal', + name:'personal', + component:()=>import("@/views/personal/personal-center.vue") + } + ] + }, + { + path:'/order-handling', + name:'order-handling', + component:()=>import('@/views/order-handling/order-handling.vue') + },//扫码办单订单信息页面 + { + path:'/order-handling/upload-IDcard', + name:'upload-IDcard', + component:()=>import('@/views/order-handling/upload-IDcard.vue') + },//进入办单第一步上传身份证 + { + path:'/order-handling/face-recognition', + name:'face-recognition', + component:()=>import('@/views/order-handling/face-recognition.vue') + },//进入办单人脸识别结果页面 + { + path:'/order-handling/upload-userInfo', + name:'upload-userinfo', + component:()=>import('@/views/order-handling/upload-userInfo.vue') + },//办单人信息填写页面 + { + path:'/order-handling/contract-signing', + name:'contract-signing', + component:()=>import('@/views/order-handling/contract-signing.vue') + },//合同签署页面 + { + path:'/order-handling/bank-list', + name:'bank-list', + component:()=>import('@/views/order-handling/bank-list.vue') + },//银行选择页面 + { + path:'/order-handling/image-upload', + name:'image-upload', + component:()=>import('@/views/order-handling/image-upload.vue') + },//图像上传页面 + { + path:'/order-handling/approval-results', + name:'approval-results', + component:()=>import('@/views/order-handling/approval-results.vue') + },//审批结果页面 + { + path:'/order/my-order', + name:'my-order', + component:()=>import('@/views/order/my-order.vue') + }, + { + path:'/order/order-detail', + name:'order-detail', + component:()=>import('@/views/order/order-detail.vue') + }, + { + path:'/order/repayment-plan', + name:'repayment-plan', + component:()=>import('@/views/order/repayment-plan.vue') + }, + { + path:'/order/contract', + name:'order-contract', + component:()=>import('@/views/order/contract.vue') + }, + { + path:'/order/settle', + name:'settle', + component:()=>import('@/views/order/settle.vue') + }, + { + path:'/order/settlementEarly', + name:'settle', + component:()=>import('@/views/order/settlementEarly.vue') + }, + { + path:'/order/pay-result', + name:'pay-result', + component:()=>import('@/views/order/pay-result.vue') + }, + { + path:'/order/active-repayment', + name:'active-repayment', + component:()=>import('@/views/order/active-repayment.vue') + }, + { + path:'/bankCard/index', + name:'active-repayment', + component:()=>import('@/views/bankCard/index.vue') + }, +] diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..3f24ecd --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,147 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-19 15:23:17 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2021-11-01 11:01:36 + * @Description: + */ +import Vue from 'vue'; +import Vuex from "vuex"; +import md5 from 'blueimp-md5'; +import mutations from "./mutations"; +// 数据持久化到session的插件 +import createPersistedState from 'vuex-persistedstate'; +import {calcArea} from '@/utils/index'; + +import { + SET_SESSION_ID, + SET_FOOTER_NAV, + SET_USER_PAGE, + SET_USER_INFO, + SET_AREA_LIST, + SET_MESSAGE_CONUT, + SET_INVITE_CODE, +} from './mutations-types'; + +Vue.use(Vuex); + +export default new Vuex.Store({ + plugins: [createPersistedState({ storage: window.sessionStorage })], + state: { + AppLoading: false,//加载 + sessionId: '',//判断是否登录 + userinfo: {}, //用户信息 + footerNav:[],//底部导航 + areaList:[], + msgCount: {}, + }, + getters: { + orgType(state){ + return state.userinfo.orgType + }, + orgId(state) { + return state.userinfo.orgId + } + }, + mutations, + actions: { + openIdLogin({ commit, dispatch }, { vm, openId, next }){ + let passwordLogin = { + openId:openId + }; + //dispatch('getWechatUserInfo',{vm,openId,next}) + Vue.prototype.$api.openIdLogin(passwordLogin).then(res=>{ + if(res.body){ + let userInfo = {} + userInfo.mblNo = res.body.account;//手机号修改成账号 + userInfo.hasBankCard = res.body.hasBankCard;//1标识有我的银行卡0未绑定银行卡 + commit(SET_USER_INFO,userInfo) + commit(SET_SESSION_ID, res.body.sessionId);//存储sessionId用于判断是否登录 + dispatch('setUserMenu',{ vm, next }) + vm.$router.push('/home/index')//跳转到指定页面 + }else{ + vm.$router.push('/login') + } + }).catch(err=>{ + //vm.$router.push('/login') + }) + }, + login({ commit, dispatch }, { vm, mblNo, verCode, openId, next }) { + let tmpCode = md5(mblNo + verCode); + let passwordLogin = { + mblNo: mblNo, + verCode: verCode, + openId:openId + }; + //dispatch('getWechatUserInfo',{vm,openId,next}) + Vue.prototype.$api.login(passwordLogin).then(res => { + // sessionStorage.jumpUrl = res.body.clientAccessDomain; + let { + sessionId, + mblNo + } = res.body; + let userInfo = {} + userInfo.mblNo = res.body.account;//手机号修改成账号 + userInfo.hasBankCard = res.body.hasBankCard;//1标识有我的银行卡0未绑定银行卡 + commit(SET_SESSION_ID, sessionId);//存储sessionId用于判断是否登录 + commit(SET_USER_INFO,userInfo) + dispatch('setUserMenu',{ vm, next }) + vm.$router.push('/home/index')//跳转到指定页面 + }); + }, + // 获取微信用户信息 + getWechatUserInfo({commit},{vm,openId,next}){ + Vue.prototype.$api.wechatGetUserInfo({ + openId:openId + }).then(res=>{ + let obj = {} + obj = res.body + }) + }, + // 根据不同的权限设置用户拥有的菜单 + setUserMenu({ commit }, { vm, lastLoginMgrId, next }) { + var arr = [ + { + icon:'iconshouye', + icon_h:'iconshouye_h', + title:'首页', + to:'/home/index' + }, + { + icon:'icongerenzhongxin', + icon_h:'icongerenzhongxin_h', + title:'我的', + to:'/home/personal' + } + ] + commit(SET_FOOTER_NAV, arr); + }, + // 获取验证码 + getVercode({ commit },obj){ + let form = { + mblNo:obj.mblNo, + verCodeType:obj.verCodeType + } + Vue.prototype.$api.getVerCode(form).then(res=>{ + obj.vm.$tool.toast('验证码获取成功') + }) + }, + // 获取地区列表 + getArea({commit}) { + Vue.prototype.$api.areaOptions().then((res) => { + let provList = res.body; + commit(SET_AREA_LIST,provList) + }).catch((err) => { + + }); + }, + //消息count + getCount({commit}) { + + } + }, + modules: { + + } +}) + diff --git a/src/store/mutations-types.js b/src/store/mutations-types.js new file mode 100644 index 0000000..cde345b --- /dev/null +++ b/src/store/mutations-types.js @@ -0,0 +1,28 @@ +/* + * @Descripttion: 使用常量替代 mutation 事件类型,把这些常量放在单独的文件中可以让整个 app 包含的 mutation 一目了然 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-04-06 21:41:06 + * @LastEditTime: 2020-05-08 14:12:42 + */ + +// 设置加载状态 +export const SET_APP_LOADING = "SET_APP_LOADING"; +// sessionId 判断用户登录状态 +export const SET_SESSION_ID = "SET_SESSION_ID"; +// 设置用户信息 +export const SET_USER_INFO = "SET_USER_INFO"; + +// 设置地区列表 +export const SET_AREA_LIST = "SET_AREA_LIST"; + +//消息 +export const SET_MESSAGE_CONUT = "SET_MESSAGE_CONUT"; + +// 设置用户的底部导航菜单 +export const SET_FOOTER_NAV = "SET_FOOTER_NAV"; + +// 设置用户的权限页面 +export const SET_USER_PAGE = "SET_USER_PAGE"; +// 设置用户邀请码 +export const SET_INVITE_CODE = "SET_INVITE_CODE"; diff --git a/src/store/mutations.js b/src/store/mutations.js new file mode 100644 index 0000000..c9fcc5c --- /dev/null +++ b/src/store/mutations.js @@ -0,0 +1,55 @@ +/* + * @Descripttion: 项目的mutations + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-04-06 21:40:25 + * @LastEditTime: 2020-06-22 14:34:57 + */ +import { + SET_APP_LOADING, + SET_USER_PAGE, + SET_FOOTER_NAV, + SET_SESSION_ID, + SET_USER_INFO, + SET_AREA_LIST, + SET_MESSAGE_CONUT, + SET_INVITE_CODE +} from "./mutations-types"; + +//使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名 +export default { + //设置loading状态 + [SET_APP_LOADING](state, val) { + state.AppLoading = val; + }, + //获取邀请码 + [SET_INVITE_CODE](state, val) { + state.inviteCode = val; + }, + [SET_AREA_LIST](state, val) { + state.areaList = val; + }, + [SET_MESSAGE_CONUT](state, val) { + state.msgCount = val; + }, + [SET_SESSION_ID](state, val) { + state.sessionId = val; + }, + [SET_USER_INFO](state, val) { + state.userinfo = val; + }, + [SET_USER_PAGE](state, val) { + if (Array.isArray(val)) { + state.userPage = val; + } + }, + [SET_FOOTER_NAV](state, val) { + if (Array.isArray(val)) { + state.footerNav = val; + } + }, + // 设置消息列表 + // [SET_MESSAGE_LIST](state, val) { + // state.messageList = val; + // }, +} \ No newline at end of file diff --git a/src/style/common.less b/src/style/common.less new file mode 100644 index 0000000..da3063a --- /dev/null +++ b/src/style/common.less @@ -0,0 +1,191 @@ +/* + * @Descripttion: 基础css 类,全局类名以 -g 结尾来区分 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-03-11 21:02:51 + * @LastEditTime: 2020-04-24 15:56:39 + */ + + html,body{ + height: 100%; + } + + body { + font-size: @font-14; + color: @c-333; + scroll-behavior: smooth; +} + +p, +h1, +h2, +h3, +h4, +h5, +h6, +ul { + margin: 0; +} + + + +.font-11-g{ + font-size: @font-11; +} + +.font-12-g{ + font-size: @font-12; +} + +.font-14-g{ + font-size: @font-14; +} + + +.font-16-g{ + font-size: @font-16; +} + + + +.height-44-g{ + height: 44px; + width: 100%; +} +.height-20-g{ + height: 20px; + width: 100%; +} + + + +.c-text-999-g{ + color: @c-text-999; +} + +.c-text-666-g{ + color: @c-text-666; +} + +hr{ + border: none; +} + +.h-100-g{ + min-height: 100%; +} + +.w-100-g{ + width: 100%; +} + +.fl-g { + float: left; +} + +.fr-g { + float: right; +} + + +.clearfix-g { + zoom: 1; + + &:after { + content: ""; + display: block; + clear: both; + } +} + +.text-center-g{ + text-align: center; +} + +.img-fluid-g { + max-width: 100%; + height: auto; +} + +.p-center-g{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); +} + +.hidden-g { + display: none; +} + +.flex-start-g { + .flex(flex-start); +} + +.flex-center-g { + .flex(center); +} + +.flex-between-g { + .flex(space-between); +} + +.flex-around-g { + .flex(space-around); +} + +.flex-end-g { + .flex(flex-end); +} + +.flex-1-g{ + flex:1; +} + +/*单行溢出*/ +.text-clip-g { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +// 滚动条样式 +::-webkit-scrollbar { + max-width: 5px; + max-height: 8px; +} + + +::-webkit-scrollbar-thumb { + background-color: #C9CAD3; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; +} + +// placeholder样式控制 +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: @c-999; + font-size: @font-14; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: @c-999; + font-size: @font-14; +} + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: @c-999; + font-size: @font-14; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: @c-999; + font-size: @font-14; +} diff --git a/src/style/mixin.less b/src/style/mixin.less new file mode 100644 index 0000000..b5eb120 --- /dev/null +++ b/src/style/mixin.less @@ -0,0 +1,98 @@ +/** + * Created by c.y on 2018-3-1 + * 文件说明: 这个是定义项目全局的mixin + */ + +// flex布局 +.flexLayout(@justify:flex-start,@align:center,@direction:row) { + display: flex; + justify-content: @justify; + align-items: @align; + flex-direction: @direction; +} + +// 清除浮动 +.clearfix() { + zoom: 1; + &:before, + &:after { + content: ''; + display: table; + } + &:after { + clear: both; + visibility: hidden; + font-size: 0; + height: 0; + } +} + +// 单行文本超出显示省略号 +.ellipsis(@w:auto) { + width: @w; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; +} + +// 多行文本超出显示省略号 +.ellipsisLn(@line) { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: @line; + word-break: break-all; +} + +// 单词换行 +.text_wrap() { + word-wrap: break-word; + word-break: break-all; +} + +// 设置箭头 arrowSize--箭头的大小, borderColor---箭头的颜色,@borderWidth箭头的粗细 +._setArrow(@arrowsize, @borderColor, @borderWidth) { + display: inline-block; + height: @arrowsize; + width: @arrowsize; + border-width: @borderWidth @borderWidth 0 0; + border-color: @borderColor; + border-style: solid; +} + +// 示例调用 .setArrow(top, 10px, red, 2px);向上箭头 +.setArrow(@direction, @arrowsize, @borderColor, @borderWidth) + when + (@direction = top) { + ._setArrow(@arrowsize, @borderColor, @borderWidth); + transform: matrix(0.71, -0.71, 0.71, 0.71, 0, 0); // rotate(-45deg) +} + +.setArrow(@direction, @arrowsize, @borderColor,@borderWidth) + when + (@direction = right) { + ._setArrow(@arrowsize, @borderColor, @borderWidth); + transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); // rotate(45deg); + position: relative; + top: -1px; +} + +.setArrow(@direction, @arrowsize, @borderColor,@borderWidth) + when + (@direction = down) { + ._setArrow(@arrowsize, @borderColor, @borderWidth); + transform: matrix(-0.71, 0.71, -0.71, -0.71, 0, 0); // rotate(135deg); + position: relative; + top: -1.5px; +} + +.setArrow(@direction, @arrowsize, @borderColor,@borderWidth) + when + (@direction = left) { + ._setArrow(@arrowsize, @borderColor, @borderWidth); + transform: matrix(-0.71, -0.71, 0.71, -0.71, 0, 0); // rotate(-135deg); + position: relative; + top: -1px; +} diff --git a/src/style/mixins.less b/src/style/mixins.less new file mode 100644 index 0000000..6d04221 --- /dev/null +++ b/src/style/mixins.less @@ -0,0 +1,139 @@ +/* + * @Descripttion: 全局mixins变量 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-03-11 21:02:51 + * @LastEditTime: 2019-08-30 10:42:05 + */ + @import "./themes.less"; + + /* 字体 大小*/ + @font-10: 10px; + @font-11: 11px; + @font-12: 12px; + @font-13: 13px; + @font-14: 14px; + @font-15: 15px; + @font-16: 16px; + @font-17: 17px; + @font-18: 18px; + @font-20: 20px; + @font-24: 24px; + @font-28: 28px; + + + /* z-index*/ + @zIndex-10:10; + @zIndex-20:20; + @zIndex-30:30; + @zIndex-40:40; + @zIndex-50:50; + @zIndex-100:100; + @zIndex-200:200; + @zIndex-300:300; + @zIndex-400:400; + @zIndex-500:500; + @zIndex-999:999; + @zIndex-9999:9999; + +// 新主题色 + @c-main: #896EDB; + @c-success: #19BE6B; + @c-lose:#ED4014; + // flex布局 + .flex(@x:flex-start,@y:center,@wrap:nowrap,@dir:row) { + display: flex; + justify-content: @x; + align-items: @y; + flex-wrap: @wrap; + flex-direction: @dir; + } + +// 老项目复制过来的 兼任! + .flexLayout(@justify:flex-start,@align:center,@direction:row) { + display: flex; + justify-content: @justify; + align-items: @align; + flex-direction: @direction; +} + + + .lh(@val){ + height: @val; + line-height: @val; + } + + + /*多行溢出 手机端使用*/ + .text-clip-double(@num:2) { + display: -webkit-box; + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: @num; + } + + // 定位到html +// .p-fixed(@bg:#fff) { +// position: fixed; +// top: 0; +// right: 0; +// bottom: 0; +// left: 0; +// overflow-y: scroll; +// background-color: @bg; +// } + + + + + + +// 老项目的变量 +@fontEN: -apple-system-font, "Helvetica Neue"; +@fontCN: "PingFang SC", "Microsoft YaHei", "sans-serif", "Helvetica Neue"; +@fontDefault: @fontEN, @fontCN; + +@font-size-tiny: 10Px; +@font-size-small: 12Px; +@font-size-medium: 14Px; +@font-size-base: 15Px; +@font-size-primary: 16Px; +@font-size-large: 18Px; + +@font-line-height-base: 1; +@font-line-height-medium: 1.3; +@font-line-height-large: 1.5; + +@font-weight-normal: normal; +@font-weight-bold: bold; +@font-weight-base: 400; +@font-weight-thin: 200; + +@border-radius-normal-size: 7.5px; + +@color-white: #fff; +@backgroundColor: #f1f1f1; + +@color-text-main: #3a3a3a; //场景分期文字主要颜色 +@color-text-second: #666; //场景分期文字第二颜色 +@color-text-three: #bfa073; //场景分期文字第三颜色 +@color-text-three-light: rgba(191, 160, 115, 0.05); //场景分期文字第三颜色-淡色 +@color-text-placeholder: #a3a3a3; // 场景分期输入框placeholder暗提示颜色 +@color-line: #d9d9d9; // 边框颜色 +@color-border-theme: #bfa073; // 边框主题颜色 + +@color-button-default: #3a3a3a; +@color-button-normal: #bfa073; + +@tabbar-text-active-color: #bfa073; + +@switch-checked-bg-color: #bfa073; +@switch-checked-border-color: #bfa073; + +@calendar-arrow-color: #444; +@calendar-today-font-color: #bfa073; +@calendar-selected-bg-color: #bfa073; + + diff --git a/src/style/myVant.less b/src/style/myVant.less new file mode 100644 index 0000000..8936816 --- /dev/null +++ b/src/style/myVant.less @@ -0,0 +1,12 @@ +.ipt, + .fenqi { + & { + border-bottom: 1px solid #e0e1e6; + color: #333; + font-size: 16px; + .van-field__control{ + color: #999 !important; + font-size: 14px !important; + } + } + } \ No newline at end of file diff --git a/src/style/myVideo.less b/src/style/myVideo.less new file mode 100644 index 0000000..26cb77e --- /dev/null +++ b/src/style/myVideo.less @@ -0,0 +1,8 @@ +/* +*只用于video组件的样式调整 +*/ +.vjs-big-play-button{ + // position: absolute; + top: 35% !important; + left: 35% !important; +} \ No newline at end of file diff --git a/src/style/normalize.less b/src/style/normalize.less new file mode 100644 index 0000000..b7fefd2 --- /dev/null +++ b/src/style/normalize.less @@ -0,0 +1,219 @@ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} + + +body { + margin: 0; +} + +main { + display: block; +} + + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + + + +a { + background-color: transparent; +} + + + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + + +b, +strong { + font-weight: bolder; +} + + + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + + +small { + font-size: 80%; +} + + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + + + +img { + border-style: none; +} + + + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + margin: 0; +} + + + +button, +input { + overflow: visible; +} + + + +button, +select { + text-transform: none; +} + + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + + + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + + +progress { + vertical-align: baseline; +} + + + +textarea { + overflow: auto; +} + + + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} + + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + + + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + + +details { + display: block; +} + + +summary { + display: list-item; +} + + + +template { + display: none; +} + + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/src/style/themes.css b/src/style/themes.css new file mode 100644 index 0000000..b3a1aac --- /dev/null +++ b/src/style/themes.css @@ -0,0 +1,13 @@ +/* + * @Descripttion: 项目色彩相关配置 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-03-11 21:02:51 + * @LastEditTime: 2020-05-21 16:51:33 + */ +/*color*/ +/* 边框 颜色*/ +/* 文字 颜色*/ +/* 背景 颜色*/ +/* 边框 */ +/* boxshadow */ diff --git a/src/style/themes.less b/src/style/themes.less new file mode 100644 index 0000000..1d70ce7 --- /dev/null +++ b/src/style/themes.less @@ -0,0 +1,51 @@ +/* + * @Descripttion: 项目色彩相关配置 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-03-11 21:02:51 + * @LastEditTime: 2020-05-21 16:51:33 + */ + +/*color*/ +@c-default:#5194FE; + +@c-fff:#ffffff; +@c-f5:#F5F5F7; +@c-eee:#eeeeee; +@c-333:#333333; +@c-666:#666666; +@c-999:#999999; +@c-green:#19BE6B; +@c-red:#ED4014; +@c-blue:#FF9900; +@c-black:#423D5D; +@c-555:#55516e; +@c-fe:#FEFEFF; +@c-back:#F5F5F7; +/* 边框 颜色*/ +// @color-border-default:@c-gray-default; + +/* 文字 颜色*/ +@c-text-default:@c-default; +@c-text-333:@c-333; +@c-text-666:@c-666; +@c-text-999:@c-999; +@c-text-fff:@c-fff; +@c-text-black:@c-black; +@c-text-fe:@c-fe; +@c-text-f5:@c-f5; + +/* 背景 颜色*/ +@c-bg-default:@c-default; +@c-bg-f5:@c-f5; +@c-bg-eee:@c-eee; +@c-bg-fff:@c-fff; +@c-bg-black:@c-black; +@c-bg-555:@c-555; + +/* 边框 */ +// @border-default:0.5Px solid @c-gray-e6; + +/* boxshadow */ +@shadow-default:0 2px 10px 0 rgba(0,39,125,0.1); + diff --git a/src/utils/IDValidator.js b/src/utils/IDValidator.js new file mode 100644 index 0000000..8dd1881 --- /dev/null +++ b/src/utils/IDValidator.js @@ -0,0 +1,3844 @@ +/** + * Created by 陈伟 + * 2017/11/21. + * 身份证检查 + */ +let GB2260 = { + '110000': '北京市', + '110100': '北京市市辖区', + '110101': '北京市东城区', + '110102': '北京市西城区', + '110103': '北京市崇文区', + '110104': '北京市宣武区', + '110105': '北京市朝阳区', + '110106': '北京市丰台区', + '110107': '北京市石景山区', + '110108': '北京市海淀区', + '110109': '北京市门头沟区', + '110111': '北京市房山区', + '110112': '北京市通州区', + '110113': '北京市顺义区', + '110200': '北京市县', + '110221': '北京市昌平县', + '110224': '北京市大兴县', + '110226': '北京市平谷县', + '110227': '北京市怀柔县', + '110228': '北京市密云县', + '110229': '北京市延庆县', + '120000': '天津市', + '120100': '天津市市辖区', + '120101': '天津市和平区', + '120102': '天津市河东区', + '120103': '天津市河西区', + '120104': '天津市南开区', + '120105': '天津市河北区', + '120106': '天津市红桥区', + '120107': '天津市塘沽区', + '120108': '天津市汉沽区', + '120109': '天津市大港区', + '120110': '天津市东丽区', + '120111': '天津市西青区', + '120112': '天津市津南区', + '120113': '天津市北辰区', + '120200': '天津市县', + '120221': '天津市宁河县', + '120222': '天津市武清县', + '120223': '天津市静海县', + '120224': '天津市宝坻县', + '120225': '天津市蓟县', + '130000': '河北省', + '130100': '河北省石家庄市', + '130101': '河北省石家庄市市辖区', + '130102': '河北省石家庄市长安区', + '130103': '河北省石家庄市桥东区', + '130104': '河北省石家庄市桥西区', + '130105': '河北省石家庄市新华区', + '130106': '河北省石家庄市郊区', + '130107': '河北省石家庄市井陉矿区', + '130121': '河北省石家庄市井陉县', + '130123': '河北省石家庄市正定县', + '130124': '河北省石家庄市栾城县', + '130125': '河北省石家庄市行唐县', + '130126': '河北省石家庄市灵寿县', + '130127': '河北省石家庄市高邑县', + '130128': '河北省石家庄市深泽县', + '130129': '河北省石家庄市赞皇县', + '130130': '河北省石家庄市无极县', + '130131': '河北省石家庄市平山县', + '130132': '河北省石家庄市元氏县', + '130133': '河北省石家庄市赵县', + '130181': '河北省石家庄市辛集市', + '130182': '河北省石家庄市藁城市', + '130183': '河北省石家庄市晋州市', + '130184': '河北省石家庄市新乐市', + '130185': '河北省石家庄市鹿泉市', + '130200': '河北省唐山市', + '130201': '河北省唐山市市辖区', + '130202': '河北省唐山市路南区', + '130203': '河北省唐山市路北区', + '130204': '河北省唐山市古冶区', + '130205': '河北省唐山市开平区', + '130206': '河北省唐山市新区', + '130221': '河北省唐山市丰润县', + '130223': '河北省唐山市滦县', + '130224': '河北省唐山市滦南县', + '130225': '河北省唐山市乐亭县', + '130227': '河北省唐山市迁西县', + '130229': '河北省唐山市玉田县', + '130230': '河北省唐山市唐海县', + '130281': '河北省唐山市遵化市', + '130282': '河北省唐山市丰南市', + '130283': '河北省唐山市迁安市', + '130300': '河北省秦皇岛市秦皇岛市', + '130301': '河北省秦皇岛市市辖区', + '130302': '河北省秦皇岛市海港区', + '130303': '河北省秦皇岛市山海关区', + '130304': '河北省秦皇岛市北戴河区', + '130321': '河北省秦皇岛市青龙满族自治县', + '130322': '河北省秦皇岛市昌黎县', + '130323': '河北省秦皇岛市抚宁县', + '130324': '河北省秦皇岛市卢龙县', + '130400': '河北省邯郸市邯郸市', + '130401': '河北省邯郸市市辖区', + '130402': '河北省邯郸市邯山区', + '130403': '河北省邯郸市丛台区', + '130404': '河北省邯郸市复兴区', + '130406': '河北省邯郸市峰峰矿区', + '130421': '河北省邯郸市邯郸县', + '130423': '河北省邯郸市临漳县', + '130424': '河北省邯郸市成安县', + '130425': '河北省邯郸市大名县', + '130426': '河北省邯郸市涉县', + '130427': '河北省邯郸市磁县', + '130428': '河北省邯郸市肥乡县', + '130429': '河北省邯郸市永年县', + '130430': '河北省邯郸市邱县', + '130431': '河北省邯郸市鸡泽县', + '130432': '河北省邯郸市广平县', + '130433': '河北省邯郸市馆陶县', + '130434': '河北省邯郸市魏县', + '130435': '河北省邯郸市曲周县', + '130481': '河北省邯郸市武安市', + '130500': '河北省邢台市', + '130501': '河北省邢台市市辖区', + '130502': '河北省邢台市桥东区', + '130503': '河北省邢台市桥西区', + '130521': '河北省邢台市邢台县', + '130522': '河北省邢台市临城县', + '130523': '河北省邢台市内丘县', + '130524': '河北省邢台市柏乡县', + '130525': '河北省邢台市隆尧县', + '130526': '河北省邢台市任县', + '130527': '河北省邢台市南和县', + '130528': '河北省邢台市宁晋县', + '130529': '河北省邢台市巨鹿县', + '130530': '河北省邢台市新河县', + '130531': '河北省邢台市广宗县', + '130532': '河北省邢台市平乡县', + '130533': '河北省邢台市威县', + '130534': '河北省邢台市清河县', + '130535': '河北省邢台市临西县', + '130581': '河北省邢台市南宫市', + '130582': '河北省邢台市沙河市', + '130600': '河北省保定市', + '130601': '河北省保定市市辖区', + '130602': '河北省保定市新市区', + '130603': '河北省保定市北市区', + '130604': '河北省保定市南市区', + '130621': '河北省保定市满城县', + '130622': '河北省保定市清苑县', + '130623': '河北省保定市涞水县', + '130624': '河北省保定市阜平县', + '130625': '河北省保定市徐水县', + '130626': '河北省保定市定兴县', + '130627': '河北省保定市唐县', + '130628': '河北省保定市高阳县', + '130629': '河北省保定市容城县', + '130630': '河北省保定市涞源县', + '130631': '河北省保定市望都县', + '130632': '河北省保定市安新县', + '130633': '河北省保定市易县', + '130634': '河北省保定市曲阳县', + '130635': '河北省保定市蠡县', + '130636': '河北省保定市顺平县', + '130637': '河北省保定市博野县', + '130638': '河北省保定市雄县', + '130681': '河北省保定市涿州市', + '130682': '河北省保定市定州市', + '130683': '河北省保定市安国市', + '130684': '河北省保定市高碑店市', + '130700': '河北省张家口市', + '130701': '河北省张家口市市辖区', + '130702': '河北省张家口市桥东区', + '130703': '河北省张家口市桥西区', + '130705': '河北省张家口市宣化区', + '130706': '河北省张家口市下花园区', + '130721': '河北省张家口市宣化县', + '130722': '河北省张家口市张北县', + '130723': '河北省张家口市康保县', + '130724': '河北省张家口市沽源县', + '130725': '河北省张家口市尚义县', + '130726': '河北省张家口市蔚县', + '130727': '河北省张家口市阳原县', + '130728': '河北省张家口市怀安县', + '130729': '河北省张家口市万全县', + '130730': '河北省张家口市怀来县', + '130731': '河北省张家口市涿鹿县', + '130732': '河北省张家口市赤城县', + '130733': '河北省张家口市崇礼县', + '130800': '河北省承德市', + '130801': '河北省承德市市辖区', + '130802': '河北省承德市双桥区', + '130803': '河北省承德市双滦区', + '130804': '河北省承德市鹰手营子矿区', + '130821': '河北省承德市承德县', + '130822': '河北省承德市兴隆县', + '130823': '河北省承德市平泉县', + '130824': '河北省承德市滦平县', + '130825': '河北省承德市隆化县', + '130826': '河北省承德市丰宁满族自治县', + '130827': '河北省承德市宽城满族自治县', + '130828': '河北省承德市围场满族蒙古族自治县', + '130900': '河北省沧州市', + '130901': '河北省沧州市市辖区', + '130902': '河北省沧州市新华区', + '130903': '河北省沧州市运河区', + '130921': '河北省沧州市沧县', + '130922': '河北省沧州市青县', + '130923': '河北省沧州市东光县', + '130924': '河北省沧州市海兴县', + '130925': '河北省沧州市盐山县', + '130926': '河北省沧州市肃宁县', + '130927': '河北省沧州市南皮县', + '130928': '河北省沧州市吴桥县', + '130929': '河北省沧州市献县', + '130930': '河北省沧州市孟村回族自治县', + '130981': '河北省沧州市泊头市', + '130982': '河北省沧州市任丘市', + '130983': '河北省沧州市黄骅市', + '130984': '河北省沧州市河间市', + '131000': '河北省廊坊市', + '131001': '河北省廊坊市市辖区', + '131002': '河北省廊坊市安次区', + '131022': '河北省廊坊市固安县', + '131023': '河北省廊坊市永清县', + '131024': '河北省廊坊市香河县', + '131025': '河北省廊坊市大城县', + '131026': '河北省廊坊市文安县', + '131028': '河北省廊坊市大厂回族自治县', + '131081': '河北省廊坊市霸州市', + '131082': '河北省廊坊市三河市', + '131100': '河北省衡水市', + '131101': '河北省衡水市市辖区', + '131102': '河北省衡水市桃城区', + '131121': '河北省衡水市枣强县', + '131122': '河北省衡水市武邑县', + '131123': '河北省衡水市武强县', + '131124': '河北省衡水市饶阳县', + '131125': '河北省衡水市安平县', + '131126': '河北省衡水市故城县', + '131127': '河北省衡水市景县', + '131128': '河北省衡水市阜城县', + '131181': '河北省衡水市冀州市', + '131182': '河北省衡水市深州市', + '140000': '山西省', + '140100': '山西省太原市', + '140101': '山西省太原市市辖区', + '140105': '山西省太原市小店区', + '140106': '山西省太原市迎泽区', + '140107': '山西省太原市杏花岭区', + '140108': '山西省太原市尖草坪区', + '140109': '山西省太原市万柏林区', + '140110': '山西省太原市晋源区', + '140121': '山西省太原市清徐县', + '140122': '山西省太原市阳曲县', + '140123': '山西省太原市娄烦县', + '140181': '山西省太原市古交市', + '140200': '山西省大同市', + '140201': '山西省大同市市辖区', + '140202': '山西省大同市城区', + '140203': '山西省大同市矿区', + '140211': '山西省大同市南郊区', + '140212': '山西省大同市新荣区', + '140221': '山西省大同市阳高县', + '140222': '山西省大同市天镇县', + '140223': '山西省大同市广灵县', + '140224': '山西省大同市灵丘县', + '140225': '山西省大同市浑源县', + '140226': '山西省大同市左云县', + '140227': '山西省大同市大同县', + '140300': '山西省阳泉市', + '140301': '山西省阳泉市市辖区', + '140302': '山西省阳泉市城区', + '140303': '山西省阳泉市矿区', + '140311': '山西省阳泉市郊区', + '140321': '山西省阳泉市平定县', + '140322': '山西省阳泉市盂县', + '140400': '山西省长治市', + '140401': '山西省长治市市辖区', + '140402': '山西省长治市城区', + '140411': '山西省长治市郊区', + '140421': '山西省长治市长治县', + '140423': '山西省长治市襄垣县', + '140424': '山西省长治市屯留县', + '140425': '山西省长治市平顺县', + '140426': '山西省长治市黎城县', + '140427': '山西省长治市壶关县', + '140428': '山西省长治市长子县', + '140429': '山西省长治市武乡县', + '140430': '山西省长治市沁县', + '140431': '山西省长治市沁源县', + '140481': '山西省长治市潞城市', + '140500': '山西省晋城市', + '140501': '山西省晋城市市辖区', + '140502': '山西省晋城市城区', + '140521': '山西省晋城市沁水县', + '140522': '山西省晋城市阳城县', + '140524': '山西省晋城市陵川县', + '140525': '山西省晋城市泽州县', + '140581': '山西省晋城市高平市', + '140600': '山西省晋城市朔州市', + '140601': '山西省晋城市市辖区', + '140602': '山西省晋城市朔城区', + '140603': '山西省晋城市平鲁区', + '140621': '山西省晋城市山阴县', + '140622': '山西省晋城市应县', + '140623': '山西省晋城市右玉县', + '140624': '山西省晋城市怀仁县', + '142200': '山西省忻州地区', + '142201': '山西省忻州地区忻州市', + '142202': '山西省忻州地区原平市', + '142222': '山西省忻州地区定襄县', + '142223': '山西省忻州地区五台县', + '142225': '山西省忻州地区代县', + '142226': '山西省忻州地区繁峙县', + '142227': '山西省忻州地区宁武县', + '142228': '山西省忻州地区静乐县', + '142229': '山西省忻州地区神池县', + '142230': '山西省忻州地区五寨县', + '142231': '山西省忻州地区岢岚县', + '142232': '山西省忻州地区河曲县', + '142233': '山西省忻州地区保德县', + '142234': '山西省忻州地区偏关县', + '142300': '山西省忻州地区吕梁地区', + '142301': '山西省忻州地区孝义市', + '142302': '山西省忻州地区离石市', + '142303': '山西省忻州地区汾阳市', + '142322': '山西省忻州地区文水县', + '142323': '山西省忻州地区交城县', + '142325': '山西省忻州地区兴县', + '142326': '山西省忻州地区临县', + '142327': '山西省忻州地区柳林县', + '142328': '山西省忻州地区石楼县', + '142329': '山西省忻州地区岚县', + '142330': '山西省忻州地区方山县', + '142332': '山西省忻州地区中阳县', + '142333': '山西省忻州地区交口县', + '142400': '山西省晋中地区', + '142401': '山西省晋中地区榆次市', + '142402': '山西省晋中地区介休市', + '142421': '山西省晋中地区榆社县', + '142422': '山西省晋中地区左权县', + '142423': '山西省晋中地区和顺县', + '142424': '山西省晋中地区昔阳县', + '142427': '山西省晋中地区寿阳县', + '142429': '山西省晋中地区太谷县', + '142430': '山西省晋中地区祁县', + '142431': '山西省晋中地区平遥县', + '142433': '山西省晋中地区灵石县', + '142600': '山西省临汾地区', + '142601': '山西省临汾地区临汾市', + '142602': '山西省临汾地区侯马市', + '142603': '山西省临汾地区霍州市', + '142621': '山西省临汾地区曲沃县', + '142622': '山西省临汾地区翼城县', + '142623': '山西省临汾地区襄汾县', + '142625': '山西省临汾地区洪洞县', + '142627': '山西省临汾地区古县', + '142628': '山西省临汾地区安泽县', + '142629': '山西省临汾地区浮山县', + '142630': '山西省临汾地区吉县', + '142631': '山西省临汾地区乡宁县', + '142632': '山西省临汾地区蒲县', + '142633': '山西省临汾地区大宁县', + '142634': '山西省临汾地区永和县', + '142635': '山西省临汾地区隰县', + '142636': '山西省临汾地区汾西县', + '142700': '山西省运城地区', + '142701': '山西省运城地区运城市', + '142702': '山西省运城地区永济市', + '142703': '山西省运城地区河津市', + '142723': '山西省运城地区芮城县', + '142724': '山西省运城地区临猗县', + '142725': '山西省运城地区万荣县', + '142726': '山西省运城地区新绛县', + '142727': '山西省运城地区稷山县', + '142729': '山西省运城地区闻喜县', + '142730': '山西省运城地区夏县', + '142731': '山西省运城地区绛县', + '142732': '山西省运城地区平陆县', + '142733': '山西省运城地区垣曲县', + '150000': '内蒙古自治区', + '150100': '内蒙古自治区呼和浩特市', + '150101': '内蒙古自治区呼和浩特市市辖区', + '150102': '内蒙古自治区呼和浩特市新城区', + '150103': '内蒙古自治区呼和浩特市回民区', + '150104': '内蒙古自治区呼和浩特市玉泉区', + '150105': '内蒙古自治区呼和浩特市郊区', + '150121': '内蒙古自治区呼和浩特市土默特左旗', + '150122': '内蒙古自治区呼和浩特市托克托县', + '150123': '内蒙古自治区呼和浩特市和林格尔县', + '150124': '内蒙古自治区呼和浩特市清水河县', + '150125': '内蒙古自治区呼和浩特市武川县', + '150200': '内蒙古自治区包头市', + '150201': '内蒙古自治区包头市市辖区', + '150202': '内蒙古自治区包头市东河区', + '150203': '内蒙古自治区包头市昆都伦区', + '150204': '内蒙古自治区包头市青山区', + '150205': '内蒙古自治区包头市石拐矿区', + '150206': '内蒙古自治区包头市白云矿区', + '150207': '内蒙古自治区包头市郊区', + '150221': '内蒙古自治区包头市土默特右旗', + '150222': '内蒙古自治区包头市固阳县', + '150223': '内蒙古自治区包头市达尔罕茂明安联合旗', + '150300': '内蒙古自治区乌海市', + '150301': '内蒙古自治区乌海市市辖区', + '150302': '内蒙古自治区乌海市海勃湾区', + '150303': '内蒙古自治区乌海市海南区', + '150304': '内蒙古自治区乌海市乌达区', + '150400': '内蒙古自治区赤峰市', + '150401': '内蒙古自治区赤峰市市辖区', + '150402': '内蒙古自治区赤峰市红山区', + '150403': '内蒙古自治区赤峰市元宝山区', + '150404': '内蒙古自治区赤峰市松山区', + '150421': '内蒙古自治区赤峰市阿鲁科尔沁旗', + '150422': '内蒙古自治区赤峰市巴林左旗', + '150423': '内蒙古自治区赤峰市巴林右旗', + '150424': '内蒙古自治区赤峰市林西县', + '150425': '内蒙古自治区赤峰市克什克腾旗', + '150426': '内蒙古自治区赤峰市翁牛特旗', + '150428': '内蒙古自治区赤峰市喀喇沁旗', + '150429': '内蒙古自治区赤峰市宁城县', + '150430': '内蒙古自治区赤峰市敖汉旗', + '152100': '内蒙古自治区呼伦贝尔盟', + '152101': '内蒙古自治区呼伦贝尔盟海拉尔市', + '152102': '内蒙古自治区呼伦贝尔盟满洲里市', + '152103': '内蒙古自治区呼伦贝尔盟扎兰屯市', + '152104': '内蒙古自治区呼伦贝尔盟牙克石市', + '152105': '内蒙古自治区呼伦贝尔盟根河市', + '152106': '内蒙古自治区呼伦贝尔盟额尔古纳市', + '152122': '内蒙古自治区呼伦贝尔盟阿荣旗', + '152123': '内蒙古自治区呼伦贝尔盟莫力达瓦达斡尔族自治旗', + '152127': '内蒙古自治区呼伦贝尔盟鄂伦春自治旗', + '152128': '内蒙古自治区呼伦贝尔盟鄂温克族自治旗', + '152129': '内蒙古自治区呼伦贝尔盟新巴尔虎右旗', + '152130': '内蒙古自治区呼伦贝尔盟新巴尔虎左旗', + '152131': '内蒙古自治区呼伦贝尔盟陈巴尔虎旗', + '152200': '内蒙古自治区兴安盟', + '152201': '内蒙古自治区兴安盟乌兰浩特市', + '152202': '内蒙古自治区兴安盟阿尔山市', + '152221': '内蒙古自治区兴安盟科尔沁右翼前旗', + '152222': '内蒙古自治区兴安盟科尔沁右翼中旗', + '152223': '内蒙古自治区兴安盟扎赉特旗', + '152224': '内蒙古自治区兴安盟突泉县', + '152300': '内蒙古自治区哲里木盟', + '152301': '内蒙古自治区哲里木盟通辽市', + '152302': '内蒙古自治区哲里木盟霍林郭勒市', + '152322': '内蒙古自治区哲里木盟科尔沁左翼中旗', + '152323': '内蒙古自治区哲里木盟科尔沁左翼后旗', + '152324': '内蒙古自治区哲里木盟开鲁县', + '152325': '内蒙古自治区哲里木盟库伦旗', + '152326': '内蒙古自治区哲里木盟奈曼旗', + '152327': '内蒙古自治区哲里木盟扎鲁特旗', + '152500': '内蒙古自治区锡林郭勒盟', + '152501': '内蒙古自治区锡林郭勒盟二连浩特市', + '152502': '内蒙古自治区锡林郭勒盟锡林浩特市', + '152522': '内蒙古自治区锡林郭勒盟阿巴嘎旗', + '152523': '内蒙古自治区锡林郭勒盟苏尼特左旗', + '152524': '内蒙古自治区锡林郭勒盟苏尼特右旗', + '152525': '内蒙古自治区锡林郭勒盟东乌珠穆沁旗', + '152526': '内蒙古自治区锡林郭勒盟西乌珠穆沁旗', + '152527': '内蒙古自治区锡林郭勒盟太仆寺旗', + '152528': '内蒙古自治区锡林郭勒盟镶黄旗', + '152529': '内蒙古自治区锡林郭勒盟正镶白旗', + '152530': '内蒙古自治区锡林郭勒盟正蓝旗', + '152531': '内蒙古自治区锡林郭勒盟多伦县', + '152600': '内蒙古自治区乌兰察布盟', + '152601': '内蒙古自治区乌兰察布盟集宁市', + '152602': '内蒙古自治区乌兰察布盟丰镇市', + '152624': '内蒙古自治区乌兰察布盟卓资县', + '152625': '内蒙古自治区乌兰察布盟化德县', + '152626': '内蒙古自治区乌兰察布盟商都县', + '152627': '内蒙古自治区乌兰察布盟兴和县', + '152629': '内蒙古自治区乌兰察布盟凉城县', + '152630': '内蒙古自治区乌兰察布盟察哈尔右翼前旗', + '152631': '内蒙古自治区乌兰察布盟察哈尔右翼中旗', + '152632': '内蒙古自治区乌兰察布盟察哈尔右翼后旗', + '152634': '内蒙古自治区乌兰察布盟四子王旗', + '152700': '内蒙古自治区伊克昭盟', + '152701': '内蒙古自治区伊克昭盟东胜市', + '152722': '内蒙古自治区伊克昭盟达拉特旗', + '152723': '内蒙古自治区伊克昭盟准格尔旗', + '152724': '内蒙古自治区伊克昭盟鄂托克前旗', + '152725': '内蒙古自治区伊克昭盟鄂托克旗', + '152726': '内蒙古自治区伊克昭盟杭锦旗', + '152727': '内蒙古自治区伊克昭盟乌审旗', + '152728': '内蒙古自治区伊克昭盟伊金霍洛旗', + '152800': '内蒙古自治区巴彦淖尔盟', + '152801': '内蒙古自治区巴彦淖尔盟临河市', + '152822': '内蒙古自治区巴彦淖尔盟五原县', + '152823': '内蒙古自治区巴彦淖尔盟磴口县', + '152824': '内蒙古自治区巴彦淖尔盟乌拉特前旗', + '152825': '内蒙古自治区巴彦淖尔盟乌拉特中旗', + '152826': '内蒙古自治区巴彦淖尔盟乌拉特后旗', + '152827': '内蒙古自治区巴彦淖尔盟杭锦后旗', + '152900': '内蒙古自治区阿拉善盟', + '152921': '内蒙古自治区阿拉善盟阿拉善左旗', + '152922': '内蒙古自治区阿拉善盟阿拉善右旗', + '152923': '内蒙古自治区阿拉善盟额济纳旗', + '210000': '辽宁省', + '210100': '辽宁省沈阳市', + '210101': '辽宁省沈阳市市辖区', + '210102': '辽宁省沈阳市和平区', + '210103': '辽宁省沈阳市沈河区', + '210104': '辽宁省沈阳市大东区', + '210105': '辽宁省沈阳市皇姑区', + '210106': '辽宁省沈阳市铁西区', + '210111': '辽宁省沈阳市苏家屯区', + '210112': '辽宁省沈阳市东陵区', + '210113': '辽宁省沈阳市新城子区', + '210114': '辽宁省沈阳市于洪区', + '210122': '辽宁省沈阳市辽中县', + '210123': '辽宁省沈阳市康平县', + '210124': '辽宁省沈阳市法库县', + '210181': '辽宁省沈阳市新民市', + '210200': '辽宁省大连市', + '210201': '辽宁省大连市市辖区', + '210202': '辽宁省大连市中山区', + '210203': '辽宁省大连市西岗区', + '210204': '辽宁省大连市沙河口区', + '210211': '辽宁省大连市甘井子区', + '210212': '辽宁省大连市旅顺口区', + '210213': '辽宁省大连市金州区', + '210224': '辽宁省大连市长海县', + '210281': '辽宁省大连市瓦房店市', + '210282': '辽宁省大连市普兰店市', + '210283': '辽宁省大连市庄河市', + '210300': '辽宁省鞍山市', + '210301': '辽宁省鞍山市市辖区', + '210302': '辽宁省鞍山市铁东区', + '210303': '辽宁省鞍山市铁西区', + '210304': '辽宁省鞍山市立山区', + '210311': '辽宁省鞍山市千山区', + '210321': '辽宁省鞍山市台安县', + '210323': '辽宁省鞍山市岫岩满族自治县', + '210381': '辽宁省鞍山市海城市', + '210400': '辽宁省抚顺市', + '210401': '辽宁省抚顺市市辖区', + '210402': '辽宁省抚顺市新抚区', + '210403': '辽宁省抚顺市露天区', + '210404': '辽宁省抚顺市望花区', + '210411': '辽宁省抚顺市顺城区', + '210421': '辽宁省抚顺市抚顺县', + '210422': '辽宁省抚顺市新宾满族自治县', + '210423': '辽宁省抚顺市清原满族自治县', + '210500': '辽宁省本溪市', + '210501': '辽宁省本溪市市辖区', + '210502': '辽宁省本溪市平山区', + '210503': '辽宁省本溪市溪湖区', + '210504': '辽宁省本溪市明山区', + '210505': '辽宁省本溪市南芬区', + '210521': '辽宁省本溪市本溪满族自治县', + '210522': '辽宁省本溪市桓仁满族自治县', + '210600': '辽宁省丹东市', + '210601': '辽宁省丹东市市辖区', + '210602': '辽宁省丹东市元宝区', + '210603': '辽宁省丹东市振兴区', + '210604': '辽宁省丹东市振安区', + '210624': '辽宁省丹东市宽甸满族自治县', + '210681': '辽宁省丹东市东港市', + '210682': '辽宁省丹东市凤城市', + '210700': '辽宁省锦州市', + '210701': '辽宁省锦州市市辖区', + '210702': '辽宁省锦州市古塔区', + '210703': '辽宁省锦州市凌河区', + '210711': '辽宁省锦州市太和区', + '210726': '辽宁省锦州市黑山县', + '210727': '辽宁省锦州市义县', + '210781': '辽宁省锦州市凌海市', + '210782': '辽宁省锦州市北宁市', + '210800': '辽宁省营口市', + '210801': '辽宁省营口市市辖区', + '210802': '辽宁省营口市站前区', + '210803': '辽宁省营口市西市区', + '210804': '辽宁省营口市鲅鱼圈区', + '210811': '辽宁省营口市老边区', + '210881': '辽宁省营口市盖州市', + '210882': '辽宁省营口市大石桥市', + '210900': '辽宁省阜新市', + '210901': '辽宁省阜新市市辖区', + '210902': '辽宁省阜新市海州区', + '210903': '辽宁省阜新市新邱区', + '210904': '辽宁省阜新市太平区', + '210905': '辽宁省阜新市清河门区', + '210911': '辽宁省阜新市细河区', + '210921': '辽宁省阜新市阜新蒙古族自治县', + '210922': '辽宁省阜新市彰武县', + '211000': '辽宁省辽阳市', + '211001': '辽宁省辽阳市市辖区', + '211002': '辽宁省辽阳市白塔区', + '211003': '辽宁省辽阳市文圣区', + '211004': '辽宁省辽阳市宏伟区', + '211005': '辽宁省辽阳市弓长岭区', + '211011': '辽宁省辽阳市太子河区', + '211021': '辽宁省辽阳市辽阳县', + '211081': '辽宁省辽阳市灯塔市', + '211100': '辽宁省盘锦市', + '211101': '辽宁省盘锦市市辖区', + '211102': '辽宁省盘锦市双台子区', + '211103': '辽宁省盘锦市兴隆台区', + '211121': '辽宁省盘锦市大洼县', + '211122': '辽宁省盘锦市盘山县', + '211200': '辽宁省铁岭市', + '211201': '辽宁省铁岭市市辖区', + '211202': '辽宁省铁岭市银州区', + '211204': '辽宁省铁岭市清河区', + '211221': '辽宁省铁岭市铁岭县', + '211223': '辽宁省铁岭市西丰县', + '211224': '辽宁省铁岭市昌图县', + '211281': '辽宁省铁岭市铁法市', + '211282': '辽宁省铁岭市开原市', + '211300': '辽宁省朝阳市', + '211301': '辽宁省朝阳市市辖区', + '211302': '辽宁省朝阳市双塔区', + '211303': '辽宁省朝阳市龙城区', + '211321': '辽宁省朝阳市朝阳县', + '211322': '辽宁省朝阳市建平县', + '211324': '辽宁省朝阳市喀喇沁左翼蒙古族自治县', + '211381': '辽宁省朝阳市北票市', + '211382': '辽宁省朝阳市凌源市', + '211400': '辽宁省葫芦岛市', + '211401': '辽宁省葫芦岛市市辖区', + '211402': '辽宁省葫芦岛市连山区', + '211403': '辽宁省葫芦岛市龙港区', + '211404': '辽宁省葫芦岛市南票区', + '211421': '辽宁省葫芦岛市绥中县', + '211422': '辽宁省葫芦岛市建昌县', + '211481': '辽宁省葫芦岛市兴城市', + '220000': '吉林省', + '220100': '吉林省长春市', + '220101': '吉林省长春市市辖区', + '220102': '吉林省长春市南关区', + '220103': '吉林省长春市宽城区', + '220104': '吉林省长春市朝阳区', + '220105': '吉林省长春市二道区', + '220106': '吉林省长春市绿园区', + '220112': '吉林省长春市双阳区', + '220122': '吉林省长春市农安县', + '220181': '吉林省长春市九台市', + '220182': '吉林省长春市榆树市', + '220183': '吉林省长春市德惠市', + '220200': '吉林省吉林市', + '220201': '吉林省吉林市市辖区', + '220202': '吉林省吉林市昌邑区', + '220203': '吉林省吉林市龙潭区', + '220204': '吉林省吉林市船营区', + '220211': '吉林省吉林市丰满区', + '220221': '吉林省吉林市永吉县', + '220281': '吉林省吉林市蛟河市', + '220282': '吉林省吉林市桦甸市', + '220283': '吉林省吉林市舒兰市', + '220284': '吉林省吉林市磐石市', + '220300': '吉林省四平市', + '220301': '吉林省四平市市辖区', + '220302': '吉林省四平市铁西区', + '220303': '吉林省四平市铁东区', + '220322': '吉林省四平市梨树县', + '220323': '吉林省四平市伊通满族自治县', + '220381': '吉林省四平市公主岭市', + '220382': '吉林省四平市双辽市', + '220400': '吉林省辽源市', + '220401': '吉林省辽源市市辖区', + '220402': '吉林省辽源市龙山区', + '220403': '吉林省辽源市西安区', + '220421': '吉林省辽源市东丰县', + '220422': '吉林省辽源市东辽县', + '220500': '吉林省通化市', + '220501': '吉林省通化市市辖区', + '220502': '吉林省通化市东昌区', + '220503': '吉林省通化市二道江区', + '220521': '吉林省通化市通化县', + '220523': '吉林省通化市辉南县', + '220524': '吉林省通化市柳河县', + '220581': '吉林省通化市梅河口市', + '220582': '吉林省通化市集安市', + '220600': '吉林省白山市', + '220601': '吉林省白山市市辖区', + '220602': '吉林省白山市八道江区', + '220621': '吉林省白山市抚松县', + '220622': '吉林省白山市靖宇县', + '220623': '吉林省白山市长白朝鲜族自治县', + '220625': '吉林省白山市江源县', + '220681': '吉林省白山市临江市', + '220700': '吉林省松原市', + '220701': '吉林省松原市市辖区', + '220702': '吉林省松原市宁江区', + '220721': '吉林省松原市前郭尔罗斯蒙古族自治县', + '220722': '吉林省松原市长岭县', + '220723': '吉林省松原市乾安县', + '220724': '吉林省松原市扶余县', + '220800': '吉林省白城市', + '220801': '吉林省白城市市辖区', + '220802': '吉林省白城市洮北区', + '220821': '吉林省白城市镇赉县', + '220822': '吉林省白城市通榆县', + '220881': '吉林省白城市洮南市', + '220882': '吉林省白城市大安市', + '222400': '吉林省延边朝鲜族自治州', + '222401': '吉林省延边朝鲜族自治州延吉市', + '222402': '吉林省延边朝鲜族自治州图们市', + '222403': '吉林省延边朝鲜族自治州敦化市', + '222404': '吉林省延边朝鲜族自治州珲春市', + '222405': '吉林省延边朝鲜族自治州龙井市', + '222406': '吉林省延边朝鲜族自治州和龙市', + '222424': '吉林省延边朝鲜族自治州汪清县', + '222426': '吉林省延边朝鲜族自治州安图县', + '230000': '黑龙江省', + '230100': '黑龙江省哈尔滨市', + '230101': '黑龙江省哈尔滨市市辖区', + '230102': '黑龙江省哈尔滨市道里区', + '230103': '黑龙江省哈尔滨市南岗区', + '230104': '黑龙江省哈尔滨市道外区', + '230105': '黑龙江省哈尔滨市太平区', + '230106': '黑龙江省哈尔滨市香坊区', + '230107': '黑龙江省哈尔滨市动力区', + '230108': '黑龙江省哈尔滨市平房区', + '230121': '黑龙江省哈尔滨市呼兰县', + '230123': '黑龙江省哈尔滨市依兰县', + '230124': '黑龙江省哈尔滨市方正县', + '230125': '黑龙江省哈尔滨市宾县', + '230126': '黑龙江省哈尔滨市巴彦县', + '230127': '黑龙江省哈尔滨市木兰县', + '230128': '黑龙江省哈尔滨市通河县', + '230129': '黑龙江省哈尔滨市延寿县', + '230181': '黑龙江省哈尔滨市阿城市', + '230182': '黑龙江省哈尔滨市双城市', + '230183': '黑龙江省哈尔滨市尚志市', + '230184': '黑龙江省哈尔滨市五常市', + '230200': '黑龙江省齐齐哈尔市', + '230201': '黑龙江省齐齐哈尔市市辖区', + '230202': '黑龙江省齐齐哈尔市龙沙区', + '230203': '黑龙江省齐齐哈尔市建华区', + '230204': '黑龙江省齐齐哈尔市铁锋区', + '230205': '黑龙江省齐齐哈尔市昂昂溪区', + '230206': '黑龙江省齐齐哈尔市富拉尔基区', + '230207': '黑龙江省齐齐哈尔市碾子山区', + '230208': '黑龙江省齐齐哈尔市梅里斯达斡尔族区', + '230221': '黑龙江省齐齐哈尔市龙江县', + '230223': '黑龙江省齐齐哈尔市依安县', + '230224': '黑龙江省齐齐哈尔市泰来县', + '230225': '黑龙江省齐齐哈尔市甘南县', + '230227': '黑龙江省齐齐哈尔市富裕县', + '230229': '黑龙江省齐齐哈尔市克山县', + '230230': '黑龙江省齐齐哈尔市克东县', + '230231': '黑龙江省齐齐哈尔市拜泉县', + '230281': '黑龙江省齐齐哈尔市讷河市', + '230300': '黑龙江省鸡西市', + '230301': '黑龙江省鸡西市市辖区', + '230302': '黑龙江省鸡西市鸡冠区', + '230303': '黑龙江省鸡西市恒山区', + '230304': '黑龙江省鸡西市滴道区', + '230305': '黑龙江省鸡西市梨树区', + '230306': '黑龙江省鸡西市城子河区', + '230307': '黑龙江省鸡西市麻山区', + '230321': '黑龙江省鸡西市鸡东县', + '230381': '黑龙江省鸡西市虎林市', + '230382': '黑龙江省鸡西市密山市', + '230400': '黑龙江省鹤岗市', + '230401': '黑龙江省鹤岗市市辖区', + '230402': '黑龙江省鹤岗市向阳区', + '230403': '黑龙江省鹤岗市工农区', + '230404': '黑龙江省鹤岗市南山区', + '230405': '黑龙江省鹤岗市兴安区', + '230406': '黑龙江省鹤岗市东山区', + '230407': '黑龙江省鹤岗市兴山区', + '230421': '黑龙江省鹤岗市萝北县', + '230422': '黑龙江省鹤岗市绥滨县', + '230500': '黑龙江省双鸭山市', + '230501': '黑龙江省双鸭山市市辖区', + '230502': '黑龙江省双鸭山市尖山区', + '230503': '黑龙江省双鸭山市岭东区', + '230505': '黑龙江省双鸭山市四方台区', + '230506': '黑龙江省双鸭山市宝山区', + '230521': '黑龙江省双鸭山市集贤县', + '230522': '黑龙江省双鸭山市友谊县', + '230523': '黑龙江省双鸭山市宝清县', + '230524': '黑龙江省双鸭山市饶河县', + '230600': '黑龙江省大庆市', + '230601': '黑龙江省大庆市市辖区', + '230602': '黑龙江省大庆市萨尔图区', + '230603': '黑龙江省大庆市龙凤区', + '230604': '黑龙江省大庆市让胡路区', + '230605': '黑龙江省大庆市红岗区', + '230606': '黑龙江省大庆市大同区', + '230621': '黑龙江省大庆市肇州县', + '230622': '黑龙江省大庆市肇源县', + '230623': '黑龙江省大庆市林甸县', + '230624': '黑龙江省大庆市杜尔伯特蒙古族自治县', + '230700': '黑龙江省伊春市', + '230701': '黑龙江省伊春市市辖区', + '230702': '黑龙江省伊春市伊春区', + '230703': '黑龙江省伊春市南岔区', + '230704': '黑龙江省伊春市友好区', + '230705': '黑龙江省伊春市西林区', + '230706': '黑龙江省伊春市翠峦区', + '230707': '黑龙江省伊春市新青区', + '230708': '黑龙江省伊春市美溪区', + '230709': '黑龙江省伊春市金山屯区', + '230710': '黑龙江省伊春市五营区', + '230711': '黑龙江省伊春市乌马河区', + '230712': '黑龙江省伊春市汤旺河区', + '230713': '黑龙江省伊春市带岭区', + '230714': '黑龙江省伊春市乌伊岭区', + '230715': '黑龙江省伊春市红星区', + '230716': '黑龙江省伊春市上甘岭区', + '230722': '黑龙江省伊春市嘉荫县', + '230781': '黑龙江省伊春市铁力市', + '230800': '黑龙江省佳木斯市', + '230801': '黑龙江省佳木斯市市辖区', + '230802': '黑龙江省佳木斯市永红区', + '230803': '黑龙江省佳木斯市向阳区', + '230804': '黑龙江省佳木斯市前进区', + '230805': '黑龙江省佳木斯市东风区', + '230811': '黑龙江省佳木斯市郊区', + '230822': '黑龙江省佳木斯市桦南县', + '230826': '黑龙江省佳木斯市桦川县', + '230828': '黑龙江省佳木斯市汤原县', + '230833': '黑龙江省佳木斯市抚远县', + '230881': '黑龙江省佳木斯市同江市', + '230882': '黑龙江省佳木斯市富锦市', + '230900': '黑龙江省七台河市', + '230901': '黑龙江省七台河市市辖区', + '230902': '黑龙江省七台河市新兴区', + '230903': '黑龙江省七台河市桃山区', + '230904': '黑龙江省七台河市茄子河区', + '230921': '黑龙江省七台河市勃利县', + '231000': '黑龙江省牡丹江市', + '231001': '黑龙江省牡丹江市市辖区', + '231002': '黑龙江省牡丹江市东安区', + '231003': '黑龙江省牡丹江市阳明区', + '231004': '黑龙江省牡丹江市爱民区', + '231005': '黑龙江省牡丹江市西安区', + '231024': '黑龙江省牡丹江市东宁县', + '231025': '黑龙江省牡丹江市林口县', + '231081': '黑龙江省牡丹江市绥芬河市', + '231083': '黑龙江省牡丹江市海林市', + '231084': '黑龙江省牡丹江市宁安市', + '231085': '黑龙江省牡丹江市穆棱市', + '231100': '黑龙江省黑河市', + '231101': '黑龙江省黑河市市辖区', + '231102': '黑龙江省黑河市爱辉区', + '231121': '黑龙江省黑河市嫩江县', + '231123': '黑龙江省黑河市逊克县', + '231124': '黑龙江省黑河市孙吴县', + '231181': '黑龙江省黑河市北安市', + '231182': '黑龙江省黑河市五大连池市', + '232300': '黑龙江省绥化地区', + '232301': '黑龙江省绥化地区绥化市', + '232302': '黑龙江省绥化地区安达市', + '232303': '黑龙江省绥化地区肇东市', + '232304': '黑龙江省绥化地区海伦市', + '232324': '黑龙江省绥化地区望奎县', + '232325': '黑龙江省绥化地区兰西县', + '232326': '黑龙江省绥化地区青冈县', + '232330': '黑龙江省绥化地区庆安县', + '232331': '黑龙江省绥化地区明水县', + '232332': '黑龙江省绥化地区绥棱县', + '232700': '黑龙江省大兴安岭地区', + '232721': '黑龙江省大兴安岭地区呼玛县', + '232722': '黑龙江省大兴安岭地区塔河县', + '232723': '黑龙江省大兴安岭地区漠河县', + '310000': '上海市', + '310100': '上海市市辖区', + '310101': '上海市黄浦区', + '310102': '上海市南市区', + '310103': '上海市卢湾区', + '310104': '上海市徐汇区', + '310105': '上海市长宁区', + '310106': '上海市静安区', + '310107': '上海市普陀区', + '310108': '上海市闸北区', + '310109': '上海市虹口区', + '310110': '上海市杨浦区', + '310112': '上海市闵行区', + '310113': '上海市宝山区', + '310114': '上海市嘉定区', + '310115': '上海市浦东新区', + '310116': '上海市金山区', + '310117': '上海市松江区', + '310200': '上海市县', + '310225': '上海市南汇县', + '310226': '上海市奉贤县', + '310229': '上海市青浦县', + '310230': '上海市崇明县', + '320000': '江苏省', + '320100': '江苏省南京市', + '320101': '江苏省南京市市辖区', + '320102': '江苏省南京市玄武区', + '320103': '江苏省南京市白下区', + '320104': '江苏省南京市秦淮区', + '320105': '江苏省南京市建邺区', + '320106': '江苏省南京市鼓楼区', + '320107': '江苏省南京市下关区', + '320111': '江苏省南京市浦口区', + '320112': '江苏省南京市大厂区', + '320113': '江苏省南京市栖霞区', + '320114': '江苏省南京市雨花台区', + '320121': '江苏省南京市江宁县', + '320122': '江苏省南京市江浦县', + '320123': '江苏省南京市六合县', + '320124': '江苏省南京市溧水县', + '320125': '江苏省南京市高淳县', + '320200': '江苏省无锡市', + '320201': '江苏省无锡市市辖区', + '320202': '江苏省无锡市崇安区', + '320203': '江苏省无锡市南长区', + '320204': '江苏省无锡市北塘区', + '320211': '江苏省无锡市郊区', + '320281': '江苏省无锡市江阴市', + '320282': '江苏省无锡市宜兴市', + '320283': '江苏省无锡市锡山市', + '320300': '江苏省徐州市', + '320301': '江苏省徐州市市辖区', + '320302': '江苏省徐州市鼓楼区', + '320303': '江苏省徐州市云龙区', + '320304': '江苏省徐州市九里区', + '320305': '江苏省徐州市贾汪区', + '320311': '江苏省徐州市泉山区', + '320321': '江苏省徐州市丰县', + '320322': '江苏省徐州市沛县', + '320323': '江苏省徐州市铜山县', + '320324': '江苏省徐州市睢宁县', + '320381': '江苏省徐州市新沂市', + '320382': '江苏省徐州市邳州市', + '320400': '江苏省常州市', + '320401': '江苏省常州市市辖区', + '320402': '江苏省常州市天宁区', + '320404': '江苏省常州市钟楼区', + '320405': '江苏省常州市戚墅堰区', + '320411': '江苏省常州市郊区', + '320481': '江苏省常州市溧阳市', + '320482': '江苏省常州市金坛市', + '320483': '江苏省常州市武进市', + '320500': '江苏省苏州市', + '320501': '江苏省苏州市市辖区', + '320502': '江苏省苏州市沧浪区', + '320503': '江苏省苏州市平江区', + '320504': '江苏省苏州市金阊区', + '320511': '江苏省苏州市郊区', + '320581': '江苏省苏州市常熟市', + '320582': '江苏省苏州市张家港市', + '320583': '江苏省苏州市昆山市', + '320584': '江苏省苏州市吴江市', + '320585': '江苏省苏州市太仓市', + '320586': '江苏省苏州市吴县市', + '320600': '江苏省南通市', + '320601': '江苏省南通市市辖区', + '320602': '江苏省南通市崇川区', + '320611': '江苏省南通市港闸区', + '320621': '江苏省南通市海安县', + '320623': '江苏省南通市如东县', + '320681': '江苏省南通市启东市', + '320682': '江苏省南通市如皋市', + '320683': '江苏省南通市通州市', + '320684': '江苏省南通市海门市', + '320700': '江苏省连云港市', + '320701': '江苏省连云港市市辖区', + '320703': '江苏省连云港市连云区', + '320704': '江苏省连云港市云台区', + '320705': '江苏省连云港市新浦区', + '320706': '江苏省连云港市海州区', + '320721': '江苏省连云港市赣榆县', + '320722': '江苏省连云港市东海县', + '320723': '江苏省连云港市灌云县', + '320724': '江苏省连云港市灌南县', + '320800': '江苏省淮阴市', + '320801': '江苏省淮阴市市辖区', + '320802': '江苏省淮阴市清河区', + '320811': '江苏省淮阴市清浦区', + '320821': '江苏省淮阴市淮阴县', + '320826': '江苏省淮阴市涟水县', + '320829': '江苏省淮阴市洪泽县', + '320830': '江苏省淮阴市盱眙县', + '320831': '江苏省淮阴市金湖县', + '320882': '江苏省淮阴市淮安市', + '320900': '江苏省盐城市', + '320901': '江苏省盐城市市辖区', + '320902': '江苏省盐城市城区', + '320921': '江苏省盐城市响水县', + '320922': '江苏省盐城市滨海县', + '320923': '江苏省盐城市阜宁县', + '320924': '江苏省盐城市射阳县', + '320925': '江苏省盐城市建湖县', + '320928': '江苏省盐城市盐都县', + '320981': '江苏省盐城市东台市', + '320982': '江苏省盐城市大丰市', + '321000': '江苏省扬州市', + '321001': '江苏省扬州市市辖区', + '321002': '江苏省扬州市广陵区', + '321011': '江苏省扬州市郊区', + '321023': '江苏省扬州市宝应县', + '321027': '江苏省扬州市邗江县', + '321081': '江苏省扬州市仪征市', + '321084': '江苏省扬州市高邮市', + '321088': '江苏省扬州市江都市', + '321100': '江苏省镇江市', + '321101': '江苏省镇江市市辖区', + '321102': '江苏省镇江市京口区', + '321111': '江苏省镇江市润州区', + '321121': '江苏省镇江市丹徒县', + '321181': '江苏省镇江市丹阳市', + '321182': '江苏省镇江市扬中市', + '321183': '江苏省镇江市句容市', + '321200': '江苏省泰州市', + '321201': '江苏省泰州市市辖区', + '321202': '江苏省泰州市海陵区', + '321203': '江苏省泰州市高港区', + '321281': '江苏省泰州市兴化市', + '321282': '江苏省泰州市靖江市', + '321283': '江苏省泰州市泰兴市', + '321284': '江苏省泰州市姜堰市', + '321300': '江苏省宿迁市', + '321301': '江苏省宿迁市市辖区', + '321302': '江苏省宿迁市宿城区', + '321321': '江苏省宿迁市宿豫县', + '321322': '江苏省宿迁市沭阳县', + '321323': '江苏省宿迁市泗阳县', + '321324': '江苏省宿迁市泗洪县', + '330000': '浙江省', + '330100': '浙江省杭州市', + '330101': '浙江省杭州市市辖区', + '330102': '浙江省杭州市上城区', + '330103': '浙江省杭州市下城区', + '330104': '浙江省杭州市江干区', + '330105': '浙江省杭州市拱墅区', + '330106': '浙江省杭州市西湖区', + '330108': '浙江省杭州市滨江区', + '330122': '浙江省杭州市桐庐县', + '330127': '浙江省杭州市淳安县', + '330181': '浙江省杭州市萧山市', + '330182': '浙江省杭州市建德市', + '330183': '浙江省杭州市富阳市', + '330184': '浙江省杭州市余杭市', + '330185': '浙江省杭州市临安市', + '330200': '浙江省宁波市', + '330201': '浙江省宁波市市辖区', + '330203': '浙江省宁波市海曙区', + '330204': '浙江省宁波市江东区', + '330205': '浙江省宁波市江北区', + '330206': '浙江省宁波市北仑区', + '330211': '浙江省宁波市镇海区', + '330225': '浙江省宁波市象山县', + '330226': '浙江省宁波市宁海县', + '330227': '浙江省宁波市鄞县', + '330281': '浙江省宁波市余姚市', + '330282': '浙江省宁波市慈溪市', + '330283': '浙江省宁波市奉化市', + '330300': '浙江省温州市', + '330301': '浙江省温州市市辖区', + '330302': '浙江省温州市鹿城区', + '330303': '浙江省温州市龙湾区', + '330304': '浙江省温州市瓯海区', + '330322': '浙江省温州市洞头县', + '330324': '浙江省温州市永嘉县', + '330326': '浙江省温州市平阳县', + '330327': '浙江省温州市苍南县', + '330328': '浙江省温州市文成县', + '330329': '浙江省温州市泰顺县', + '330381': '浙江省温州市瑞安市', + '330382': '浙江省温州市乐清市', + '330400': '浙江省嘉兴市', + '330401': '浙江省嘉兴市市辖区', + '330402': '浙江省嘉兴市秀城区', + '330411': '浙江省嘉兴市郊区', + '330421': '浙江省嘉兴市嘉善县', + '330424': '浙江省嘉兴市海盐县', + '330481': '浙江省嘉兴市海宁市', + '330482': '浙江省嘉兴市平湖市', + '330483': '浙江省嘉兴市桐乡市', + '330500': '浙江省湖州市', + '330501': '浙江省湖州市市辖区', + '330521': '浙江省湖州市德清县', + '330522': '浙江省湖州市长兴县', + '330523': '浙江省湖州市安吉县', + '330600': '浙江省绍兴市', + '330601': '浙江省绍兴市市辖区', + '330602': '浙江省绍兴市越城区', + '330621': '浙江省绍兴市绍兴县', + '330624': '浙江省绍兴市新昌县', + '330681': '浙江省绍兴市诸暨市', + '330682': '浙江省绍兴市上虞市', + '330683': '浙江省绍兴市嵊州市', + '330700': '浙江省金华市', + '330701': '浙江省金华市市辖区', + '330702': '浙江省金华市婺城区', + '330721': '浙江省金华市金华县', + '330723': '浙江省金华市武义县', + '330726': '浙江省金华市浦江县', + '330727': '浙江省金华市磐安县', + '330781': '浙江省金华市兰溪市', + '330782': '浙江省金华市义乌市', + '330783': '浙江省金华市东阳市', + '330784': '浙江省金华市永康市', + '330800': '浙江省衢州市', + '330801': '浙江省衢州市市辖区', + '330802': '浙江省衢州市柯城区', + '330821': '浙江省衢州市衢县', + '330822': '浙江省衢州市常山县', + '330824': '浙江省衢州市开化县', + '330825': '浙江省衢州市龙游县', + '330881': '浙江省衢州市江山市', + '330900': '浙江省舟山市', + '330901': '浙江省舟山市市辖区', + '330902': '浙江省舟山市定海区', + '330903': '浙江省舟山市普陀区', + '330921': '浙江省舟山市岱山县', + '330922': '浙江省舟山市嵊泗县', + '331000': '浙江省台州市', + '331001': '浙江省台州市市辖区', + '331002': '浙江省台州市椒江区', + '331003': '浙江省台州市黄岩区', + '331004': '浙江省台州市路桥区', + '331021': '浙江省台州市玉环县', + '331022': '浙江省台州市三门县', + '331023': '浙江省台州市天台县', + '331024': '浙江省台州市仙居县', + '331081': '浙江省台州市温岭市', + '331082': '浙江省台州市临海市', + '332500': '浙江省丽水地区', + '332501': '浙江省丽水地区丽水市', + '332502': '浙江省丽水地区龙泉市', + '332522': '浙江省丽水地区青田县', + '332523': '浙江省丽水地区云和县', + '332525': '浙江省丽水地区庆元县', + '332526': '浙江省丽水地区缙云县', + '332527': '浙江省丽水地区遂昌县', + '332528': '浙江省丽水地区松阳县', + '332529': '浙江省丽水地区景宁畲族自治县', + '340000': '安徽省', + '340100': '安徽省合肥市', + '340101': '安徽省合肥市市辖区', + '340102': '安徽省合肥市东市区', + '340103': '安徽省合肥市中市区', + '340104': '安徽省合肥市西市区', + '340111': '安徽省合肥市郊区', + '340121': '安徽省合肥市长丰县', + '340122': '安徽省合肥市肥东县', + '340123': '安徽省合肥市肥西县', + '340200': '安徽省芜湖市', + '340201': '安徽省芜湖市市辖区', + '340202': '安徽省芜湖市镜湖区', + '340203': '安徽省芜湖市马塘区', + '340204': '安徽省芜湖市新芜区', + '340207': '安徽省芜湖市鸠江区', + '340221': '安徽省芜湖市芜湖县', + '340222': '安徽省芜湖市繁昌县', + '340223': '安徽省芜湖市南陵县', + '340300': '安徽省蚌埠市', + '340301': '安徽省蚌埠市市辖区', + '340302': '安徽省蚌埠市东市区', + '340303': '安徽省蚌埠市中市区', + '340304': '安徽省蚌埠市西市区', + '340311': '安徽省蚌埠市郊区', + '340321': '安徽省蚌埠市怀远县', + '340322': '安徽省蚌埠市五河县', + '340323': '安徽省蚌埠市固镇县', + '340400': '安徽省淮南市', + '340401': '安徽省淮南市市辖区', + '340402': '安徽省淮南市大通区', + '340403': '安徽省淮南市田家庵区', + '340404': '安徽省淮南市谢家集区', + '340405': '安徽省淮南市八公山区', + '340406': '安徽省淮南市潘集区', + '340421': '安徽省淮南市凤台县', + '340500': '安徽省马鞍山市', + '340501': '安徽省马鞍山市市辖区', + '340502': '安徽省马鞍山市金家庄区', + '340503': '安徽省马鞍山市花山区', + '340504': '安徽省马鞍山市雨山区', + '340505': '安徽省马鞍山市向山区', + '340521': '安徽省马鞍山市当涂县', + '340600': '安徽省淮北市', + '340601': '安徽省淮北市市辖区', + '340602': '安徽省淮北市杜集区', + '340603': '安徽省淮北市相山区', + '340604': '安徽省淮北市烈山区', + '340621': '安徽省淮北市濉溪县', + '340700': '安徽省铜陵市', + '340701': '安徽省铜陵市市辖区', + '340702': '安徽省铜陵市铜官山区', + '340703': '安徽省铜陵市狮子山区', + '340711': '安徽省铜陵市郊区', + '340721': '安徽省铜陵市铜陵县', + '340800': '安徽省安庆市', + '340801': '安徽省安庆市市辖区', + '340802': '安徽省安庆市迎江区', + '340803': '安徽省安庆市大观区', + '340811': '安徽省安庆市郊区', + '340822': '安徽省安庆市怀宁县', + '340823': '安徽省安庆市枞阳县', + '340824': '安徽省安庆市潜山县', + '340825': '安徽省安庆市太湖县', + '340826': '安徽省安庆市宿松县', + '340827': '安徽省安庆市望江县', + '340828': '安徽省安庆市岳西县', + '340881': '安徽省安庆市桐城市', + '341000': '安徽省黄山市', + '341001': '安徽省黄山市市辖区', + '341002': '安徽省黄山市屯溪区', + '341003': '安徽省黄山市黄山区', + '341004': '安徽省黄山市徽州区', + '341021': '安徽省黄山市歙县', + '341022': '安徽省黄山市休宁县', + '341023': '安徽省黄山市黟县', + '341024': '安徽省黄山市祁门县', + '341100': '安徽省滁州市', + '341101': '安徽省滁州市市辖区', + '341102': '安徽省滁州市琅琊区', + '341103': '安徽省滁州市南谯区', + '341122': '安徽省滁州市来安县', + '341124': '安徽省滁州市全椒县', + '341125': '安徽省滁州市定远县', + '341126': '安徽省滁州市凤阳县', + '341181': '安徽省滁州市天长市', + '341182': '安徽省滁州市明光市', + '341200': '安徽省阜阳市', + '341201': '安徽省阜阳市市辖区', + '341202': '安徽省阜阳市颍州区', + '341203': '安徽省阜阳市颍东区', + '341204': '安徽省阜阳市颍泉区', + '341221': '安徽省阜阳市临泉县', + '341222': '安徽省阜阳市太和县', + '341223': '安徽省阜阳市涡阳县', + '341224': '安徽省阜阳市蒙城县', + '341225': '安徽省阜阳市阜南县', + '341226': '安徽省阜阳市颍上县', + '341227': '安徽省阜阳市利辛县', + '341281': '安徽省阜阳市亳州市', + '341282': '安徽省阜阳市界首市', + '341300': '安徽省宿州市', + '341301': '安徽省宿州市市辖区', + '341302': '安徽省宿州市甬桥区', + '341321': '安徽省宿州市砀山县', + '341322': '安徽省宿州市萧县', + '341323': '安徽省宿州市灵璧县', + '341324': '安徽省宿州市泗县', + '342400': '安徽省六安地区', + '342401': '安徽省六安地区六安市', + '342422': '安徽省六安地区寿县', + '342423': '安徽省六安地区霍邱县', + '342425': '安徽省六安地区舒城县', + '342426': '安徽省六安地区金寨县', + '342427': '安徽省六安地区霍山县', + '342500': '安徽省宣城地区', + '342501': '安徽省宣城地区宣州市', + '342502': '安徽省宣城地区宁国市', + '342522': '安徽省宣城地区郎溪县', + '342523': '安徽省宣城地区广德县', + '342529': '安徽省宣城地区泾县', + '342530': '安徽省宣城地区旌德县', + '342531': '安徽省宣城地区绩溪县', + '342600': '安徽省巢湖地区', + '342601': '安徽省巢湖地区巢湖市', + '342622': '安徽省巢湖地区庐江县', + '342623': '安徽省巢湖地区无为县', + '342625': '安徽省巢湖地区含山县', + '342626': '安徽省巢湖地区和县', + '342900': '安徽省池州地区', + '342901': '安徽省池州地区贵池市', + '342921': '安徽省池州地区东至县', + '342922': '安徽省池州地区石台县', + '342923': '安徽省池州地区青阳县', + '350000': '福建省', + '350100': '福建省福州市', + '350101': '福建省福州市市辖区', + '350102': '福建省福州市鼓楼区', + '350103': '福建省福州市台江区', + '350104': '福建省福州市仓山区', + '350105': '福建省福州市马尾区', + '350111': '福建省福州市晋安区', + '350121': '福建省福州市闽侯县', + '350122': '福建省福州市连江县', + '350123': '福建省福州市罗源县', + '350124': '福建省福州市闽清县', + '350125': '福建省福州市永泰县', + '350128': '福建省福州市平潭县', + '350181': '福建省福州市福清市', + '350182': '福建省福州市长乐市', + '350200': '福建省厦门市', + '350201': '福建省厦门市市辖区', + '350202': '福建省厦门市鼓浪屿区', + '350203': '福建省厦门市思明区', + '350204': '福建省厦门市开元区', + '350205': '福建省厦门市杏林区', + '350206': '福建省厦门市湖里区', + '350211': '福建省厦门市集美区', + '350212': '福建省厦门市同安区', + '350300': '福建省莆田市', + '350301': '福建省莆田市市辖区', + '350302': '福建省莆田市城厢区', + '350303': '福建省莆田市涵江区', + '350321': '福建省莆田市莆田县', + '350322': '福建省莆田市仙游县', + '350400': '福建省三明市', + '350401': '福建省三明市市辖区', + '350402': '福建省三明市梅列区', + '350403': '福建省三明市三元区', + '350421': '福建省三明市明溪县', + '350423': '福建省三明市清流县', + '350424': '福建省三明市宁化县', + '350425': '福建省三明市大田县', + '350426': '福建省三明市尤溪县', + '350427': '福建省三明市沙县', + '350428': '福建省三明市将乐县', + '350429': '福建省三明市泰宁县', + '350430': '福建省三明市建宁县', + '350481': '福建省三明市永安市', + '350500': '福建省泉州市', + '350501': '福建省泉州市市辖区', + '350502': '福建省泉州市鲤城区', + '350503': '福建省泉州市丰泽区', + '350504': '福建省泉州市洛江区', + '350521': '福建省泉州市惠安县', + '350524': '福建省泉州市安溪县', + '350525': '福建省泉州市永春县', + '350526': '福建省泉州市德化县', + '350527': '福建省泉州市金门县', + '350581': '福建省泉州市石狮市', + '350582': '福建省泉州市晋江市', + '350583': '福建省泉州市南安市', + '350600': '福建省漳州市', + '350601': '福建省漳州市市辖区', + '350602': '福建省漳州市芗城区', + '350603': '福建省漳州市龙文区', + '350622': '福建省漳州市云霄县', + '350623': '福建省漳州市漳浦县', + '350624': '福建省漳州市诏安县', + '350625': '福建省漳州市长泰县', + '350626': '福建省漳州市东山县', + '350627': '福建省漳州市南靖县', + '350628': '福建省漳州市平和县', + '350629': '福建省漳州市华安县', + '350681': '福建省漳州市龙海市', + '350700': '福建省南平市', + '350701': '福建省南平市市辖区', + '350702': '福建省南平市延平区', + '350721': '福建省南平市顺昌县', + '350722': '福建省南平市浦城县', + '350723': '福建省南平市光泽县', + '350724': '福建省南平市松溪县', + '350725': '福建省南平市政和县', + '350781': '福建省南平市邵武市', + '350782': '福建省南平市武夷山市', + '350783': '福建省南平市建瓯市', + '350784': '福建省南平市建阳市', + '350800': '福建省龙岩市', + '350801': '福建省龙岩市市辖区', + '350802': '福建省龙岩市新罗区', + '350821': '福建省龙岩市长汀县', + '350822': '福建省龙岩市永定县', + '350823': '福建省龙岩市上杭县', + '350824': '福建省龙岩市武平县', + '350825': '福建省龙岩市连城县', + '350881': '福建省龙岩市漳平市', + '352200': '福建省宁德地区', + '352201': '福建省宁德地区宁德市', + '352202': '福建省宁德地区福安市', + '352203': '福建省宁德地区福鼎市', + '352225': '福建省宁德地区霞浦县', + '352227': '福建省宁德地区古田县', + '352228': '福建省宁德地区屏南县', + '352229': '福建省宁德地区寿宁县', + '352230': '福建省宁德地区周宁县', + '352231': '福建省宁德地区柘荣县', + '360000': '江西省', + '360100': '江西省南昌市', + '360101': '江西省南昌市市辖区', + '360102': '江西省南昌市东湖区', + '360103': '江西省南昌市西湖区', + '360104': '江西省南昌市青云谱区', + '360105': '江西省南昌市湾里区', + '360111': '江西省南昌市郊区', + '360121': '江西省南昌市南昌县', + '360122': '江西省南昌市新建县', + '360123': '江西省南昌市安义县', + '360124': '江西省南昌市进贤县', + '360200': '江西省景德镇市', + '360201': '江西省景德镇市市辖区', + '360202': '江西省景德镇市昌江区', + '360203': '江西省景德镇市珠山区', + '360222': '江西省景德镇市浮梁县', + '360281': '江西省景德镇市乐平市', + '360300': '江西省萍乡市', + '360301': '江西省萍乡市市辖区', + '360302': '江西省萍乡市安源区', + '360313': '江西省萍乡市湘东区', + '360321': '江西省萍乡市莲花县', + '360322': '江西省萍乡市上栗县', + '360323': '江西省萍乡市芦溪县', + '360400': '江西省九江市', + '360401': '江西省九江市市辖区', + '360402': '江西省九江市庐山区', + '360403': '江西省九江市浔阳区', + '360421': '江西省九江市九江县', + '360423': '江西省九江市武宁县', + '360424': '江西省九江市修水县', + '360425': '江西省九江市永修县', + '360426': '江西省九江市德安县', + '360427': '江西省九江市星子县', + '360428': '江西省九江市都昌县', + '360429': '江西省九江市湖口县', + '360430': '江西省九江市彭泽县', + '360481': '江西省九江市瑞昌市', + '360500': '江西省新余市', + '360501': '江西省新余市市辖区', + '360502': '江西省新余市渝水区', + '360521': '江西省新余市分宜县', + '360600': '江西省鹰潭市', + '360601': '江西省鹰潭市市辖区', + '360602': '江西省鹰潭市月湖区', + '360622': '江西省鹰潭市余江县', + '360681': '江西省鹰潭市贵溪市', + '360700': '江西省赣州市', + '360701': '江西省赣州市市辖区', + '360702': '江西省赣州市章贡区', + '360721': '江西省赣州市赣县', + '360722': '江西省赣州市信丰县', + '360723': '江西省赣州市大余县', + '360724': '江西省赣州市上犹县', + '360725': '江西省赣州市崇义县', + '360726': '江西省赣州市安远县', + '360727': '江西省赣州市龙南县', + '360728': '江西省赣州市定南县', + '360729': '江西省赣州市全南县', + '360730': '江西省赣州市宁都县', + '360731': '江西省赣州市于都县', + '360732': '江西省赣州市兴国县', + '360733': '江西省赣州市会昌县', + '360734': '江西省赣州市寻乌县', + '360735': '江西省赣州市石城县', + '360781': '江西省赣州市瑞金市', + '360782': '江西省赣州市南康市', + '362200': '江西省宜春地区', + '362201': '江西省宜春地区宜春市', + '362202': '江西省宜春地区丰城市', + '362203': '江西省宜春地区樟树市', + '362204': '江西省宜春地区高安市', + '362226': '江西省宜春地区奉新县', + '362227': '江西省宜春地区万载县', + '362228': '江西省宜春地区上高县', + '362229': '江西省宜春地区宜丰县', + '362232': '江西省宜春地区靖安县', + '362233': '江西省宜春地区铜鼓县', + '362300': '江西省上饶地区', + '362301': '江西省上饶地区上饶市', + '362302': '江西省上饶地区德兴市', + '362321': '江西省上饶地区上饶县', + '362322': '江西省上饶地区广丰县', + '362323': '江西省上饶地区玉山县', + '362324': '江西省上饶地区铅山县', + '362325': '江西省上饶地区横峰县', + '362326': '江西省上饶地区弋阳县', + '362329': '江西省上饶地区余干县', + '362330': '江西省上饶地区波阳县', + '362331': '江西省上饶地区万年县', + '362334': '江西省上饶地区婺源县', + '362400': '江西省吉安地区', + '362401': '江西省吉安地区吉安市', + '362402': '江西省吉安地区井冈山市', + '362421': '江西省吉安地区吉安县', + '362422': '江西省吉安地区吉水县', + '362423': '江西省吉安地区峡江县', + '362424': '江西省吉安地区新干县', + '362425': '江西省吉安地区永丰县', + '362426': '江西省吉安地区泰和县', + '362427': '江西省吉安地区遂川县', + '362428': '江西省吉安地区万安县', + '362429': '江西省吉安地区安福县', + '362430': '江西省吉安地区永新县', + '362432': '江西省吉安地区宁冈县', + '362500': '江西省抚州地区', + '362502': '江西省抚州地区临川市', + '362522': '江西省抚州地区南城县', + '362523': '江西省抚州地区黎川县', + '362524': '江西省抚州地区南丰县', + '362525': '江西省抚州地区崇仁县', + '362526': '江西省抚州地区乐安县', + '362527': '江西省抚州地区宜黄县', + '362528': '江西省抚州地区金溪县', + '362529': '江西省抚州地区资溪县', + '362531': '江西省抚州地区东乡县', + '362532': '江西省抚州地区广昌县', + '370000': '山东省', + '370100': '山东省济南市', + '370101': '山东省济南市市辖区', + '370102': '山东省济南市历下区', + '370103': '山东省济南市市中区', + '370104': '山东省济南市槐荫区', + '370105': '山东省济南市天桥区', + '370112': '山东省济南市历城区', + '370123': '山东省济南市长清县', + '370124': '山东省济南市平阴县', + '370125': '山东省济南市济阳县', + '370126': '山东省济南市商河县', + '370181': '山东省济南市章丘市', + '370200': '山东省青岛市', + '370201': '山东省青岛市市辖区', + '370202': '山东省青岛市市南区', + '370203': '山东省青岛市市北区', + '370205': '山东省青岛市四方区', + '370211': '山东省青岛市黄岛区', + '370212': '山东省青岛市崂山区', + '370213': '山东省青岛市李沧区', + '370214': '山东省青岛市城阳区', + '370281': '山东省青岛市胶州市', + '370282': '山东省青岛市即墨市', + '370283': '山东省青岛市平度市', + '370284': '山东省青岛市胶南市', + '370285': '山东省青岛市莱西市', + '370300': '山东省淄博市', + '370301': '山东省淄博市市辖区', + '370302': '山东省淄博市淄川区', + '370303': '山东省淄博市张店区', + '370304': '山东省淄博市博山区', + '370305': '山东省淄博市临淄区', + '370306': '山东省淄博市周村区', + '370321': '山东省淄博市桓台县', + '370322': '山东省淄博市高青县', + '370323': '山东省淄博市沂源县', + '370400': '山东省枣庄市', + '370401': '山东省枣庄市市辖区', + '370402': '山东省枣庄市市中区', + '370403': '山东省枣庄市薛城区', + '370404': '山东省枣庄市峄城区', + '370405': '山东省枣庄市台儿庄区', + '370406': '山东省枣庄市山亭区', + '370481': '山东省枣庄市滕州市', + '370500': '山东省东营市', + '370501': '山东省东营市市辖区', + '370502': '山东省东营市东营区', + '370503': '山东省东营市河口区', + '370521': '山东省东营市垦利县', + '370522': '山东省东营市利津县', + '370523': '山东省东营市广饶县', + '370600': '山东省烟台市', + '370601': '山东省烟台市市辖区', + '370602': '山东省烟台市芝罘区', + '370611': '山东省烟台市福山区', + '370612': '山东省烟台市牟平区', + '370613': '山东省烟台市莱山区', + '370634': '山东省烟台市长岛县', + '370681': '山东省烟台市龙口市', + '370682': '山东省烟台市莱阳市', + '370683': '山东省烟台市莱州市', + '370684': '山东省烟台市蓬莱市', + '370685': '山东省烟台市招远市', + '370686': '山东省烟台市栖霞市', + '370687': '山东省烟台市海阳市', + '370700': '山东省潍坊市', + '370701': '山东省潍坊市市辖区', + '370702': '山东省潍坊市潍城区', + '370703': '山东省潍坊市寒亭区', + '370704': '山东省潍坊市坊子区', + '370705': '山东省潍坊市奎文区', + '370724': '山东省潍坊市临朐县', + '370725': '山东省潍坊市昌乐县', + '370781': '山东省潍坊市青州市', + '370782': '山东省潍坊市诸城市', + '370783': '山东省潍坊市寿光市', + '370784': '山东省潍坊市安丘市', + '370785': '山东省潍坊市高密市', + '370786': '山东省潍坊市昌邑市', + '370800': '山东省济宁市', + '370801': '山东省济宁市市辖区', + '370802': '山东省济宁市市中区', + '370811': '山东省济宁市任城区', + '370826': '山东省济宁市微山县', + '370827': '山东省济宁市鱼台县', + '370828': '山东省济宁市金乡县', + '370829': '山东省济宁市嘉祥县', + '370830': '山东省济宁市汶上县', + '370831': '山东省济宁市泗水县', + '370832': '山东省济宁市梁山县', + '370881': '山东省济宁市曲阜市', + '370882': '山东省济宁市兖州市', + '370883': '山东省济宁市邹城市', + '370900': '山东省泰安市', + '370901': '山东省泰安市市辖区', + '370902': '山东省泰安市泰山区', + '370911': '山东省泰安市郊区', + '370921': '山东省泰安市宁阳县', + '370923': '山东省泰安市东平县', + '370982': '山东省泰安市新泰市', + '370983': '山东省泰安市肥城市', + '371000': '山东省威海市', + '371001': '山东省威海市市辖区', + '371002': '山东省威海市环翠区', + '371081': '山东省威海市文登市', + '371082': '山东省威海市荣成市', + '371083': '山东省威海市乳山市', + '371100': '山东省日照市', + '371101': '山东省日照市市辖区', + '371102': '山东省日照市东港区', + '371121': '山东省日照市五莲县', + '371122': '山东省日照市莒县', + '371200': '山东省莱芜市', + '371201': '山东省莱芜市市辖区', + '371202': '山东省莱芜市莱城区', + '371203': '山东省莱芜市钢城区', + '371300': '山东省临沂市', + '371301': '山东省临沂市市辖区', + '371302': '山东省临沂市兰山区', + '371311': '山东省临沂市罗庄区', + '371312': '山东省临沂市河东区', + '371321': '山东省临沂市沂南县', + '371322': '山东省临沂市郯城县', + '371323': '山东省临沂市沂水县', + '371324': '山东省临沂市苍山县', + '371325': '山东省临沂市费县', + '371326': '山东省临沂市平邑县', + '371327': '山东省临沂市莒南县', + '371328': '山东省临沂市蒙阴县', + '371329': '山东省临沂市临沭县', + '371400': '山东省德州市', + '371401': '山东省德州市市辖区', + '371402': '山东省德州市德城区', + '371421': '山东省德州市陵县', + '371422': '山东省德州市宁津县', + '371423': '山东省德州市庆云县', + '371424': '山东省德州市临邑县', + '371425': '山东省德州市齐河县', + '371426': '山东省德州市平原县', + '371427': '山东省德州市夏津县', + '371428': '山东省德州市武城县', + '371481': '山东省德州市乐陵市', + '371482': '山东省德州市禹城市', + '371500': '山东省聊城市', + '371501': '山东省聊城市市辖区', + '371502': '山东省聊城市东昌府区', + '371521': '山东省聊城市阳谷县', + '371522': '山东省聊城市莘县', + '371523': '山东省聊城市茌平县', + '371524': '山东省聊城市东阿县', + '371525': '山东省聊城市冠县', + '371526': '山东省聊城市高唐县', + '371581': '山东省聊城市临清市', + '372300': '山东省滨州地区', + '372301': '山东省滨州地区滨州市', + '372321': '山东省滨州地区惠民县', + '372323': '山东省滨州地区阳信县', + '372324': '山东省滨州地区无棣县', + '372325': '山东省滨州地区沾化县', + '372328': '山东省滨州地区博兴县', + '372330': '山东省滨州地区邹平县', + '372900': '山东省菏泽地区', + '372901': '山东省菏泽地区菏泽市', + '372922': '山东省菏泽地区曹县', + '372923': '山东省菏泽地区定陶县', + '372924': '山东省菏泽地区成武县', + '372925': '山东省菏泽地区单县', + '372926': '山东省菏泽地区巨野县', + '372928': '山东省菏泽地区郓城县', + '372929': '山东省菏泽地区鄄城县', + '372930': '山东省菏泽地区东明县', + '410000': '河南省', + '410100': '河南省郑州市', + '410101': '河南省郑州市市辖区', + '410102': '河南省郑州市中原区', + '410103': '河南省郑州市二七区', + '410104': '河南省郑州市管城回族区', + '410105': '河南省郑州市金水区', + '410106': '河南省郑州市上街区', + '410108': '河南省郑州市邙山区', + '410122': '河南省郑州市中牟县', + '410181': '河南省郑州市巩义市', + '410182': '河南省郑州市荥阳市', + '410183': '河南省郑州市新密市', + '410184': '河南省郑州市新郑市', + '410185': '河南省郑州市登封市', + '410200': '河南省开封市', + '410201': '河南省开封市市辖区', + '410202': '河南省开封市龙亭区', + '410203': '河南省开封市顺河回族区', + '410204': '河南省开封市鼓楼区', + '410205': '河南省开封市南关区', + '410211': '河南省开封市郊区', + '410221': '河南省开封市杞县', + '410222': '河南省开封市通许县', + '410223': '河南省开封市尉氏县', + '410224': '河南省开封市开封县', + '410225': '河南省开封市兰考县', + '410300': '河南省洛阳市', + '410301': '河南省洛阳市市辖区', + '410302': '河南省洛阳市老城区', + '410303': '河南省洛阳市西工区', + '410304': '河南省洛阳市廛河回族区', + '410305': '河南省洛阳市涧西区', + '410306': '河南省洛阳市吉利区', + '410311': '河南省洛阳市郊区', + '410322': '河南省洛阳市孟津县', + '410323': '河南省洛阳市新安县', + '410324': '河南省洛阳市栾川县', + '410325': '河南省洛阳市嵩县', + '410326': '河南省洛阳市汝阳县', + '410327': '河南省洛阳市宜阳县', + '410328': '河南省洛阳市洛宁县', + '410329': '河南省洛阳市伊川县', + '410381': '河南省洛阳市偃师市', + '410400': '河南省平顶山市', + '410401': '河南省平顶山市市辖区', + '410402': '河南省平顶山市新华区', + '410403': '河南省平顶山市卫东区', + '410404': '河南省平顶山市石龙区', + '410411': '河南省平顶山市湛河区', + '410421': '河南省平顶山市宝丰县', + '410422': '河南省平顶山市叶县', + '410423': '河南省平顶山市鲁山县', + '410425': '河南省平顶山市郏县', + '410481': '河南省平顶山市舞钢市', + '410482': '河南省平顶山市汝州市', + '410500': '河南省安阳市', + '410501': '河南省安阳市市辖区', + '410502': '河南省安阳市文峰区', + '410503': '河南省安阳市北关区', + '410504': '河南省安阳市铁西区', + '410511': '河南省安阳市郊区', + '410522': '河南省安阳市安阳县', + '410523': '河南省安阳市汤阴县', + '410526': '河南省安阳市滑县', + '410527': '河南省安阳市内黄县', + '410581': '河南省安阳市林州市', + '410600': '河南省鹤壁市', + '410601': '河南省鹤壁市市辖区', + '410602': '河南省鹤壁市鹤山区', + '410603': '河南省鹤壁市山城区', + '410611': '河南省鹤壁市郊区', + '410621': '河南省鹤壁市浚县', + '410622': '河南省鹤壁市淇县', + '410700': '河南省新乡市', + '410701': '河南省新乡市市辖区', + '410702': '河南省新乡市红旗区', + '410703': '河南省新乡市新华区', + '410704': '河南省新乡市北站区', + '410711': '河南省新乡市郊区', + '410721': '河南省新乡市新乡县', + '410724': '河南省新乡市获嘉县', + '410725': '河南省新乡市原阳县', + '410726': '河南省新乡市延津县', + '410727': '河南省新乡市封丘县', + '410728': '河南省新乡市长垣县', + '410781': '河南省新乡市卫辉市', + '410782': '河南省新乡市辉县市', + '410800': '河南省焦作市', + '410801': '河南省焦作市市辖区', + '410802': '河南省焦作市解放区', + '410803': '河南省焦作市中站区', + '410804': '河南省焦作市马村区', + '410811': '河南省焦作市山阳区', + '410821': '河南省焦作市修武县', + '410822': '河南省焦作市博爱县', + '410823': '河南省焦作市武陟县', + '410825': '河南省焦作市温县', + '410881': '河南省焦作市济源市', + '410882': '河南省焦作市沁阳市', + '410883': '河南省焦作市孟州市', + '410900': '河南省濮阳市', + '410901': '河南省濮阳市市辖区', + '410902': '河南省濮阳市市区', + '410922': '河南省濮阳市清丰县', + '410923': '河南省濮阳市南乐县', + '410926': '河南省濮阳市范县', + '410927': '河南省濮阳市台前县', + '410928': '河南省濮阳市濮阳县', + '411000': '河南省许昌市', + '411001': '河南省许昌市市辖区', + '411002': '河南省许昌市魏都区', + '411023': '河南省许昌市许昌县', + '411024': '河南省许昌市鄢陵县', + '411025': '河南省许昌市襄城县', + '411081': '河南省许昌市禹州市', + '411082': '河南省许昌市长葛市', + '411100': '河南省漯河市', + '411101': '河南省漯河市市辖区', + '411102': '河南省漯河市源汇区', + '411121': '河南省漯河市舞阳县', + '411122': '河南省漯河市临颍县', + '411123': '河南省漯河市郾城县', + '411200': '河南省三门峡市', + '411201': '河南省三门峡市市辖区', + '411202': '河南省三门峡市湖滨区', + '411221': '河南省三门峡市渑池县', + '411222': '河南省三门峡市陕县', + '411224': '河南省三门峡市卢氏县', + '411281': '河南省三门峡市义马市', + '411282': '河南省三门峡市灵宝市', + '411300': '河南省南阳市', + '411301': '河南省南阳市市辖区', + '411302': '河南省南阳市宛城区', + '411303': '河南省南阳市卧龙区', + '411321': '河南省南阳市南召县', + '411322': '河南省南阳市方城县', + '411323': '河南省南阳市西峡县', + '411324': '河南省南阳市镇平县', + '411325': '河南省南阳市内乡县', + '411326': '河南省南阳市淅川县', + '411327': '河南省南阳市社旗县', + '411328': '河南省南阳市唐河县', + '411329': '河南省南阳市新野县', + '411330': '河南省南阳市桐柏县', + '411381': '河南省南阳市邓州市', + '411400': '河南省商丘市', + '411401': '河南省商丘市市辖区', + '411402': '河南省商丘市梁园区', + '411403': '河南省商丘市睢阳区', + '411421': '河南省商丘市民权县', + '411422': '河南省商丘市睢县', + '411423': '河南省商丘市宁陵县', + '411424': '河南省商丘市柘城县', + '411425': '河南省商丘市虞城县', + '411426': '河南省商丘市夏邑县', + '411481': '河南省商丘市永城市', + '411500': '河南省信阳市', + '411501': '河南省信阳市市辖区', + '411502': '河南省信阳市师河区', + '411503': '河南省信阳市平桥区', + '411521': '河南省信阳市罗山县', + '411522': '河南省信阳市光山县', + '411523': '河南省信阳市新县', + '411524': '河南省信阳市商城县', + '411525': '河南省信阳市固始县', + '411526': '河南省信阳市潢川县', + '411527': '河南省信阳市淮滨县', + '411528': '河南省信阳市息县', + '412700': '河南省周口地区', + '412701': '河南省周口地区周口市', + '412702': '河南省周口地区项城市', + '412721': '河南省周口地区扶沟县', + '412722': '河南省周口地区西华县', + '412723': '河南省周口地区商水县', + '412724': '河南省周口地区太康县', + '412725': '河南省周口地区鹿邑县', + '412726': '河南省周口地区郸城县', + '412727': '河南省周口地区淮阳县', + '412728': '河南省周口地区沈丘县', + '412800': '河南省驻马店地区', + '412801': '河南省驻马店地区驻马店市', + '412821': '河南省驻马店地区确山县', + '412822': '河南省驻马店地区泌阳县', + '412823': '河南省驻马店地区遂平县', + '412824': '河南省驻马店地区西平县', + '412825': '河南省驻马店地区上蔡县', + '412826': '河南省驻马店地区汝南县', + '412827': '河南省驻马店地区平舆县', + '412828': '河南省驻马店地区新蔡县', + '412829': '河南省驻马店地区正阳县', + '420000': '湖北省', + '420100': '湖北省武汉市', + '420101': '湖北省武汉市市辖区', + '420102': '湖北省武汉市江岸区', + '420103': '湖北省武汉市江汉区', + '420104': '湖北省武汉市乔口区', + '420105': '湖北省武汉市汉阳区', + '420106': '湖北省武汉市武昌区', + '420107': '湖北省武汉市青山区', + '420111': '湖北省武汉市洪山区', + '420112': '湖北省武汉市东西湖区', + '420113': '湖北省武汉市汉南区', + '420114': '湖北省武汉市蔡甸区', + '420115': '湖北省武汉市江夏区', + '420116': '湖北省武汉市黄陂区', + '420117': '湖北省武汉市新洲区', + '420200': '湖北省黄石市', + '420201': '湖北省黄石市市辖区', + '420202': '湖北省黄石市黄石港区', + '420203': '湖北省黄石市石灰窑区', + '420204': '湖北省黄石市下陆区', + '420205': '湖北省黄石市铁山区', + '420222': '湖北省黄石市阳新县', + '420281': '湖北省黄石市大冶市', + '420300': '湖北省十堰市', + '420301': '湖北省十堰市市辖区', + '420302': '湖北省十堰市茅箭区', + '420303': '湖北省十堰市张湾区', + '420321': '湖北省十堰市郧县', + '420322': '湖北省十堰市郧西县', + '420323': '湖北省十堰市竹山县', + '420324': '湖北省十堰市竹溪县', + '420325': '湖北省十堰市房县', + '420381': '湖北省十堰市丹江口市', + '420500': '湖北省宜昌市', + '420501': '湖北省宜昌市市辖区', + '420502': '湖北省宜昌市西陵区', + '420503': '湖北省宜昌市伍家岗区', + '420504': '湖北省宜昌市点军区', + '420505': '湖北省宜昌市虎亭区', + '420521': '湖北省宜昌市宜昌县', + '420525': '湖北省宜昌市远安县', + '420526': '湖北省宜昌市兴山县', + '420527': '湖北省宜昌市秭归县', + '420528': '湖北省宜昌市长阳土家族自治县', + '420529': '湖北省宜昌市五峰土家族自治县', + '420581': '湖北省宜昌市宜都市', + '420582': '湖北省宜昌市当阳市', + '420583': '湖北省宜昌市枝江市', + '420600': '湖北省襄樊市', + '420601': '湖北省襄樊市市辖区', + '420602': '湖北省襄樊市襄城区', + '420606': '湖北省襄樊市樊城区', + '420621': '湖北省襄樊市襄阳县', + '420624': '湖北省襄樊市南漳县', + '420625': '湖北省襄樊市谷城县', + '420626': '湖北省襄樊市保康县', + '420682': '湖北省襄樊市老河口市', + '420683': '湖北省襄樊市枣阳市', + '420684': '湖北省襄樊市宜城市', + '420700': '湖北省鄂州市', + '420701': '湖北省鄂州市市辖区', + '420702': '湖北省鄂州市梁子湖区', + '420703': '湖北省鄂州市华容区', + '420704': '湖北省鄂州市鄂城区', + '420800': '湖北省荆门市', + '420801': '湖北省荆门市市辖区', + '420802': '湖北省荆门市东宝区', + '420821': '湖北省荆门市京山县', + '420822': '湖北省荆门市沙洋县', + '420881': '湖北省荆门市钟祥市', + '420900': '湖北省孝感市', + '420901': '湖北省孝感市市辖区', + '420902': '湖北省孝感市孝南区', + '420921': '湖北省孝感市孝昌县', + '420922': '湖北省孝感市大悟县', + '420923': '湖北省孝感市云梦县', + '420981': '湖北省孝感市应城市', + '420982': '湖北省孝感市安陆市', + '420983': '湖北省孝感市广水市', + '420984': '湖北省孝感市汉川市', + '421000': '湖北省荆州市', + '421001': '湖北省荆州市市辖区', + '421002': '湖北省荆州市沙市区', + '421003': '湖北省荆州市荆州区', + '421022': '湖北省荆州市公安县', + '421023': '湖北省荆州市监利县', + '421024': '湖北省荆州市江陵县', + '421081': '湖北省荆州市石首市', + '421083': '湖北省荆州市洪湖市', + '421087': '湖北省荆州市松滋市', + '421100': '湖北省黄冈市', + '421101': '湖北省黄冈市市辖区', + '421102': '湖北省黄冈市黄州区', + '421121': '湖北省黄冈市团风县', + '421122': '湖北省黄冈市红安县', + '421123': '湖北省黄冈市罗田县', + '421124': '湖北省黄冈市英山县', + '421125': '湖北省黄冈市浠水县', + '421126': '湖北省黄冈市蕲春县', + '421127': '湖北省黄冈市黄梅县', + '421181': '湖北省黄冈市麻城市', + '421182': '湖北省黄冈市武穴市', + '421200': '湖北省咸宁市', + '421201': '湖北省咸宁市市辖区', + '421202': '湖北省咸宁市咸安区', + '421221': '湖北省咸宁市嘉鱼县', + '421222': '湖北省咸宁市通城县', + '421223': '湖北省咸宁市崇阳县', + '421224': '湖北省咸宁市通山县', + '422800': '湖北省施土家族苗族自治州', + '422801': '湖北省恩施土家族苗族自治州恩施县', + '422802': '湖北省恩施土家族苗族自治州利川市', + '422822': '湖北省恩施土家族苗族自治州建始县', + '422823': '湖北省恩施土家族苗族自治州巴东县', + '422825': '湖北省恩施土家族苗族自治州宣恩县', + '422826': '湖北省恩施土家族苗族自治州咸丰县', + '422827': '湖北省恩施土家族苗族自治州来凤县', + '422828': '湖北省恩施土家族苗族自治州鹤峰县', + '429000': '湖北省省直辖县级行政单位', + '429001': '湖北省随州市', + '429004': '湖北省仙桃市', + '429005': '湖北省潜江市', + '429006': '湖北省天门市', + '429021': '湖北省神农架林区', + '430000': '湖南省', + '430100': '湖南省长沙市', + '430101': '湖南省长沙市市辖区', + '430102': '湖南省长沙市芙蓉区', + '430103': '湖南省长沙市天心区', + '430104': '湖南省长沙市岳麓区', + '430105': '湖南省长沙市开福区', + '430111': '湖南省长沙市雨花区', + '430121': '湖南省长沙市长沙县', + '430122': '湖南省长沙市望城县', + '430124': '湖南省长沙市宁乡县', + '430181': '湖南省长沙市浏阳市', + '430200': '湖南省株洲市', + '430201': '湖南省株洲市市辖区', + '430202': '湖南省株洲市荷塘区', + '430203': '湖南省株洲市芦淞区', + '430204': '湖南省株洲市石峰区', + '430211': '湖南省株洲市天元区', + '430221': '湖南省株洲市株洲县', + '430223': '湖南省株洲市攸县', + '430224': '湖南省株洲市茶陵县', + '430225': '湖南省株洲市炎陵县', + '430281': '湖南省株洲市醴陵市', + '430300': '湖南省湘潭市', + '430301': '湖南省湘潭市市辖区', + '430302': '湖南省湘潭市雨湖区', + '430304': '湖南省湘潭市岳塘区', + '430321': '湖南省湘潭市湘潭县', + '430381': '湖南省湘潭市湘乡市', + '430382': '湖南省湘潭市韶山市', + '430400': '湖南省衡阳市', + '430401': '湖南省衡阳市市辖区', + '430402': '湖南省衡阳市江东区', + '430403': '湖南省衡阳市城南区', + '430404': '湖南省衡阳市城北区', + '430411': '湖南省衡阳市郊区', + '430412': '湖南省衡阳市南岳区', + '430421': '湖南省衡阳市衡阳县', + '430422': '湖南省衡阳市衡南县', + '430423': '湖南省衡阳市衡山县', + '430424': '湖南省衡阳市衡东县', + '430426': '湖南省衡阳市祁东县', + '430481': '湖南省衡阳市耒阳市', + '430482': '湖南省衡阳市常宁市', + '430500': '湖南省邵阳市', + '430501': '湖南省邵阳市市辖区', + '430502': '湖南省邵阳市双清区', + '430503': '湖南省邵阳市大祥区', + '430511': '湖南省邵阳市北塔区', + '430521': '湖南省邵阳市邵东县', + '430522': '湖南省邵阳市新邵县', + '430523': '湖南省邵阳市邵阳县', + '430524': '湖南省邵阳市隆回县', + '430525': '湖南省邵阳市洞口县', + '430527': '湖南省邵阳市绥宁县', + '430528': '湖南省邵阳市新宁县', + '430529': '湖南省邵阳市城步苗族自治县', + '430581': '湖南省邵阳市武冈市', + '430600': '湖南省岳阳市', + '430601': '湖南省岳阳市市辖区', + '430602': '湖南省岳阳市岳阳楼区', + '430603': '湖南省岳阳市云溪区', + '430611': '湖南省岳阳市君山区', + '430621': '湖南省岳阳市岳阳县', + '430623': '湖南省岳阳市华容县', + '430624': '湖南省岳阳市湘阴县', + '430626': '湖南省岳阳市平江县', + '430681': '湖南省岳阳市汨罗市', + '430682': '湖南省岳阳市临湘市', + '430700': '湖南省常德市', + '430701': '湖南省常德市市辖区', + '430702': '湖南省常德市武陵区', + '430703': '湖南省常德市鼎城区', + '430721': '湖南省常德市安乡县', + '430722': '湖南省常德市汉寿县', + '430723': '湖南省常德市澧县', + '430724': '湖南省常德市临澧县', + '430725': '湖南省常德市桃源县', + '430726': '湖南省常德市石门县', + '430781': '湖南省常德市津市市', + '430800': '湖南省张家界市', + '430801': '湖南省张家界市市辖区', + '430802': '湖南省张家界市永定区', + '430811': '湖南省张家界市武陵源区', + '430821': '湖南省张家界市慈利县', + '430822': '湖南省张家界市桑植县', + '430900': '湖南省益阳市', + '430901': '湖南省益阳市市辖区', + '430902': '湖南省益阳市资阳区', + '430903': '湖南省益阳市赫山区', + '430921': '湖南省益阳市南县', + '430922': '湖南省益阳市桃江县', + '430923': '湖南省益阳市安化县', + '430981': '湖南省益阳市沅江市', + '431000': '湖南省郴州市', + '431001': '湖南省郴州市市辖区', + '431002': '湖南省郴州市北湖区', + '431003': '湖南省郴州市苏仙区', + '431021': '湖南省郴州市桂阳县', + '431022': '湖南省郴州市宜章县', + '431023': '湖南省郴州市永兴县', + '431024': '湖南省郴州市嘉禾县', + '431025': '湖南省郴州市临武县', + '431026': '湖南省郴州市汝城县', + '431027': '湖南省郴州市桂东县', + '431028': '湖南省郴州市安仁县', + '431081': '湖南省郴州市资兴市', + '431100': '湖南省永州市', + '431101': '湖南省永州市市辖区', + '431102': '湖南省永州市芝山区', + '431103': '湖南省永州市冷水滩区', + '431121': '湖南省永州市祁阳县', + '431122': '湖南省永州市东安县', + '431123': '湖南省永州市双牌县', + '431124': '湖南省永州市道县', + '431125': '湖南省永州市江永县', + '431126': '湖南省永州市宁远县', + '431127': '湖南省永州市蓝山县', + '431128': '湖南省永州市新田县', + '431129': '湖南省永州市江华瑶族自治县', + '431200': '湖南省怀化市', + '431201': '湖南省怀化市市辖区', + '431202': '湖南省怀化市鹤城区', + '431221': '湖南省怀化市中方县', + '431222': '湖南省怀化市沅陵县', + '431223': '湖南省怀化市辰溪县', + '431224': '湖南省怀化市溆浦县', + '431225': '湖南省怀化市会同县', + '431226': '湖南省怀化市麻阳苗族自治县', + '431227': '湖南省怀化市新晃侗族自治县', + '431228': '湖南省怀化市芷江侗族自治县', + '431229': '湖南省怀化市靖州苗族侗族自治县', + '431230': '湖南省怀化市通道侗族自治县', + '431281': '湖南省怀化市洪江市', + '432500': '湖南省娄底地区', + '432501': '湖南省娄底地区娄底市', + '432502': '湖南省娄底地区冷水江市', + '432503': '湖南省娄底地区涟源市', + '432522': '湖南省娄底地区双峰县', + '432524': '湖南省娄底地区新化县', + '433000': '湖南省怀化市', + '433001': '湖南省怀化市', + '433100': '湖南省湘西土家族苗族自治州', + '433101': '湖南省湘西土家族苗族自治州吉首市', + '433122': '湖南省湘西土家族苗族自治州泸溪县', + '433123': '湖南省湘西土家族苗族自治州凤凰县', + '433124': '湖南省湘西土家族苗族自治州花垣县', + '433125': '湖南省湘西土家族苗族自治州保靖县', + '433126': '湖南省湘西土家族苗族自治州古丈县', + '433127': '湖南省湘西土家族苗族自治州永顺县', + '433130': '湖南省湘西土家族苗族自治州龙山县', + '440000': '广东省', + '440100': '广东省广州市', + '440101': '广东省广州市市辖区', + '440102': '广东省广州市东山区', + '440103': '广东省广州市荔湾区', + '440104': '广东省广州市越秀区', + '440105': '广东省广州市海珠区', + '440106': '广东省广州市天河区', + '440107': '广东省广州市芳村区', + '440111': '广东省广州市白云区', + '440112': '广东省广州市黄埔区', + '440181': '广东省广州市番禺市', + '440182': '广东省广州市花都市', + '440183': '广东省广州市增城市', + '440184': '广东省广州市从化市', + '440200': '广东省韶关市', + '440201': '广东省韶关市市辖区', + '440202': '广东省韶关市北江区', + '440203': '广东省韶关市武江区', + '440204': '广东省韶关市浈江区', + '440221': '广东省韶关市曲江县', + '440222': '广东省韶关市始兴县', + '440224': '广东省韶关市仁化县', + '440229': '广东省韶关市翁源县', + '440232': '广东省韶关市乳源瑶族自治县', + '440233': '广东省韶关市新丰县', + '440281': '广东省韶关市乐昌市', + '440282': '广东省韶关市南雄市', + '440300': '广东省深圳市', + '440301': '广东省深圳市市辖区', + '440303': '广东省深圳市罗湖区', + '440304': '广东省深圳市福田区', + '440305': '广东省深圳市南山区', + '440306': '广东省深圳市宝安区', + '440307': '广东省深圳市龙岗区', + '440308': '广东省深圳市盐田区', + '440400': '广东省珠海市', + '440401': '广东省珠海市市辖区', + '440402': '广东省珠海市香洲区', + '440421': '广东省珠海市斗门县', + '440500': '广东省汕头市', + '440501': '广东省汕头市市辖区', + '440506': '广东省汕头市达濠区', + '440507': '广东省汕头市龙湖区', + '440508': '广东省汕头市金园区', + '440509': '广东省汕头市升平区', + '440510': '广东省汕头市河浦区', + '440523': '广东省汕头市南澳县', + '440582': '广东省汕头市潮阳市', + '440583': '广东省汕头市澄海市', + '440600': '广东省佛山市', + '440601': '广东省佛山市市辖区', + '440602': '广东省佛山市城区', + '440603': '广东省佛山市石湾区', + '440681': '广东省佛山市顺德市', + '440682': '广东省佛山市南海市', + '440683': '广东省佛山市三水市', + '440684': '广东省佛山市高明市', + '440700': '广东省江门市', + '440701': '广东省江门市市辖区', + '440703': '广东省江门市蓬江区', + '440704': '广东省江门市江海区', + '440781': '广东省江门市台山市', + '440782': '广东省江门市新会市', + '440783': '广东省江门市开平市', + '440784': '广东省江门市鹤山市', + '440785': '广东省江门市恩平市', + '440800': '广东省湛江市', + '440801': '广东省湛江市市辖区', + '440802': '广东省湛江市赤坎区', + '440803': '广东省湛江市霞山区', + '440804': '广东省湛江市坡头区', + '440811': '广东省湛江市麻章区', + '440823': '广东省湛江市遂溪县', + '440825': '广东省湛江市徐闻县', + '440881': '广东省湛江市廉江市', + '440882': '广东省湛江市雷州市', + '440883': '广东省湛江市吴川市', + '440900': '广东省茂名市', + '440901': '广东省茂名市市辖区', + '440902': '广东省茂名市茂南区', + '440923': '广东省茂名市电白县', + '440981': '广东省茂名市高州市', + '440982': '广东省茂名市化州市', + '440983': '广东省茂名市信宜市', + '441200': '广东省肇庆市', + '441201': '广东省肇庆市市辖区', + '441202': '广东省肇庆市端州区', + '441203': '广东省肇庆市鼎湖区', + '441223': '广东省肇庆市广宁县', + '441224': '广东省肇庆市怀集县', + '441225': '广东省肇庆市封开县', + '441226': '广东省肇庆市德庆县', + '441283': '广东省肇庆市高要市', + '441284': '广东省肇庆市四会市', + '441300': '广东省惠州市', + '441301': '广东省惠州市市辖区', + '441302': '广东省惠州市惠城区', + '441322': '广东省惠州市博罗县', + '441323': '广东省惠州市惠东县', + '441324': '广东省惠州市龙门县', + '441381': '广东省惠州市惠阳市', + '441400': '广东省梅州市', + '441401': '广东省梅州市市辖区', + '441402': '广东省梅州市梅江区', + '441421': '广东省梅州市梅县', + '441422': '广东省梅州市大埔县', + '441423': '广东省梅州市丰顺县', + '441424': '广东省梅州市五华县', + '441426': '广东省梅州市平远县', + '441427': '广东省梅州市蕉岭县', + '441481': '广东省梅州市兴宁市', + '441500': '广东省汕尾市', + '441501': '广东省汕尾市市辖区', + '441502': '广东省汕尾市城区', + '441521': '广东省汕尾市海丰县', + '441523': '广东省汕尾市陆河县', + '441581': '广东省汕尾市陆丰市', + '441600': '广东省河源市', + '441601': '广东省河源市市辖区', + '441602': '广东省河源市源城区', + '441621': '广东省河源市紫金县', + '441622': '广东省河源市龙川县', + '441623': '广东省河源市连平县', + '441624': '广东省河源市和平县', + '441625': '广东省河源市东源县', + '441700': '广东省阳江市', + '441701': '广东省阳江市市辖区', + '441702': '广东省阳江市江城区', + '441721': '广东省阳江市阳西县', + '441723': '广东省阳江市阳东县', + '441781': '广东省阳江市阳春市', + '441800': '广东省清远市', + '441801': '广东省清远市市辖区', + '441802': '广东省清远市清城区', + '441821': '广东省清远市佛冈县', + '441823': '广东省清远市阳山县', + '441825': '广东省清远市连山壮族瑶族自治县', + '441826': '广东省清远市连南瑶族自治县', + '441827': '广东省清远市清新县', + '441881': '广东省清远市英德市', + '441882': '广东省清远市连州市', + '441900': '广东省东莞市', + '441901': '广东省东莞市市辖区', + '442000': '广东省中山市', + '442001': '广东省中山市市辖区', + '445100': '广东省潮州市', + '445101': '广东省潮州市市辖区', + '445102': '广东省潮州市湘桥区', + '445121': '广东省潮州市潮安县', + '445122': '广东省潮州市饶平县', + '445200': '广东省揭阳市', + '445201': '广东省揭阳市市辖区', + '445202': '广东省揭阳市榕城区', + '445221': '广东省揭阳市揭东县', + '445222': '广东省揭阳市揭西县', + '445224': '广东省揭阳市惠来县', + '445281': '广东省揭阳市普宁市', + '445300': '广东省云浮市', + '445301': '广东省云浮市市辖区', + '445302': '广东省云浮市云城区', + '445321': '广东省云浮市新兴县', + '445322': '广东省云浮市郁南县', + '445323': '广东省云浮市云安县', + '445381': '广东省云浮市罗定市', + '450000': '广西壮族自治区', + '450100': '广西壮族自治区南宁市', + '450101': '广西壮族自治区南宁市市辖区', + '450102': '广西壮族自治区南宁市兴宁区', + '450103': '广西壮族自治区南宁市新城区', + '450104': '广西壮族自治区南宁市城北区', + '450105': '广西壮族自治区南宁市江南区', + '450106': '广西壮族自治区南宁市永新区', + '450111': '广西壮族自治区南宁市市郊区', + '450121': '广西壮族自治区南宁市邕宁县', + '450122': '广西壮族自治区南宁市武鸣县', + '450200': '广西壮族自治区柳州市', + '450201': '广西壮族自治区柳州市市辖区', + '450202': '广西壮族自治区柳州市城中区', + '450203': '广西壮族自治区柳州市鱼峰区', + '450204': '广西壮族自治区柳州市柳南区', + '450205': '广西壮族自治区柳州市柳北区', + '450211': '广西壮族自治区柳州市市郊区', + '450221': '广西壮族自治区柳州市柳江县', + '450222': '广西壮族自治区柳州市柳城县', + '450300': '广西壮族自治区桂林市', + '450301': '广西壮族自治区桂林市市辖区', + '450302': '广西壮族自治区桂林市秀峰区', + '450303': '广西壮族自治区桂林市叠彩区', + '450304': '广西壮族自治区桂林市象山区', + '450305': '广西壮族自治区桂林市七星区', + '450311': '广西壮族自治区桂林市雁山区', + '450321': '广西壮族自治区桂林市阳朔县', + '450322': '广西壮族自治区桂林市临桂县', + '450323': '广西壮族自治区桂林市灵川县', + '450324': '广西壮族自治区桂林市全州县', + '450325': '广西壮族自治区桂林市兴安县', + '450326': '广西壮族自治区桂林市永福县', + '450327': '广西壮族自治区桂林市灌阳县', + '450328': '广西壮族自治区桂林市龙胜各族自治县', + '450329': '广西壮族自治区桂林市资源县', + '450330': '广西壮族自治区桂林市平乐县', + '450331': '广西壮族自治区桂林市荔浦县', + '450332': '广西壮族自治区桂林市恭城瑶族自治县', + '450400': '广西壮族自治区梧州市', + '450401': '广西壮族自治区梧州市市辖区', + '450403': '广西壮族自治区梧州市万秀区', + '450404': '广西壮族自治区梧州市蝶山区', + '450411': '广西壮族自治区梧州市市郊区', + '450421': '广西壮族自治区梧州市苍梧县', + '450422': '广西壮族自治区梧州市藤县', + '450423': '广西壮族自治区梧州市蒙山县', + '450481': '广西壮族自治区梧州市岑溪市', + '450500': '广西壮族自治区北海市', + '450501': '广西壮族自治区北海市市辖区', + '450502': '广西壮族自治区北海市海城区', + '450503': '广西壮族自治区北海市银海区', + '450512': '广西壮族自治区北海市铁山港区', + '450521': '广西壮族自治区北海市合浦县', + '450600': '广西壮族自治区防城港市', + '450601': '广西壮族自治区防城港市市辖区', + '450602': '广西壮族自治区防城港市港口区', + '450603': '广西壮族自治区防城港市防城区', + '450621': '广西壮族自治区防城港市上思县', + '450681': '广西壮族自治区防城港市东兴市', + '450700': '广西壮族自治区钦州市', + '450701': '广西壮族自治区钦州市市辖区', + '450702': '广西壮族自治区钦州市钦南区', + '450703': '广西壮族自治区钦州市钦北区', + '450721': '广西壮族自治区钦州市灵山县', + '450722': '广西壮族自治区钦州市浦北县', + '450800': '广西壮族自治区贵港市', + '450801': '广西壮族自治区贵港市市辖区', + '450802': '广西壮族自治区贵港市港北区', + '450803': '广西壮族自治区贵港市港南区', + '450821': '广西壮族自治区贵港市平南县', + '450881': '广西壮族自治区贵港市桂平市', + '450900': '广西壮族自治区玉林市', + '450901': '广西壮族自治区玉林市市辖区', + '450902': '广西壮族自治区玉林市玉州区', + '450921': '广西壮族自治区玉林市容县', + '450922': '广西壮族自治区玉林市陆川县', + '450923': '广西壮族自治区玉林市博白县', + '450924': '广西壮族自治区玉林市兴业县', + '450981': '广西壮族自治区玉林市北流市', + '452100': '广西壮族自治区南宁地区', + '452101': '广西壮族自治区南宁地区凭祥市', + '452122': '广西壮族自治区南宁地区横县', + '452123': '广西壮族自治区南宁地区宾阳县', + '452124': '广西壮族自治区南宁地区上林县', + '452126': '广西壮族自治区南宁地区隆安县', + '452127': '广西壮族自治区南宁地区马山县', + '452128': '广西壮族自治区南宁地区扶绥县', + '452129': '广西壮族自治区南宁地区崇左县', + '452130': '广西壮族自治区南宁地区大新县', + '452131': '广西壮族自治区南宁地区天等县', + '452132': '广西壮族自治区南宁地区宁明县', + '452133': '广西壮族自治区南宁地区龙州县', + '452200': '广西壮族自治区柳州地区', + '452201': '广西壮族自治区柳州地区合山市', + '452223': '广西壮族自治区柳州地区鹿寨县', + '452224': '广西壮族自治区柳州地区象州县', + '452225': '广西壮族自治区柳州地区武宣县', + '452226': '广西壮族自治区柳州地区来宾县', + '452227': '广西壮族自治区柳州地区融安县', + '452228': '广西壮族自治区柳州地区三江侗族自治县', + '452229': '广西壮族自治区柳州地区融水苗族自治县', + '452230': '广西壮族自治区柳州地区金秀瑶族自治县', + '452231': '广西壮族自治区柳州地区忻城县', + '452400': '广西壮族自治区贺州地区', + '452402': '广西壮族自治区贺州地区贺州市', + '452424': '广西壮族自治区贺州地区昭平县', + '452427': '广西壮族自治区贺州地区钟山县', + '452428': '广西壮族自治区贺州地区富川瑶族自治县', + '452600': '广西壮族自治区百色地区', + '452601': '广西壮族自治区百色地区百色市', + '452622': '广西壮族自治区百色地区田阳县', + '452623': '广西壮族自治区百色地区田东县', + '452624': '广西壮族自治区百色地区平果县', + '452625': '广西壮族自治区百色地区德保县', + '452626': '广西壮族自治区百色地区靖西县', + '452627': '广西壮族自治区百色地区那坡县', + '452628': '广西壮族自治区百色地区凌云县', + '452629': '广西壮族自治区百色地区乐业县', + '452630': '广西壮族自治区百色地区田林县', + '452631': '广西壮族自治区百色地区隆林各族自治县', + '452632': '广西壮族自治区百色地区西林县', + '452700': '广西壮族自治区河池地区', + '452701': '广西壮族自治区河池地区河池市', + '452702': '广西壮族自治区河池地区宜州市', + '452723': '广西壮族自治区河池地区罗城仫佬族自治县', + '452724': '广西壮族自治区河池地区环江毛南族自治县', + '452725': '广西壮族自治区河池地区南丹县', + '452726': '广西壮族自治区河池地区天峨县', + '452727': '广西壮族自治区河池地区凤山县', + '452728': '广西壮族自治区河池地区东兰县', + '452729': '广西壮族自治区河池地区巴马瑶族自治县', + '452730': '广西壮族自治区河池地区都安瑶族自治县', + '452731': '广西壮族自治区河池地区大化瑶族自治县', + '460000': '海南省', + '460001': '海南省三亚市通什市', + '460002': '海南省三亚市琼海市', + '460003': '海南省三亚市儋州市', + '460004': '海南省三亚市琼山市', + '460005': '海南省三亚市文昌市', + '460006': '海南省三亚市万宁市', + '460007': '海南省三亚市东方市', + '460025': '海南省三亚市定安县', + '460026': '海南省三亚市屯昌县', + '460027': '海南省三亚市澄迈县', + '460028': '海南省三亚市临高县', + '460030': '海南省三亚市白沙黎族自治县', + '460031': '海南省三亚市昌江黎族自治县', + '460033': '海南省三亚市乐东黎族自治县', + '460034': '海南省三亚市陵水黎族自治县', + '460035': '海南省三亚市保亭黎族苗族自治县', + '460036': '海南省三亚市琼中黎族苗族自治县', + '460037': '海南省西沙群岛', + '460038': '海南省南沙群岛', + '460039': '海南省中沙群岛的岛礁及其海域', + '460100': '海南省海口市', + '460101': '海南省海口市市辖区', + '460102': '海南省海口市振东区', + '460103': '海南省海口市新华区', + '460104': '海南省海口市秀英区', + '460200': '海南省三亚市', + '460201': '海南省三亚市市辖区', + '500000': '重庆市', + '500100': '重庆市市辖区', + '500101': '重庆市万州区', + '500102': '重庆市涪陵区', + '500103': '重庆市渝中区', + '500104': '重庆市大渡口区', + '500105': '重庆市江北区', + '500106': '重庆市沙坪坝区', + '500107': '重庆市九龙坡区', + '500108': '重庆市南岸区', + '500109': '重庆市北碚区', + '500110': '重庆市万盛区', + '500111': '重庆市双桥区', + '500112': '重庆市渝北区', + '500113': '重庆市巴南区', + '500200': '重庆市县', + '500221': '重庆市长寿县', + '500222': '重庆市綦江县', + '500223': '重庆市潼南县', + '500224': '重庆市铜梁县', + '500225': '重庆市大足县', + '500226': '重庆市荣昌县', + '500227': '重庆市璧山县', + '500228': '重庆市梁平县', + '500229': '重庆市城口县', + '500230': '重庆市丰都县', + '500231': '重庆市垫江县', + '500232': '重庆市武隆县', + '500233': '重庆市忠县', + '500234': '重庆市开县', + '500235': '重庆市云阳县', + '500236': '重庆市奉节县', + '500237': '重庆市巫山县', + '500238': '重庆市巫溪县', + '500239': '重庆市黔江土家族苗族自治县', + '500240': '重庆市石柱土家族自治县', + '500241': '重庆市秀山土家族苗族自治县', + '500242': '重庆市酉阳土家族苗族自治县', + '500243': '重庆市彭水苗族土家族自治县', + '500300': '重庆市(市)', + '500381': '重庆市江津市', + '500382': '重庆市合川市', + '500383': '重庆市永川市', + '500384': '重庆市南川市', + '510000': '四川省', + '510100': '四川省成都市', + '510101': '四川省成都市市辖区', + '510104': '四川省成都市锦江区', + '510105': '四川省成都市青羊区', + '510106': '四川省成都市金牛区', + '510107': '四川省成都市武侯区', + '510108': '四川省成都市成华区', + '510112': '四川省成都市龙泉驿区', + '510113': '四川省成都市青白江区', + '510121': '四川省成都市金堂县', + '510122': '四川省成都市双流县', + '510123': '四川省成都市温江县', + '510124': '四川省成都市郫县', + '510125': '四川省成都市新都县', + '510129': '四川省成都市大邑县', + '510131': '四川省成都市蒲江县', + '510132': '四川省成都市新津县', + '510181': '四川省成都市都江堰市', + '510182': '四川省成都市彭州市', + '510183': '四川省成都市邛崃市', + '510184': '四川省成都市崇州市', + '510300': '四川省自贡市', + '510301': '四川省自贡市市辖区', + '510302': '四川省自贡市自流井区', + '510303': '四川省自贡市贡井区', + '510304': '四川省自贡市大安区', + '510311': '四川省自贡市沿滩区', + '510321': '四川省自贡市荣县', + '510322': '四川省自贡市富顺县', + '510400': '四川省攀枝花市', + '510401': '四川省攀枝花市市辖区', + '510402': '四川省攀枝花市东区', + '510403': '四川省攀枝花市西区', + '510411': '四川省攀枝花市仁和区', + '510421': '四川省攀枝花市米易县', + '510422': '四川省攀枝花市盐边县', + '510500': '四川省泸州市', + '510501': '四川省泸州市市辖区', + '510502': '四川省泸州市江阳区', + '510503': '四川省泸州市纳溪区', + '510504': '四川省泸州市龙马潭区', + '510521': '四川省泸州市泸县', + '510522': '四川省泸州市合江县', + '510524': '四川省泸州市叙永县', + '510525': '四川省泸州市古蔺县', + '510600': '四川省德阳市', + '510601': '四川省德阳市市辖区', + '510603': '四川省德阳市旌阳区', + '510623': '四川省德阳市中江县', + '510626': '四川省德阳市罗江县', + '510681': '四川省德阳市广汉市', + '510682': '四川省德阳市什邡市', + '510683': '四川省德阳市绵竹市', + '510700': '四川省绵阳市', + '510701': '四川省绵阳市市辖区', + '510703': '四川省绵阳市涪城区', + '510704': '四川省绵阳市游仙区', + '510722': '四川省绵阳市三台县', + '510723': '四川省绵阳市盐亭县', + '510724': '四川省绵阳市安县', + '510725': '四川省绵阳市梓潼县', + '510726': '四川省绵阳市北川县', + '510727': '四川省绵阳市平武县', + '510781': '四川省绵阳市江油市', + '510800': '四川省广元市', + '510801': '四川省广元市市辖区', + '510802': '四川省广元市市中区', + '510811': '四川省广元市元坝区', + '510812': '四川省广元市朝天区', + '510821': '四川省广元市旺苍县', + '510822': '四川省广元市青川县', + '510823': '四川省广元市剑阁县', + '510824': '四川省广元市苍溪县', + '510900': '四川省遂宁市', + '510901': '四川省遂宁市市辖区', + '510902': '四川省遂宁市市中区', + '510921': '四川省遂宁市蓬溪县', + '510922': '四川省遂宁市射洪县', + '510923': '四川省遂宁市大英县', + '511000': '四川省内江市', + '511001': '四川省内江市市辖区', + '511002': '四川省内江市市中区', + '511011': '四川省内江市东兴区', + '511024': '四川省内江市威远县', + '511025': '四川省内江市资中县', + '511028': '四川省内江市隆昌县', + '511100': '四川省乐山市', + '511101': '四川省乐山市市辖区', + '511102': '四川省乐山市市中区', + '511111': '四川省乐山市沙湾区', + '511112': '四川省乐山市五通桥区', + '511113': '四川省乐山市金口河区', + '511123': '四川省乐山市犍为县', + '511124': '四川省乐山市井研县', + '511126': '四川省乐山市夹江县', + '511129': '四川省乐山市沐川县', + '511132': '四川省乐山市峨边彝族自治县', + '511133': '四川省乐山市马边彝族自治县', + '511181': '四川省乐山市峨眉山市', + '511300': '四川省南充市', + '511301': '四川省南充市市辖区', + '511302': '四川省南充市顺庆区', + '511303': '四川省南充市高坪区', + '511304': '四川省南充市嘉陵区', + '511321': '四川省南充市南部县', + '511322': '四川省南充市营山县', + '511323': '四川省南充市蓬安县', + '511324': '四川省南充市仪陇县', + '511325': '四川省南充市西充县', + '511381': '四川省南充市阆中市', + '511500': '四川省宜宾市', + '511501': '四川省宜宾市市辖区', + '511502': '四川省宜宾市翠屏区', + '511521': '四川省宜宾市宜宾县', + '511522': '四川省宜宾市南溪县', + '511523': '四川省宜宾市江安县', + '511524': '四川省宜宾市长宁县', + '511525': '四川省宜宾市高县', + '511526': '四川省宜宾市珙县', + '511527': '四川省宜宾市筠连县', + '511528': '四川省宜宾市兴文县', + '511529': '四川省宜宾市屏山县', + '511600': '四川省广安市', + '511601': '四川省广安市市辖区', + '511602': '四川省广安市广安区', + '511621': '四川省广安市岳池县', + '511622': '四川省广安市武胜县', + '511623': '四川省广安市邻水县', + '511681': '四川省广安市华蓥市', + '513000': '四川省达川地区', + '513001': '四川省达川地区达川市', + '513002': '四川省达川地区万源市', + '513021': '四川省达川地区达县', + '513022': '四川省达川地区宣汉县', + '513023': '四川省达川地区开江县', + '513029': '四川省达川地区大竹县', + '513030': '四川省达川地区渠县', + '513100': '四川省雅安地区', + '513101': '四川省雅安地区雅安市', + '513122': '四川省雅安地区名山县', + '513123': '四川省雅安地区荥经县', + '513124': '四川省雅安地区汉源县', + '513125': '四川省雅安地区石棉县', + '513126': '四川省雅安地区天全县', + '513127': '四川省雅安地区芦山县', + '513128': '四川省雅安地区宝兴县', + '513200': '四川省阿坝藏族羌族自治州', + '513221': '四川省阿坝藏族羌族自治州汶川县', + '513222': '四川省阿坝藏族羌族自治州理县', + '513223': '四川省阿坝藏族羌族自治州茂县', + '513224': '四川省阿坝藏族羌族自治州松潘县', + '513225': '四川省阿坝藏族羌族自治州九寨沟县', + '513226': '四川省阿坝藏族羌族自治州金川县', + '513227': '四川省阿坝藏族羌族自治州小金县', + '513228': '四川省阿坝藏族羌族自治州黑水县', + '513229': '四川省阿坝藏族羌族自治州马尔康县', + '513230': '四川省阿坝藏族羌族自治州壤塘县', + '513231': '四川省阿坝藏族羌族自治州阿坝县', + '513232': '四川省阿坝藏族羌族自治州若尔盖县', + '513233': '四川省阿坝藏族羌族自治州红原县', + '513300': '四川省甘孜藏族自治州', + '513321': '四川省甘孜藏族自治州康定县', + '513322': '四川省甘孜藏族自治州泸定县', + '513323': '四川省甘孜藏族自治州丹巴县', + '513324': '四川省甘孜藏族自治州九龙县', + '513325': '四川省甘孜藏族自治州雅江县', + '513326': '四川省甘孜藏族自治州道孚县', + '513327': '四川省甘孜藏族自治州炉霍县', + '513328': '四川省甘孜藏族自治州甘孜县', + '513329': '四川省甘孜藏族自治州新龙县', + '513330': '四川省甘孜藏族自治州德格县', + '513331': '四川省甘孜藏族自治州白玉县', + '513332': '四川省甘孜藏族自治州石渠县', + '513333': '四川省甘孜藏族自治州色达县', + '513334': '四川省甘孜藏族自治州理塘县', + '513335': '四川省甘孜藏族自治州巴塘县', + '513336': '四川省甘孜藏族自治州乡城县', + '513337': '四川省甘孜藏族自治州稻城县', + '513338': '四川省甘孜藏族自治州得荣县', + '513400': '四川省凉山彝族自治州', + '513401': '四川省凉山彝族自治州西昌市', + '513422': '四川省凉山彝族自治州木里藏族自治县', + '513423': '四川省凉山彝族自治州盐源县', + '513424': '四川省凉山彝族自治州德昌县', + '513425': '四川省凉山彝族自治州会理县', + '513426': '四川省凉山彝族自治州会东县', + '513427': '四川省凉山彝族自治州宁南县', + '513428': '四川省凉山彝族自治州普格县', + '513429': '四川省凉山彝族自治州布拖县', + '513430': '四川省凉山彝族自治州金阳县', + '513431': '四川省凉山彝族自治州昭觉县', + '513432': '四川省凉山彝族自治州喜德县', + '513433': '四川省凉山彝族自治州冕宁县', + '513434': '四川省凉山彝族自治州越西县', + '513435': '四川省凉山彝族自治州甘洛县', + '513436': '四川省凉山彝族自治州美姑县', + '513437': '四川省凉山彝族自治州雷波县', + '513700': '四川省巴中地区', + '513701': '四川省巴中地区巴中市', + '513721': '四川省巴中地区通江县', + '513722': '四川省巴中地区南江县', + '513723': '四川省巴中地区平昌县', + '513800': '四川省眉山地区', + '513821': '四川省眉山地区眉山县', + '513822': '四川省眉山地区仁寿县', + '513823': '四川省眉山地区彭山县', + '513824': '四川省眉山地区洪雅县', + '513825': '四川省眉山地区丹棱县', + '513826': '四川省眉山地区青神县', + '513900': '四川省眉山地区资阳地区', + '513901': '四川省眉山地区资阳市', + '513902': '四川省眉山地区简阳市', + '513921': '四川省眉山地区安岳县', + '513922': '四川省眉山地区乐至县', + '520000': '贵州省', + '520100': '贵州省贵阳市', + '520101': '贵州省贵阳市市辖区', + '520102': '贵州省贵阳市南明区', + '520103': '贵州省贵阳市云岩区', + '520111': '贵州省贵阳市花溪区', + '520112': '贵州省贵阳市乌当区', + '520113': '贵州省贵阳市白云区', + '520121': '贵州省贵阳市开阳县', + '520122': '贵州省贵阳市息烽县', + '520123': '贵州省贵阳市修文县', + '520181': '贵州省贵阳市清镇市', + '520200': '贵州省六盘水市', + '520201': '贵州省六盘水市钟山区', + '520202': '贵州省六盘水市盘县特区', + '520203': '贵州省六盘水市六枝特区', + '520221': '贵州省六盘水市水城县', + '520300': '贵州省遵义市', + '520301': '贵州省遵义市市辖区', + '520302': '贵州省遵义市红花岗区', + '520321': '贵州省遵义市遵义县', + '520322': '贵州省遵义市桐梓县', + '520323': '贵州省遵义市绥阳县', + '520324': '贵州省遵义市正安县', + '520325': '贵州省遵义市道真仡佬族苗族自治县', + '520326': '贵州省遵义市务川仡佬族苗族自治县', + '520327': '贵州省遵义市凤冈县', + '520328': '贵州省遵义市湄潭县', + '520329': '贵州省遵义市余庆县', + '520330': '贵州省遵义市习水县', + '520381': '贵州省遵义市赤水市', + '520382': '贵州省遵义市仁怀市', + '522200': '贵州省铜仁地区', + '522201': '贵州省铜仁地区铜仁市', + '522222': '贵州省铜仁地区江口县', + '522223': '贵州省铜仁地区玉屏侗族自治县', + '522224': '贵州省铜仁地区石阡县', + '522225': '贵州省铜仁地区思南县', + '522226': '贵州省铜仁地区印江土家族苗族自治县', + '522227': '贵州省铜仁地区德江县', + '522228': '贵州省铜仁地区沿河土家族自治县', + '522229': '贵州省铜仁地区松桃苗族自治县', + '522230': '贵州省铜仁地区万山特区', + '522300': '贵州省黔西南布依族苗族自治州', + '522301': '贵州省黔西南布依族苗族自治州兴义市', + '522322': '贵州省黔西南布依族苗族自治州兴仁县', + '522323': '贵州省黔西南布依族苗族自治州普安县', + '522324': '贵州省黔西南布依族苗族自治州晴隆县', + '522325': '贵州省黔西南布依族苗族自治州贞丰县', + '522326': '贵州省黔西南布依族苗族自治州望谟县', + '522327': '贵州省黔西南布依族苗族自治州册亨县', + '522328': '贵州省黔西南布依族苗族自治州安龙县', + '522400': '贵州省毕节地区', + '522401': '贵州省毕节地区毕节市', + '522422': '贵州省毕节地区大方县', + '522423': '贵州省毕节地区黔西县', + '522424': '贵州省毕节地区金沙县', + '522425': '贵州省毕节地区织金县', + '522426': '贵州省毕节地区纳雍县', + '522427': '贵州省毕节地区威宁彝族回族苗族自治县', + '522428': '贵州省毕节地区赫章县', + '522500': '贵州省安顺地区', + '522501': '贵州省安顺地区安顺市', + '522526': '贵州省安顺地区平坝县', + '522527': '贵州省安顺地区普定县', + '522528': '贵州省安顺地区关岭布依族苗族自治县', + '522529': '贵州省安顺地区镇宁布依族苗族自治县', + '522530': '贵州省安顺地区紫云苗族布依族自治县', + '522600': '贵州省黔东南苗族侗族自治州', + '522601': '贵州省黔东南苗族侗族自治州凯里市', + '522622': '贵州省黔东南苗族侗族自治州黄平县', + '522623': '贵州省黔东南苗族侗族自治州施秉县', + '522624': '贵州省黔东南苗族侗族自治州三穗县', + '522625': '贵州省黔东南苗族侗族自治州镇远县', + '522626': '贵州省黔东南苗族侗族自治州岑巩县', + '522627': '贵州省黔东南苗族侗族自治州天柱县', + '522628': '贵州省黔东南苗族侗族自治州锦屏县', + '522629': '贵州省黔东南苗族侗族自治州剑河县', + '522630': '贵州省黔东南苗族侗族自治州台江县', + '522631': '贵州省黔东南苗族侗族自治州黎平县', + '522632': '贵州省黔东南苗族侗族自治州榕江县', + '522633': '贵州省黔东南苗族侗族自治州从江县', + '522634': '贵州省黔东南苗族侗族自治州雷山县', + '522635': '贵州省黔东南苗族侗族自治州麻江县', + '522636': '贵州省黔东南苗族侗族自治州丹寨县', + '522700': '贵州省黔南布依族苗族自治州', + '522701': '贵州省黔南布依族苗族自治州都匀市', + '522702': '贵州省黔南布依族苗族自治州福泉市', + '522722': '贵州省黔南布依族苗族自治州荔波县', + '522723': '贵州省黔南布依族苗族自治州贵定县', + '522725': '贵州省黔南布依族苗族自治州瓮安县', + '522726': '贵州省黔南布依族苗族自治州独山县', + '522727': '贵州省黔南布依族苗族自治州平塘县', + '522728': '贵州省黔南布依族苗族自治州罗甸县', + '522729': '贵州省黔南布依族苗族自治州长顺县', + '522730': '贵州省黔南布依族苗族自治州龙里县', + '522731': '贵州省黔南布依族苗族自治州惠水县', + '522732': '贵州省黔南布依族苗族自治州三都水族自治县', + '530000': '云南省', + '530100': '云南省昆明市', + '530101': '云南省昆明市市辖区', + '530102': '云南省昆明市五华区', + '530103': '云南省昆明市盘龙区', + '530111': '云南省昆明市官渡区', + '530112': '云南省昆明市西山区', + '530113': '云南省昆明市东川区', + '530121': '云南省昆明市呈贡县', + '530122': '云南省昆明市晋宁县', + '530124': '云南省昆明市富民县', + '530125': '云南省昆明市宜良县', + '530126': '云南省昆明市石林彝族自治县', + '530127': '云南省昆明市嵩明县', + '530128': '云南省昆明市禄劝彝族苗族自治县', + '530129': '云南省昆明市寻甸回族彝族自治县', + '530181': '云南省昆明市安宁市', + '530300': '云南省曲靖市', + '530301': '云南省曲靖市市辖区', + '530302': '云南省曲靖市麒麟区', + '530321': '云南省曲靖市马龙县', + '530322': '云南省曲靖市陆良县', + '530323': '云南省曲靖市师宗县', + '530324': '云南省曲靖市罗平县', + '530325': '云南省曲靖市富源县', + '530326': '云南省曲靖市会泽县', + '530328': '云南省曲靖市沾益县', + '530381': '云南省曲靖市宣威市', + '530400': '云南省玉溪市', + '530401': '云南省玉溪市市辖区', + '530402': '云南省玉溪市红塔区', + '530421': '云南省玉溪市江川县', + '530422': '云南省玉溪市澄江县', + '530423': '云南省玉溪市通海县', + '530424': '云南省玉溪市华宁县', + '530425': '云南省玉溪市易门县', + '530426': '云南省玉溪市峨山彝族自治县', + '530427': '云南省玉溪市新平彝族傣族自治县', + '530428': '云南省玉溪市元江哈尼族彝族傣族自治县', + '532100': '云南省昭通地区', + '532101': '云南省昭通地区昭通市', + '532122': '云南省昭通地区鲁甸县', + '532123': '云南省昭通地区巧家县', + '532124': '云南省昭通地区盐津县', + '532125': '云南省昭通地区大关县', + '532126': '云南省昭通地区永善县', + '532127': '云南省昭通地区绥江县', + '532128': '云南省昭通地区镇雄县', + '532129': '云南省昭通地区彝良县', + '532130': '云南省昭通地区威信县', + '532131': '云南省昭通地区水富县', + '532300': '云南省楚雄彝族自治州', + '532301': '云南省楚雄彝族自治州楚雄市', + '532322': '云南省楚雄彝族自治州双柏县', + '532323': '云南省楚雄彝族自治州牟定县', + '532324': '云南省楚雄彝族自治州南华县', + '532325': '云南省楚雄彝族自治州姚安县', + '532326': '云南省楚雄彝族自治州大姚县', + '532327': '云南省楚雄彝族自治州永仁县', + '532328': '云南省楚雄彝族自治州元谋县', + '532329': '云南省楚雄彝族自治州武定县', + '532331': '云南省楚雄彝族自治州禄丰县', + '532500': '云南省红河哈尼族彝族自治州', + '532501': '云南省红河哈尼族彝族自治州个旧市', + '532502': '云南省红河哈尼族彝族自治州开远市', + '532522': '云南省红河哈尼族彝族自治州蒙自县', + '532523': '云南省红河哈尼族彝族自治州屏边苗族自治县', + '532524': '云南省红河哈尼族彝族自治州建水县', + '532525': '云南省红河哈尼族彝族自治州石屏县', + '532526': '云南省红河哈尼族彝族自治州弥勒县', + '532527': '云南省红河哈尼族彝族自治州泸西县', + '532528': '云南省红河哈尼族彝族自治州元阳县', + '532529': '云南省红河哈尼族彝族自治州红河县', + '532530': '云南省红河哈尼族彝族自治州金平苗族瑶族傣族自治县', + '532531': '云南省红河哈尼族彝族自治州绿春县', + '532532': '云南省红河哈尼族彝族自治州河口瑶族自治县', + '532600': '云南省文山壮族苗族自治州', + '532621': '云南省文山壮族苗族自治州文山县', + '532622': '云南省文山壮族苗族自治州砚山县', + '532623': '云南省文山壮族苗族自治州西畴县', + '532624': '云南省文山壮族苗族自治州麻栗坡县', + '532625': '云南省文山壮族苗族自治州马关县', + '532626': '云南省文山壮族苗族自治州丘北县', + '532627': '云南省文山壮族苗族自治州广南县', + '532628': '云南省文山壮族苗族自治州富宁县', + '532700': '云南省思茅地区', + '532701': '云南省思茅地区思茅市', + '532722': '云南省思茅地区普洱哈尼族彝族自治县', + '532723': '云南省思茅地区墨江哈尼族自治县', + '532724': '云南省思茅地区景东彝族自治县', + '532725': '云南省思茅地区景谷傣族彝族自治县', + '532726': '云南省思茅地区镇沅彝族哈尼族拉祜族自治县', + '532727': '云南省思茅地区江城哈尼族彝族自治县', + '532728': '云南省思茅地区孟连傣族拉祜族佤族自治县', + '532729': '云南省思茅地区澜沧拉祜族自治县', + '532730': '云南省思茅地区西盟佤族自治县', + '532800': '云南省西双版纳傣族自治州', + '532801': '云南省西双版纳傣族自治州景洪市', + '532822': '云南省西双版纳傣族自治州勐海县', + '532823': '云南省西双版纳傣族自治州勐腊县', + '532900': '云南省大理白族自治州', + '532901': '云南省大理白族自治州大理市', + '532922': '云南省大理白族自治州漾濞彝族自治县', + '532923': '云南省大理白族自治州祥云县', + '532924': '云南省大理白族自治州宾川县', + '532925': '云南省大理白族自治州弥渡县', + '532926': '云南省大理白族自治州南涧彝族自治县', + '532927': '云南省大理白族自治州巍山彝族回族自治县', + '532928': '云南省大理白族自治州永平县', + '532929': '云南省大理白族自治州云龙县', + '532930': '云南省大理白族自治州洱源县', + '532931': '云南省大理白族自治州剑川县', + '532932': '云南省大理白族自治州鹤庆县', + '533000': '云南省保山地区', + '533001': '云南省保山地区保山市', + '533022': '云南省保山地区施甸县', + '533023': '云南省保山地区腾冲县', + '533024': '云南省保山地区龙陵县', + '533025': '云南省保山地区昌宁县', + '533100': '云南省德宏傣族景颇族自治州', + '533101': '云南省德宏傣族景颇族自治州畹町市', + '533102': '云南省德宏傣族景颇族自治州瑞丽市', + '533103': '云南省德宏傣族景颇族自治州潞西市', + '533122': '云南省德宏傣族景颇族自治州梁河县', + '533123': '云南省德宏傣族景颇族自治州盈江县', + '533124': '云南省德宏傣族景颇族自治州陇川县', + '533200': '云南省丽江地区', + '533221': '云南省丽江地区丽江纳西族自治县', + '533222': '云南省丽江地区永胜县', + '533223': '云南省丽江地区华坪县', + '533224': '云南省丽江地区宁蒗彝族自治县', + '533300': '云南省怒江傈僳族自治州', + '533321': '云南省怒江傈僳族自治州泸水县', + '533323': '云南省怒江傈僳族自治州福贡县', + '533324': '云南省怒江傈僳族自治州贡山独龙族怒族自治县', + '533325': '云南省怒江傈僳族自治州兰坪白族普米族自治县', + '533400': '云南省迪庆藏族自治州', + '533421': '云南省迪庆藏族自治州中甸县', + '533422': '云南省迪庆藏族自治州德钦县', + '533423': '云南省迪庆藏族自治州维西傈僳族自治县', + '533500': '云南省临沧地区', + '533521': '云南省临沧地区临沧县', + '533522': '云南省临沧地区凤庆县', + '533523': '云南省临沧地区云县', + '533524': '云南省临沧地区永德县', + '533525': '云南省临沧地区镇康县', + '533526': '云南省临沧地区双江拉祜族佤族布朗族傣族自治县', + '533527': '云南省临沧地区耿马傣族佤族自治县', + '533528': '云南省临沧地区沧源佤族自治县', + '540000': '西藏自治区', + '540100': '西藏自治区拉萨市', + '540101': '西藏自治区拉萨市市辖区', + '540102': '西藏自治区拉萨市城关区', + '540121': '西藏自治区拉萨市林周县', + '540122': '西藏自治区拉萨市当雄县', + '540123': '西藏自治区拉萨市尼木县', + '540124': '西藏自治区拉萨市曲水县', + '540125': '西藏自治区拉萨市堆龙德庆县', + '540126': '西藏自治区拉萨市达孜县', + '540127': '西藏自治区拉萨市墨竹工卡县', + '542100': '西藏自治区昌都地区', + '542121': '西藏自治区昌都地区昌都县', + '542122': '西藏自治区昌都地区江达县', + '542123': '西藏自治区昌都地区贡觉县', + '542124': '西藏自治区昌都地区类乌齐县', + '542125': '西藏自治区昌都地区丁青县', + '542126': '西藏自治区昌都地区察雅县', + '542127': '西藏自治区昌都地区八宿县', + '542128': '西藏自治区昌都地区左贡县', + '542129': '西藏自治区昌都地区芒康县', + '542132': '西藏自治区昌都地区洛隆县', + '542133': '西藏自治区昌都地区边坝县', + '542134': '西藏自治区昌都地区盐井县', + '542135': '西藏自治区昌都地区碧土县', + '542136': '西藏自治区昌都地区妥坝县', + '542137': '西藏自治区昌都地区生达县', + '542200': '西藏自治区山南地区', + '542221': '西藏自治区山南地区乃东县', + '542222': '西藏自治区山南地区扎囊县', + '542223': '西藏自治区山南地区贡嘎县', + '542224': '西藏自治区山南地区桑日县', + '542225': '西藏自治区山南地区琼结县', + '542226': '西藏自治区山南地区曲松县', + '542227': '西藏自治区山南地区措美县', + '542228': '西藏自治区山南地区洛扎县', + '542229': '西藏自治区山南地区加查县', + '542231': '西藏自治区山南地区隆子县', + '542232': '西藏自治区山南地区错那县', + '542233': '西藏自治区山南地区浪卡子县', + '542300': '西藏自治区日喀则地区', + '542301': '西藏自治区日喀则地区日喀则市', + '542322': '西藏自治区日喀则地区南木林县', + '542323': '西藏自治区日喀则地区江孜县', + '542324': '西藏自治区日喀则地区定日县', + '542325': '西藏自治区日喀则地区萨迦县', + '542326': '西藏自治区日喀则地区拉孜县', + '542327': '西藏自治区日喀则地区昂仁县', + '542328': '西藏自治区日喀则地区谢通门县', + '542329': '西藏自治区日喀则地区白朗县', + '542330': '西藏自治区日喀则地区仁布县', + '542331': '西藏自治区日喀则地区康马县', + '542332': '西藏自治区日喀则地区定结县', + '542333': '西藏自治区日喀则地区仲巴县', + '542334': '西藏自治区日喀则地区亚东县', + '542335': '西藏自治区日喀则地区吉隆县', + '542336': '西藏自治区日喀则地区聂拉木县', + '542337': '西藏自治区日喀则地区萨嘎县', + '542338': '西藏自治区日喀则地区岗巴县', + '542400': '西藏自治区那曲地区', + '542421': '西藏自治区那曲地区那曲县', + '542422': '西藏自治区那曲地区嘉黎县', + '542423': '西藏自治区那曲地区比如县', + '542424': '西藏自治区那曲地区聂荣县', + '542425': '西藏自治区那曲地区安多县', + '542426': '西藏自治区那曲地区申扎县', + '542427': '西藏自治区那曲地区索县', + '542428': '西藏自治区那曲地区班戈县', + '542429': '西藏自治区那曲地区巴青县', + '542430': '西藏自治区那曲地区尼玛县', + '542500': '西藏自治区阿里地区', + '542521': '西藏自治区阿里地区普兰县', + '542522': '西藏自治区阿里地区札达县', + '542523': '西藏自治区阿里地区噶尔县', + '542524': '西藏自治区阿里地区日土县', + '542525': '西藏自治区阿里地区革吉县', + '542526': '西藏自治区阿里地区改则县', + '542527': '西藏自治区阿里地区措勤县', + '542528': '西藏自治区阿里地区隆格尔县', + '542600': '西藏自治区林芝地区', + '542621': '西藏自治区林芝地区林芝县', + '542622': '西藏自治区林芝地区工布江达县', + '542623': '西藏自治区林芝地区米林县', + '542624': '西藏自治区林芝地区墨脱县', + '542625': '西藏自治区林芝地区波密县', + '542626': '西藏自治区林芝地区察隅县', + '542627': '西藏自治区林芝地区朗县', + '610000': '陕西省', + '610100': '陕西省西安市', + '610101': '陕西省西安市市辖区', + '610102': '陕西省西安市新城区', + '610103': '陕西省西安市碑林区', + '610104': '陕西省西安市莲湖区', + '610111': '陕西省西安市灞桥区', + '610112': '陕西省西安市未央区', + '610113': '陕西省西安市雁塔区', + '610114': '陕西省西安市阎良区', + '610115': '陕西省西安市临潼区', + '610121': '陕西省西安市长安县', + '610122': '陕西省西安市蓝田县', + '610124': '陕西省西安市周至县', + '610125': '陕西省西安市户县', + '610126': '陕西省西安市高陵县', + '610200': '陕西省铜川市', + '610201': '陕西省铜川市市辖区', + '610202': '陕西省铜川市城区', + '610203': '陕西省铜川市郊区', + '610221': '陕西省铜川市耀县', + '610222': '陕西省铜川市宜君县', + '610300': '陕西省宝鸡市', + '610301': '陕西省宝鸡市市辖区', + '610302': '陕西省宝鸡市渭滨区', + '610303': '陕西省宝鸡市金台区', + '610321': '陕西省宝鸡市宝鸡县', + '610322': '陕西省宝鸡市凤翔县', + '610323': '陕西省宝鸡市岐山县', + '610324': '陕西省宝鸡市扶风县', + '610326': '陕西省宝鸡市眉县', + '610327': '陕西省宝鸡市陇县', + '610328': '陕西省宝鸡市千阳县', + '610329': '陕西省宝鸡市麟游县', + '610330': '陕西省宝鸡市凤县', + '610331': '陕西省宝鸡市太白县', + '610400': '陕西省咸阳市', + '610401': '陕西省咸阳市市辖区', + '610402': '陕西省咸阳市秦都区', + '610403': '陕西省咸阳市杨陵区', + '610404': '陕西省咸阳市渭城区', + '610422': '陕西省咸阳市三原县', + '610423': '陕西省咸阳市泾阳县', + '610424': '陕西省咸阳市乾县', + '610425': '陕西省咸阳市礼泉县', + '610426': '陕西省咸阳市永寿县', + '610427': '陕西省咸阳市彬县', + '610428': '陕西省咸阳市长武县', + '610429': '陕西省咸阳市旬邑县', + '610430': '陕西省咸阳市淳化县', + '610431': '陕西省咸阳市武功县', + '610481': '陕西省咸阳市兴平市', + '610500': '陕西省渭南市', + '610501': '陕西省渭南市市辖区', + '610502': '陕西省渭南市临渭区', + '610521': '陕西省渭南市华县', + '610522': '陕西省渭南市潼关县', + '610523': '陕西省渭南市大荔县', + '610524': '陕西省渭南市合阳县', + '610525': '陕西省渭南市澄城县', + '610526': '陕西省渭南市蒲城县', + '610527': '陕西省渭南市白水县', + '610528': '陕西省渭南市富平县', + '610581': '陕西省渭南市韩城市', + '610582': '陕西省渭南市华阴市', + '610600': '陕西省延安市', + '610601': '陕西省延安市市辖区', + '610602': '陕西省延安市宝塔区', + '610621': '陕西省延安市延长县', + '610622': '陕西省延安市延川县', + '610623': '陕西省延安市子长县', + '610624': '陕西省延安市安塞县', + '610625': '陕西省延安市志丹县', + '610626': '陕西省延安市吴旗县', + '610627': '陕西省延安市甘泉县', + '610628': '陕西省延安市富县', + '610629': '陕西省延安市洛川县', + '610630': '陕西省延安市宜川县', + '610631': '陕西省延安市黄龙县', + '610632': '陕西省延安市黄陵县', + '610700': '陕西省汉中市', + '610701': '陕西省汉中市市辖区', + '610702': '陕西省汉中市汉台区', + '610721': '陕西省汉中市南郑县', + '610722': '陕西省汉中市城固县', + '610723': '陕西省汉中市洋县', + '610724': '陕西省汉中市西乡县', + '610725': '陕西省汉中市勉县', + '610726': '陕西省汉中市宁强县', + '610727': '陕西省汉中市略阳县', + '610728': '陕西省汉中市镇巴县', + '610729': '陕西省汉中市留坝县', + '610730': '陕西省汉中市佛坪县', + '612400': '陕西省安康地区', + '612401': '陕西省安康地区安康市', + '612422': '陕西省安康地区汉阴县', + '612423': '陕西省安康地区石泉县', + '612424': '陕西省安康地区宁陕县', + '612425': '陕西省安康地区紫阳县', + '612426': '陕西省安康地区岚皋县', + '612427': '陕西省安康地区平利县', + '612428': '陕西省安康地区镇坪县', + '612429': '陕西省安康地区旬阳县', + '612430': '陕西省安康地区白河县', + '612500': '陕西省商洛地区', + '612501': '陕西省商洛地区商州市', + '612522': '陕西省商洛地区洛南县', + '612523': '陕西省商洛地区丹凤县', + '612524': '陕西省商洛地区商南县', + '612525': '陕西省商洛地区山阳县', + '612526': '陕西省商洛地区镇安县', + '612527': '陕西省商洛地区柞水县', + '612700': '陕西省榆林地区', + '612701': '陕西省榆林地区榆林市', + '612722': '陕西省榆林地区神木县', + '612723': '陕西省榆林地区府谷县', + '612724': '陕西省榆林地区横山县', + '612725': '陕西省榆林地区靖边县', + '612726': '陕西省榆林地区定边县', + '612727': '陕西省榆林地区绥德县', + '612728': '陕西省榆林地区米脂县', + '612729': '陕西省榆林地区佳县', + '612730': '陕西省榆林地区吴堡县', + '612731': '陕西省榆林地区清涧县', + '612732': '陕西省榆林地区子洲县', + '620000': '甘肃省', + '620100': '甘肃省兰州市', + '620101': '甘肃省兰州市市辖区', + '620102': '甘肃省兰州市城关区', + '620103': '甘肃省兰州市七里河区', + '620104': '甘肃省兰州市西固区', + '620105': '甘肃省兰州市安宁区', + '620111': '甘肃省兰州市红古区', + '620121': '甘肃省兰州市永登县', + '620122': '甘肃省兰州市皋兰县', + '620123': '甘肃省兰州市榆中县', + '620200': '甘肃省嘉峪关市', + '620201': '甘肃省嘉峪关市市辖区', + '620300': '甘肃省嘉峪关市金昌市', + '620301': '甘肃省嘉峪关市市辖区', + '620302': '甘肃省嘉峪关市金川区', + '620321': '甘肃省嘉峪关市永昌县', + '620400': '甘肃省白银市', + '620401': '甘肃省白银市市辖区', + '620402': '甘肃省白银市白银区', + '620403': '甘肃省白银市平川区', + '620421': '甘肃省白银市靖远县', + '620422': '甘肃省白银市会宁县', + '620423': '甘肃省白银市景泰县', + '620500': '甘肃省天水市', + '620501': '甘肃省天水市市辖区', + '620502': '甘肃省天水市秦城区', + '620503': '甘肃省天水市北道区', + '620521': '甘肃省天水市清水县', + '620522': '甘肃省天水市秦安县', + '620523': '甘肃省天水市甘谷县', + '620524': '甘肃省天水市武山县', + '620525': '甘肃省天水市张家川回族自治县', + '622100': '甘肃省酒泉地区', + '622101': '甘肃省酒泉地区玉门市', + '622102': '甘肃省酒泉地区酒泉市', + '622103': '甘肃省酒泉地区敦煌市', + '622123': '甘肃省酒泉地区金塔县', + '622124': '甘肃省酒泉地区肃北蒙古族自治县', + '622125': '甘肃省酒泉地区阿克塞哈萨克族自治县', + '622126': '甘肃省酒泉地区安西县', + '622200': '甘肃省张掖地区', + '622201': '甘肃省张掖地区张掖市', + '622222': '甘肃省张掖地区肃南裕固族自治县', + '622223': '甘肃省张掖地区民乐县', + '622224': '甘肃省张掖地区临泽县', + '622225': '甘肃省张掖地区高台县', + '622226': '甘肃省张掖地区山丹县', + '622300': '甘肃省武威地区', + '622301': '甘肃省武威地区武威市', + '622322': '甘肃省武威地区民勤县', + '622323': '甘肃省武威地区古浪县', + '622326': '甘肃省武威地区天祝藏族自治县', + '622400': '甘肃省定西地区', + '622421': '甘肃省定西地区定西县', + '622424': '甘肃省定西地区通渭县', + '622425': '甘肃省定西地区陇西县', + '622426': '甘肃省定西地区渭源县', + '622427': '甘肃省定西地区临洮县', + '622428': '甘肃省定西地区漳县', + '622429': '甘肃省定西地区岷县', + '622600': '甘肃省陇南地区', + '622621': '甘肃省陇南地区武都县', + '622623': '甘肃省陇南地区宕昌县', + '622624': '甘肃省陇南地区成县', + '622625': '甘肃省陇南地区康县', + '622626': '甘肃省陇南地区文县', + '622627': '甘肃省陇南地区西和县', + '622628': '甘肃省陇南地区礼县', + '622629': '甘肃省陇南地区两当县', + '622630': '甘肃省陇南地区徽县', + '622700': '甘肃省平凉地区', + '622701': '甘肃省平凉地区平凉市', + '622722': '甘肃省平凉地区泾川县', + '622723': '甘肃省平凉地区灵台县', + '622724': '甘肃省平凉地区崇信县', + '622725': '甘肃省平凉地区华亭县', + '622726': '甘肃省平凉地区庄浪县', + '622727': '甘肃省平凉地区静宁县', + '622800': '甘肃省庆阳地区', + '622801': '甘肃省庆阳地区西峰市', + '622821': '甘肃省庆阳地区庆阳县', + '622822': '甘肃省庆阳地区环县', + '622823': '甘肃省庆阳地区华池县', + '622824': '甘肃省庆阳地区合水县', + '622825': '甘肃省庆阳地区正宁县', + '622826': '甘肃省庆阳地区宁县', + '622827': '甘肃省庆阳地区镇原县', + '622900': '甘肃省临夏回族自治州', + '622901': '甘肃省临夏回族自治州临夏市', + '622921': '甘肃省临夏回族自治州临夏县', + '622922': '甘肃省临夏回族自治州康乐县', + '622923': '甘肃省临夏回族自治州永靖县', + '622924': '甘肃省临夏回族自治州广河县', + '622925': '甘肃省临夏回族自治州和政县', + '622926': '甘肃省临夏回族自治州东乡族自治县', + '622927': '甘肃省临夏回族自治州积石山保安族东乡族撒拉族自治县', + '623000': '甘肃省甘南藏族自治州', + '623001': '甘肃省甘南藏族自治州合作市', + '623021': '甘肃省甘南藏族自治州临潭县', + '623022': '甘肃省甘南藏族自治州卓尼县', + '623023': '甘肃省甘南藏族自治州舟曲县', + '623024': '甘肃省甘南藏族自治州迭部县', + '623025': '甘肃省甘南藏族自治州玛曲县', + '623026': '甘肃省甘南藏族自治州碌曲县', + '623027': '甘肃省甘南藏族自治州夏河县', + '630000': '青海省', + '630100': '青海省西宁市', + '630101': '青海省西宁市市辖区', + '630102': '青海省西宁市城东区', + '630103': '青海省西宁市城中区', + '630104': '青海省西宁市城西区', + '630105': '青海省西宁市城北区', + '630121': '青海省西宁市大通回族土族自治县', + '632100': '青海省海东地区', + '632121': '青海省海东地区平安县', + '632122': '青海省海东地区民和回族土族自治县', + '632123': '青海省海东地区乐都县', + '632124': '青海省海东地区湟中县', + '632125': '青海省海东地区湟源县', + '632126': '青海省海东地区互助土族自治县', + '632127': '青海省海东地区化隆回族自治县', + '632128': '青海省海东地区循化撒拉族自治县', + '632200': '青海省海北藏族自治州', + '632221': '青海省海北藏族自治州门源回族自治县', + '632222': '青海省海北藏族自治州祁连县', + '632223': '青海省海北藏族自治州海晏县', + '632224': '青海省海北藏族自治州刚察县', + '632300': '青海省黄南藏族自治州', + '632321': '青海省黄南藏族自治州同仁县', + '632322': '青海省黄南藏族自治州尖扎县', + '632323': '青海省黄南藏族自治州泽库县', + '632324': '青海省黄南藏族自治州河南蒙古族自治县', + '632500': '青海省海南藏族自治州', + '632521': '青海省海南藏族自治州共和县', + '632522': '青海省海南藏族自治州同德县', + '632523': '青海省海南藏族自治州贵德县', + '632524': '青海省海南藏族自治州兴海县', + '632525': '青海省海南藏族自治州贵南县', + '632600': '青海省果洛藏族自治州', + '632621': '青海省果洛藏族自治州玛沁县', + '632622': '青海省果洛藏族自治州班玛县', + '632623': '青海省果洛藏族自治州甘德县', + '632624': '青海省果洛藏族自治州达日县', + '632625': '青海省果洛藏族自治州久治县', + '632626': '青海省果洛藏族自治州玛多县', + '632700': '青海省玉树藏族自治州', + '632721': '青海省玉树藏族自治州玉树县', + '632722': '青海省玉树藏族自治州杂多县', + '632723': '青海省玉树藏族自治州称多县', + '632724': '青海省玉树藏族自治州治多县', + '632725': '青海省玉树藏族自治州囊谦县', + '632726': '青海省玉树藏族自治州曲麻莱县', + '632800': '青海省海西蒙古族藏族自治州', + '632801': '青海省海西蒙古族藏族自治州格尔木市', + '632802': '青海省海西蒙古族藏族自治州德令哈市', + '632821': '青海省海西蒙古族藏族自治州乌兰县', + '632822': '青海省海西蒙古族藏族自治州都兰县', + '632823': '青海省海西蒙古族藏族自治州天峻县', + '640000': '宁夏回族自治区', + '640100': '宁夏回族自治区银川市', + '640101': '宁夏回族自治区银川市市辖区', + '640102': '宁夏回族自治区银川市城区', + '640103': '宁夏回族自治区银川市新城区', + '640111': '宁夏回族自治区银川市郊区', + '640121': '宁夏回族自治区银川市永宁县', + '640122': '宁夏回族自治区银川市贺兰县', + '640200': '宁夏回族自治区石嘴山市', + '640201': '宁夏回族自治区石嘴山市市辖区', + '640202': '宁夏回族自治区石嘴山市大武口区', + '640203': '宁夏回族自治区石嘴山市石嘴山区', + '640204': '宁夏回族自治区石嘴山市石炭井区', + '640221': '宁夏回族自治区石嘴山市平罗县', + '640222': '宁夏回族自治区石嘴山市陶乐县', + '640223': '宁夏回族自治区石嘴山市惠农县', + '640300': '宁夏回族自治区吴忠市', + '640301': '宁夏回族自治区吴忠市市辖区', + '640302': '宁夏回族自治区吴忠市利通区', + '640321': '宁夏回族自治区吴忠市中卫县', + '640322': '宁夏回族自治区吴忠市中宁县', + '640323': '宁夏回族自治区吴忠市盐池县', + '640324': '宁夏回族自治区吴忠市同心县', + '640381': '宁夏回族自治区吴忠市青铜峡市', + '640382': '宁夏回族自治区吴忠市灵武市', + '642200': '宁夏回族自治区固原地区', + '642221': '宁夏回族自治区固原地区固原县', + '642222': '宁夏回族自治区固原地区海原县', + '642223': '宁夏回族自治区固原地区西吉县', + '642224': '宁夏回族自治区固原地区隆德县', + '642225': '宁夏回族自治区固原地区泾源县', + '642226': '宁夏回族自治区固原地区彭阳县', + '650000': '新疆维吾尔自治区', + '650100': '新疆维吾尔族自治区乌鲁木齐市', + '650101': '新疆维吾尔族自治区乌鲁木齐市市辖区', + '650102': '新疆维吾尔族自治区乌鲁木齐市天山区', + '650103': '新疆维吾尔族自治区乌鲁木齐市沙依巴克区', + '650104': '新疆维吾尔族自治区乌鲁木齐市新市区', + '650105': '新疆维吾尔族自治区乌鲁木齐市水磨沟区', + '650106': '新疆维吾尔族自治区乌鲁木齐市头屯河区', + '650107': '新疆维吾尔族自治区乌鲁木齐市南山矿区', + '650108': '新疆维吾尔族自治区乌鲁木齐市东山区', + '650121': '新疆维吾尔族自治区乌鲁木齐市乌鲁木齐县', + '650200': '新疆维吾尔族自治区克拉玛依市', + '650201': '新疆维吾尔族自治区克拉玛依市市辖区', + '650202': '新疆维吾尔族自治区克拉玛依市独山子区', + '650203': '新疆维吾尔族自治区克拉玛依市克拉玛依区', + '650204': '新疆维吾尔族自治区克拉玛依市白碱滩区', + '650205': '新疆维吾尔族自治区克拉玛依市乌尔禾区', + '652100': '新疆维吾尔族自治区吐鲁番地区', + '652101': '新疆维吾尔族自治区吐鲁番地区吐鲁番市', + '652122': '新疆维吾尔族自治区吐鲁番地区鄯善县', + '652123': '新疆维吾尔族自治区吐鲁番地区托克逊县', + '652200': '新疆维吾尔族自治区哈密地区', + '652201': '新疆维吾尔族自治区哈密地区哈密市', + '652222': '新疆维吾尔族自治区哈密地区巴里坤哈萨克自治县', + '652223': '新疆维吾尔族自治区哈密地区伊吾县', + '652300': '新疆维吾尔族自治区昌吉回族自治州', + '652301': '新疆维吾尔族自治区昌吉回族自治州昌吉市', + '652302': '新疆维吾尔族自治区昌吉回族自治州阜康市', + '652303': '新疆维吾尔族自治区昌吉回族自治州米泉市', + '652323': '新疆维吾尔族自治区昌吉回族自治州呼图壁县', + '652324': '新疆维吾尔族自治区昌吉回族自治州玛纳斯县', + '652325': '新疆维吾尔族自治区昌吉回族自治州奇台县', + '652327': '新疆维吾尔族自治区昌吉回族自治州吉木萨尔县', + '652328': '新疆维吾尔族自治区昌吉回族自治州木垒哈萨克自治县', + '652700': '新疆维吾尔族自治区博尔塔拉蒙古自治州', + '652701': '新疆维吾尔族自治区博尔塔拉蒙古自治州博乐市', + '652722': '新疆维吾尔族自治区博尔塔拉蒙古自治州精河县', + '652723': '新疆维吾尔族自治区博尔塔拉蒙古自治州温泉县', + '652800': '新疆维吾尔族自治区巴音郭楞蒙古自治州', + '652801': '新疆维吾尔族自治区巴音郭楞蒙古自治州库尔勒市', + '652822': '新疆维吾尔族自治区巴音郭楞蒙古自治州轮台县', + '652823': '新疆维吾尔族自治区巴音郭楞蒙古自治州尉犁县', + '652824': '新疆维吾尔族自治区巴音郭楞蒙古自治州若羌县', + '652825': '新疆维吾尔族自治区巴音郭楞蒙古自治州且末县', + '652826': '新疆维吾尔族自治区巴音郭楞蒙古自治州焉耆回族自治县', + '652827': '新疆维吾尔族自治区巴音郭楞蒙古自治州和静县', + '652828': '新疆维吾尔族自治区巴音郭楞蒙古自治州和硕县', + '652829': '新疆维吾尔族自治区巴音郭楞蒙古自治州博湖县', + '652900': '新疆维吾尔族自治区阿克苏地区', + '652901': '新疆维吾尔族自治区阿克苏地区阿克苏市', + '652922': '新疆维吾尔族自治区阿克苏地区温宿县', + '652923': '新疆维吾尔族自治区阿克苏地区库车县', + '652924': '新疆维吾尔族自治区阿克苏地区沙雅县', + '652925': '新疆维吾尔族自治区阿克苏地区新和县', + '652926': '新疆维吾尔族自治区阿克苏地区拜城县', + '652927': '新疆维吾尔族自治区阿克苏地区乌什县', + '652928': '新疆维吾尔族自治区阿克苏地区阿瓦提县', + '652929': '新疆维吾尔族自治区阿克苏地区柯坪县', + '653000': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州', + '653001': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿图什市', + '653022': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿克陶县', + '653023': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿合奇县', + '653024': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州乌恰县', + '653100': '新疆维吾尔族自治区喀什地区', + '653101': '新疆维吾尔族自治区喀什地区喀什市', + '653121': '新疆维吾尔族自治区喀什地区疏附县', + '653122': '新疆维吾尔族自治区喀什地区疏勒县', + '653123': '新疆维吾尔族自治区喀什地区英吉沙县', + '653124': '新疆维吾尔族自治区喀什地区泽普县', + '653125': '新疆维吾尔族自治区喀什地区莎车县', + '653126': '新疆维吾尔族自治区喀什地区叶城县', + '653127': '新疆维吾尔族自治区喀什地区麦盖提县', + '653128': '新疆维吾尔族自治区喀什地区岳普湖县', + '653129': '新疆维吾尔族自治区喀什地区伽师县', + '653130': '新疆维吾尔族自治区喀什地区巴楚县', + '653131': '新疆维吾尔族自治区喀什地区塔什库尔干塔吉克自治县', + '653200': '新疆维吾尔族自治区和田地区', + '653201': '新疆维吾尔族自治区和田地区和田市', + '653221': '新疆维吾尔族自治区和田地区和田县', + '653222': '新疆维吾尔族自治区和田地区墨玉县', + '653223': '新疆维吾尔族自治区和田地区皮山县', + '653224': '新疆维吾尔族自治区和田地区洛浦县', + '653225': '新疆维吾尔族自治区和田地区策勒县', + '653226': '新疆维吾尔族自治区和田地区于田县', + '653227': '新疆维吾尔族自治区和田地区民丰县', + '654000': '新疆维吾尔族自治区伊犁哈萨克自治州', + '654001': '新疆维吾尔族自治区伊犁哈萨克自治州奎屯市', + '654100': '新疆维吾尔族自治区伊犁哈萨克自治州伊犁地区', + '654101': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁市', + '654121': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁县', + '654122': '新疆自治区伊犁哈萨克自治州察布查尔锡伯自治县', + '654123': '新疆维吾尔族自治区伊犁哈萨克自治州霍城县', + '654124': '新疆维吾尔族自治区伊犁哈萨克自治州巩留县', + '654125': '新疆维吾尔族自治区伊犁哈萨克自治州新源县', + '654126': '新疆维吾尔族自治区伊犁哈萨克自治州昭苏县', + '654127': '新疆维吾尔族自治区伊犁哈萨克自治州特克斯县', + '654128': '新疆维吾尔族自治区伊犁哈萨克自治州尼勒克县', + '654200': '新疆维吾尔族自治区塔城地区', + '654201': '新疆维吾尔族自治区塔城地区塔城市', + '654202': '新疆维吾尔族自治区塔城地区乌苏市', + '654221': '新疆维吾尔族自治区塔城地区额敏县', + '654223': '新疆维吾尔族自治区塔城地区沙湾县', + '654224': '新疆维吾尔族自治区塔城地区托里县', + '654225': '新疆维吾尔族自治区塔城地区裕民县', + '654226': '新疆维吾尔族自治区塔城地区和布克赛尔蒙古自治县', + '654300': '新疆维吾尔族自治区阿勒泰地区', + '654301': '新疆维吾尔族自治区阿勒泰地区阿勒泰市', + '654321': '新疆维吾尔族自治区阿勒泰地区布尔津县', + '654322': '新疆维吾尔族自治区阿勒泰地区富蕴县', + '654323': '新疆维吾尔族自治区阿勒泰地区福海县', + '654324': '新疆维吾尔族自治区阿勒泰地区哈巴河县', + '654325': '新疆维吾尔族自治区阿勒泰地区青河县', + '654326': '新疆维吾尔族自治区阿勒泰地区吉木乃县', + '659000': '新疆维吾尔族自治区直辖县级行政单位', + '659001': '新疆维吾尔族自治区石河子市' +} + +function IDValidator() { + let param = { + error: { + longNumber: '长数字存在精度问题,请使用字符串传值! Long number is not allowed, because the precision of the Number In JavaScript.' + } + } + let util = { + checkArg: function (id) { + let argType = (typeof id) + + switch (argType) { + case 'number': + // long number not allowed + id = id.toString() + if (id.length > 15) { + this.error(param.error.longNumber) + return false + } + break + case 'string': + break + default: + return false + } + id = id.toUpperCase() + let code = null + if (id.length === 18) { + // 18位 + code = { + body: id.slice(0, 17), + checkBit: id.slice(-1), + type: 18 + } + } else if (id.length === 15) { + // 15位 + code = { + body: id, + type: 15 + } + } else { + return false + } + return code + }, + // 地址码检查 + checkAddr: function (addr, GB2260) { + let addrInfo = this.getAddrInfo(addr, GB2260) + return addrInfo !== false + }, + // 取得地址码信息 + getAddrInfo: function (addr, GB2260) { + GB2260 = GB2260 || null + // 查询GB/T2260,没有引入GB2260时略过 + if (GB2260 === null) { + return addr + } + if (!GB2260.hasOwnProperty(addr)) { + // 考虑标准不全的情况,搜索不到时向上搜索 + let tmpAddr + tmpAddr = addr.slice(0, 4) + '00' + if (!GB2260.hasOwnProperty(tmpAddr)) { + tmpAddr = addr.slice(0, 2) + '0000' + if (!GB2260.hasOwnProperty(tmpAddr)) { + return false + } else { + return GB2260[tmpAddr] + '未知地区' + } + } else { + return GB2260[tmpAddr] + '未知地区' + } + } else { + return GB2260[addr] + } + }, + // 生日码检查 + checkBirth: function (birth) { + let year, month, day + if (birth.length === 8) { + year = parseInt(birth.slice(0, 4), 10) + month = parseInt(birth.slice(4, 6), 10) + day = parseInt(birth.slice(-2), 10) + } else if (birth.length === 6) { + year = parseInt('19' + birth.slice(0, 2), 10) + month = parseInt(birth.slice(2, 4), 10) + day = parseInt(birth.slice(-2), 10) + } else { + return false + } + // TODO 是否需要判断年份 + /* + * if( year<1800 ){ return false; } + */ + // TODO 按月份检测 + if (month > 12 || month === 0 || day > 31 || day === 0) { + return false + } + + return true + }, + // 顺序码检查 + checkOrder: function (order) { + // 暂无需检测 + + return true + }, + // 加权 + weight: function (t) { + return Math.pow(2, t - 1) % 11 + }, + // 随机整数 + rand: function (max, min) { + min = min || 1 + return Math.round(Math.random() * (max - min)) + min + }, + // 数字补位 + str_pad: function (str, len, chr, right) { + str = str.toString() + len = len || 2 + chr = chr || '0' + right = right || false + if (str.length >= len) { + return str + } else { + for (let i = 0, j = len - str.length; i < j; i++) { + if (right) { + str = str + chr + } else { + str = chr + str + } + } + return str + } + }, + // 抛错 + error: function (msg) { + let e = new Error() + e.message = 'IDValidator: ' + msg + throw e + } + } + let _IDValidator = function (GB2260) { + if (typeof GB2260 !== 'undefined') { + this.GB2260 = GB2260 + } + // 建立cache + this.cache = {} + } + _IDValidator.prototype = { + isValid: function (id) { + let GB2260 = this.GB2260 || null + let code = util.checkArg(id) + if (code === false) { + return false + } + // 查询cache + if (this.cache.hasOwnProperty(id) && typeof (this.cache[id].valid) !== 'undefined') { + return this.cache[id].valid + } else { + if (!this.cache.hasOwnProperty(id)) { + this.cache[id] = {} + } + } + + let addr = code.body.slice(0, 6) + let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body.slice(6, 12)) + let order = code.body.slice(-3) + + if (!(util.checkAddr(addr, GB2260) && util.checkBirth(birth) && util + .checkOrder(order))) { + this.cache[id].valid = false + return false + } + + // 15位不含校验码,到此已结束 + if (code.type === 15) { + this.cache[id].valid = true + return true + } + + /* 校验位部分 */ + + // 位置加权 + let posWeight = [] + for (let i = 18; i > 1; i--) { + let wei = util.weight(i) + posWeight[i] = wei + } + + // 累加body部分与位置加权的积 + let bodySum = 0 + let bodyArr = code.body.split('') + for (let j = 0; j < bodyArr.length; j++) { + bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j]) + } + + // 得出校验码 + let checkBit = 12 - (bodySum % 11) + if (checkBit === 10) { + checkBit = 'X' + } else if (checkBit > 10) { + checkBit = checkBit % 11 + } + checkBit = (typeof checkBit === 'number' ? checkBit.toString() + : checkBit) + + // 检查校验码 + if (checkBit !== code.checkBit) { + this.cache[id].valid = false + return false + } else { + this.cache[id].valid = true + return true + } + }, + // 获取年龄 + getAgeForIdCard: function (idStr) { + let len = idStr.length // 身份证编码长度 + if (len < 15) { + return -1 + } else { // 身份证编码大于15位 + if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18 + return -1 + } else { + let date1 = new Date() // 取得当前日期 + let year1 = date1.getFullYear() // 取得当前年份 + let month1 = date1.getMonth() // 取得当前月份 + if (len === 15) { // 15位身份证 + if (month1 > parseInt(idStr.substr(8, 2))) { // 判断当前月分与编码中的月份大小 + return year1 - ('19' + idStr.substr(6, 2)) + } else { + return year1 - ('19' + idStr.substr(6, 2)) - 1 + } + } else if (len === 18) { // 18位身份证 + if (month1 > parseInt(idStr.substr(10, 2))) { // 判断当前月分与编码中的月份大小 + return year1 - idStr.substr(6, 4) + } else { + return year1 - idStr.substr(6, 4) - 1 + } + } + } + } + }, + // 获取性别 + getSexForIdCard: function (idStr) { + let len = idStr.length // 身份证编码长度 + if (len < 15) { + return -1 + } else { // 身份证编码大于15位 + if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18 + return -1 + } else { + if (len === 15) { // 15位身份证 + return (parseInt(idStr.substring(13, 14)) % 2 === 0) ? 0 : 1 + } else if (len === 18) { // 18位身份证 + return (parseInt(idStr.substring(16, 17)) % 2 === 0) ? 0 : 1 + } + } + } + }, + // 分析详细信息 + getInfo: function (id) { + let GB2260 = this.GB2260 || null + // 号码必须有效 + if (this.isValid(id) === false) { + return false + } + // TODO 复用此部分 + let code = util.checkArg(id) + + // 查询cache + // 到此时通过isValid已经有了cache记录 + if (typeof this.cache[id].info !== 'undefined') { + return this.cache[id].info + } + + let addr = code.body.slice(0, 6) + let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body + .slice(6, 12)) + let order = code.body.slice(-3) + + let info = {} + info.addrCode = addr + if (GB2260 !== null) { + info.addr = util.getAddrInfo(addr, GB2260) + } + info.birth = (code.type === 18 ? (([birth.slice(0, 4), + birth.slice(4, 6), birth.slice(-2)]).join('-')) : (( + '19' + birth.slice(0, 2), birth.slice(2, 4), + birth.slice(-2))).join('-')) + info.sex = (order % 2 === 0 ? 0 : 1) + info.length = code.type + if (code.type === 18) { + info.checkBit = code.checkBit + } + + // 记录cache + this.cache[id].info = info + + return info + }, + // 仿造一个号 + makeID: function (isFifteen) { + let GB2260 = this.GB2260 || null + + // 地址码 + let addr = null + if (GB2260 !== null) { + let loopCnt = 0 + while (addr === null) { + // 防止死循环 + if (loopCnt > 10) { + addr = 110101 + break + } + let prov = util.str_pad(util.rand(50), 2, '0') + let city = util.str_pad(util.rand(20), 2, '0') + let area = util.str_pad(util.rand(20), 2, '0') + let addrTest = [prov, city, area].join('') + if (GB2260[addrTest]) { + addr = addrTest + break + } + } + } else { + addr = 110101 + } + + // 出生年 + let yr = util.str_pad(util.rand(99, 50), 2, '0') + let mo = util.str_pad(util.rand(12, 1), 2, '0') + let da = util.str_pad(util.rand(28, 1), 2, '0') + if (isFifteen) { + return addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1') + } + + yr = '19' + yr + let body = addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1') + + // 位置加权 + let posWeight = [] + for (let i = 18; i > 1; i--) { + let wei = util.weight(i) + posWeight[i] = wei + } + + // 累加body部分与位置加权的积 + let bodySum = 0 + let bodyArr = body.split('') + for (let j = 0; j < bodyArr.length; j++) { + bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j]) + } + + // 得出校验码 + let checkBit = 12 - (bodySum % 11) + if (checkBit === 10) { + checkBit = 'X' + } else if (checkBit > 10) { + checkBit = checkBit % 11 + } + checkBit = (typeof checkBit === 'number' ? checkBit.toString() + : checkBit) + + return (body + checkBit) + } + + }// _IDValidator + GB2260 = GB2260 === null ? '' : GB2260 + return new _IDValidator(GB2260) +} + +export default new IDValidator(); diff --git a/src/utils/config.js b/src/utils/config.js new file mode 100644 index 0000000..df633de --- /dev/null +++ b/src/utils/config.js @@ -0,0 +1,29 @@ +/* + * @Author: 小明丶 + * @Date: 2019-09-02 14:03:59 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-05-29 15:20:51 + * @Description: + */ +/** + * c.k 2017/11/15 创建 + * c.y 2018/3/16 修改 (把增加了获取项目的动态配置的方法) + * 获取设备的信息以及渠道号 + * 获取项目的名称,logo,协议等等动态配置 + */ + +import jsBridge from './jsBridge'; // 安卓/iOS获取设备的信息已经cn值 +import systemApi from '@/api/index'; + +// 设置客户端的信息 +function setClientInfo() { + // 如果设置是安卓/iOS的话,就通过jsBridge来获取设备信息,以及cn值 + jsBridge.fetchDeviceInfo(); +} + +// 获取项目的配置信息,项目的标题,logo,协议 +function fetchProductConfig() { + return systemApi.getJson(); +} + +export default {setClientInfo, fetchProductConfig}; diff --git a/src/utils/createUserProtocol.js b/src/utils/createUserProtocol.js new file mode 100644 index 0000000..8a9d04f --- /dev/null +++ b/src/utils/createUserProtocol.js @@ -0,0 +1,33 @@ +/* + * @Author: 小明丶 + * @Date: 2020-05-29 13:52:12 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-11 10:38:26 + * @Description: + */ + + +export default function(info) { + //不用引入areement2,因为在index.html里面已经导入了 + let agreement = agreement1; + agreement = agreement.replace('商户注册时填写的营业执照号', info.licenseNo); + agreement = agreement.replace('商户注册时填写的负责人姓名', info.priName); + agreement = agreement.replace( + '商户注册时填写的负责人手机号', + info.priMblNo + ); + agreement = agreement.replace('商户名称或法人姓名', ''); + agreement = agreement.replace('商户注册时填写的银行卡号', ''); + agreement = agreement.replace('商户注册时选择的银行', ''); + agreement = agreement.replace('商户注册时填写的负责人邮箱', info.priEmail); + agreement = agreement.replace('负责人手机号', info.priMblNo); + agreement = agreement.replace('商户注册时选择及填写的地址', info.dtlAddr); + agreement = agreement.replace(/当天日期年/g, `${new Date().getFullYear()}`); + agreement = agreement.replace( + /当天日期月/g, + `${new Date().getMonth() + 1}` + ); + agreement = agreement.replace(/当天日期日/g, `${new Date().getDate()}`); + agreement = agreement.replace(/法人姓名/g, info.legalName); + return agreement; +} diff --git a/src/utils/dateformat.js b/src/utils/dateformat.js new file mode 100644 index 0000000..d812901 --- /dev/null +++ b/src/utils/dateformat.js @@ -0,0 +1,282 @@ +/* + * @Descripttion: 时间格式化函数 + * @Author: + * @LastEditors : 小明丶 + * @Date: 2019-03-30 09:24:27 + * @LastEditTime : 2019-12-26 16:14:07 + */ +(function (main) { + 'use strict'; + var fecha = {}; + var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g; + var twoDigits = /\d\d?/; + var threeDigits = /\d{3}/; + var fourDigits = /\d{4}/; + var word = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + var noop = function () { + }; + + + function monthUpdate(arrName) { + return function (d, v, i18n) { + var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase()); + if (~index) { + d.month = index; + } + }; + } + + function pad(val, len) { + val = String(val); + len = len || 2; + while (val.length < len) { + val = '0' + val; + } + return val; + } + + var formatFlags = { + D: function(dateObj) { + return dateObj.getDay(); + }, + DD: function(dateObj) { + return pad(dateObj.getDay()); + }, + Do: function(dateObj, i18n) { + return i18n.DoFn(dateObj.getDate()); + }, + d: function(dateObj) { + return dateObj.getDate(); + }, + dd: function(dateObj) { + return pad(dateObj.getDate()); + }, + ddd: function(dateObj, i18n) { + return i18n.dayNamesShort[dateObj.getDay()]; + }, + dddd: function(dateObj, i18n) { + return i18n.dayNames[dateObj.getDay()]; + }, + M: function(dateObj) { + return dateObj.getMonth() + 1; + }, + MM: function(dateObj) { + return pad(dateObj.getMonth() + 1); + }, + MMM: function(dateObj, i18n) { + return i18n.monthNamesShort[dateObj.getMonth()]; + }, + MMMM: function(dateObj, i18n) { + return i18n.monthNames[dateObj.getMonth()]; + }, + yy: function(dateObj) { + return String(dateObj.getFullYear()).substr(2); + }, + yyyy: function(dateObj) { + return dateObj.getFullYear(); + }, + h: function(dateObj) { + return dateObj.getHours() % 12 || 12; + }, + hh: function(dateObj) { + return pad(dateObj.getHours() % 12 || 12); + }, + H: function(dateObj) { + return dateObj.getHours(); + }, + HH: function(dateObj) { + return pad(dateObj.getHours()); + }, + m: function(dateObj) { + return dateObj.getMinutes(); + }, + mm: function(dateObj) { + return pad(dateObj.getMinutes()); + }, + s: function(dateObj) { + return dateObj.getSeconds(); + }, + ss: function(dateObj) { + return pad(dateObj.getSeconds()); + }, + S: function(dateObj) { + return Math.round(dateObj.getMilliseconds() / 100); + }, + SS: function(dateObj) { + return pad(Math.round(dateObj.getMilliseconds() / 10), 2); + }, + SSS: function(dateObj) { + return pad(dateObj.getMilliseconds(), 3); + }, + a: function(dateObj, i18n) { + return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1]; + }, + A: function(dateObj, i18n) { + return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase(); + }, + ZZ: function(dateObj) { + var o = dateObj.getTimezoneOffset(); + return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4); + } + }; + + var parseFlags = { + d: [twoDigits, function (d, v) { + d.day = v; + }], + M: [twoDigits, function (d, v) { + d.month = v - 1; + }], + yy: [twoDigits, function (d, v) { + var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2); + d.year = '' + (v > 68 ? cent - 1 : cent) + v; + }], + h: [twoDigits, function (d, v) { + d.hour = v; + }], + m: [twoDigits, function (d, v) { + d.minute = v; + }], + s: [twoDigits, function (d, v) { + d.second = v; + }], + yyyy: [fourDigits, function (d, v) { + d.year = v; + }], + S: [/\d/, function (d, v) { + d.millisecond = v * 100; + }], + SS: [/\d{2}/, function (d, v) { + d.millisecond = v * 10; + }], + SSS: [threeDigits, function (d, v) { + d.millisecond = v; + }], + D: [twoDigits, noop], + ddd: [word, noop], + MMM: [word, monthUpdate('monthNamesShort')], + MMMM: [word, monthUpdate('monthNames')], + a: [word, function (d, v, i18n) { + var val = v.toLowerCase(); + if (val === i18n.amPm[0]) { + d.isPm = false; + } else if (val === i18n.amPm[1]) { + d.isPm = true; + } + }], + ZZ: [/[\+\-]\d\d:?\d\d/, function (d, v) { + var parts = (v + '').match(/([\+\-]|\d\d)/gi), minutes; + + if (parts) { + minutes = +(parts[1] * 60) + parseInt(parts[2], 10); + d.timezoneOffset = parts[0] === '+' ? minutes : -minutes; + } + }] + }; + parseFlags.DD = parseFlags.D; + parseFlags.dddd = parseFlags.ddd; + parseFlags.Do = parseFlags.dd = parseFlags.d; + parseFlags.mm = parseFlags.m; + parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h; + parseFlags.MM = parseFlags.M; + parseFlags.ss = parseFlags.s; + parseFlags.A = parseFlags.a; + + + fecha.masks = { + 'default': 'ddd MMM dd yyyy HH:mm:ss', + shortDate: 'M/D/yy', + mediumDate: 'MMM d, yyyy', + longDate: 'MMMM d, yyyy', + fullDate: 'dddd, MMMM d, yyyy', + shortTime: 'HH:mm', + mediumTime: 'HH:mm:ss', + longTime: 'HH:mm:ss.SSS' + }; + + + fecha.format = function (dateObj, mask, i18nSettings) { + var i18n = i18nSettings || fecha.i18n; + + if (typeof dateObj === 'number') { + dateObj = new Date(dateObj); + } + + if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) { + //throw new Error('Invalid Date in fecha.format'); + } + + mask = fecha.masks[mask] || mask || fecha.masks['default']; + + return mask.replace(token, function ($0) { + return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1); + }); + }; + + + fecha.parse = function (dateStr, format, i18nSettings) { + var i18n = i18nSettings || fecha.i18n; + + if (typeof format !== 'string') { + throw new Error('Invalid format in fecha.parse'); + } + + format = fecha.masks[format] || format; + + if (dateStr.length > 1000) { + return false; + } + + var isValid = true; + var dateInfo = {}; + format.replace(token, function ($0) { + if (parseFlags[$0]) { + var info = parseFlags[$0]; + var index = dateStr.search(info[0]); + if (!~index) { + isValid = false; + } else { + dateStr.replace(info[0], function (result) { + info[1](dateInfo, result, i18n); + dateStr = dateStr.substr(index + result.length); + return result; + }); + } + } + + return parseFlags[$0] ? '' : $0.slice(1, $0.length - 1); + }); + + if (!isValid) { + return false; + } + + var today = new Date(); + if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) { + dateInfo.hour = +dateInfo.hour + 12; + } else if (dateInfo.isPm === false && +dateInfo.hour === 12) { + dateInfo.hour = 0; + } + + var date; + if (dateInfo.timezoneOffset != null) { + dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset; + date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, + dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0)); + } else { + date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, + dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0); + } + return date; + }; + + if (typeof module !== 'undefined' && module.exports) { + module.exports = fecha; + } else if (typeof define === 'function' && define.amd) { + define(function () { + return fecha; + }); + } else { + main.fecha = fecha; + } +})(this); diff --git a/src/utils/deviceInfo.js b/src/utils/deviceInfo.js new file mode 100644 index 0000000..6638cae --- /dev/null +++ b/src/utils/deviceInfo.js @@ -0,0 +1,88 @@ +/** + * Created by c.k on 2017/11/10. + * 获取客户端本地设备信息和渠道编号 + */ + +export default { + saveDeviceInfo(deviceInfo) { + // 外链默认解析地址里面的chanNo,app时解析原生回传的chanNo + // alert(deviceInfo); + deviceInfo = JSON.parse(deviceInfo); + if (deviceInfo && deviceInfo.childChan) { + deviceInfo.isApp = '1'; + } + let configInfo = window.localStorage.getItem('newClientInfo'); + if (configInfo) { + configInfo = JSON.parse(configInfo); + for (let key in deviceInfo) { + configInfo[key] = deviceInfo[key]; + } + configInfo.ostype = '03'; + + window.localStorage.setItem( + 'newClientInfo', + JSON.stringify(configInfo) + ); + } + deviceInfo = JSON.stringify(deviceInfo); + window.localStorage.setItem('deviceInfo', deviceInfo); + }, + // 获取本地存储的设备信息 + fetchDeviceInfo() { + return window.localStorage.getItem('deviceInfo'); + }, + // 获取设备类型 + getDeviceType() { + let browser = { + versions() { + let u = navigator.userAgent; + return { + trident: u.indexOf('Trident') > -1, // IE内核 + presto: u.indexOf('Presto') > -1, // opera内核 + webKit: u.indexOf('AppleWebKit') > -1, // 苹果、谷歌内核 + gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, // 火狐内核 + mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端 + ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端 + android: + u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android终端或者uc浏览器 + iPhone: u.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器 + iPad: u.indexOf('iPad') > -1, // 是否iPad + webApp: u.indexOf('Safari') === -1, // 是否web应该程序,没有头部与底部 + weixin: u.indexOf('MicroMessenger') > -1, // 是否微信 (2015-01-22新增) + qq: u.match(/\sQQ/i) === 'qq' // 是否QQ + }; + }, + language: ( + navigator.browserLanguage || navigator.language + ).toLowerCase() + }; + var u = navigator.userAgent; + var device = ''; //当前设备信息 + if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { + //安卓手机 + device = 'Android'; + return 'Android'; + } else if (u.indexOf('iPhone') > -1) { + //苹果手机 + device = 'IOS'; + return 'IOS'; + } else if (u.indexOf('Windows Phone') > -1) { + //winphone手机 + device = 'WindowsPhone'; + return 'WindowsPhone'; + } else if (u.indexOf('MicroMessenger') > -1) { + device = 'weixin'; + return 'weixin'; + } + // let type = browser.versions(); + // if (type.android) { + // return 'Android' + // } else if (type.ios || type.iPhone || type.iPad) { + // return 'IOS' + // } else if (type.weixin) { + // return 'weixin' + // } else { + // return 'other' + // } + } +}; diff --git a/src/utils/filters.js b/src/utils/filters.js new file mode 100644 index 0000000..3346194 --- /dev/null +++ b/src/utils/filters.js @@ -0,0 +1,31 @@ +/* + * @Descripttion: Vue过滤器 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-04-05 11:32:33 + * @LastEditTime: 2019-08-21 09:57:18 + */ +import dataformat from "./dateformat"; + +/** + * @Descripttion: 格式化电话号码 + * @param {tel} 电话号码 + * @return: 13388327924 >>> 133****7924 + */ +export function formatPhone(tel) { + return tel.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') +} + + +let list = [ + {name:'timeformat',fn:dataformat.format}, + // {name:'phoneformat',fn:formatPhone}, +]; + +export default { + install(Vue,opt){ + list.forEach(item=>{ + Vue.filter(item.name,item.fn); + }) + } +} \ No newline at end of file diff --git a/src/utils/formCheckAndComb.js b/src/utils/formCheckAndComb.js new file mode 100644 index 0000000..4b1a35b --- /dev/null +++ b/src/utils/formCheckAndComb.js @@ -0,0 +1,194 @@ +/* + * @Author: 小明丶 + * @Date: 2019-09-02 09:12:30 + * @LastEditors: 小明丶 + * @LastEditTime: 2019-09-02 09:18:52 + * @Description: + */ +/** + * Created by c.y + * 2018/4/12 + * form--提交数据组合--例如房抵贷 + */ +import Vue from 'vue'; +import validate from './validator'; +import IDValidator from './IDValidator'; + + +// 把后台返回的null,转换为空字符串, infoObj需要检查 +function changeNullToString (infoObj) { + for (let i in infoObj) { + infoObj[i] === null ? infoObj[i] = '' : infoObj[i] = infoObj[i]; + } + return infoObj; +} + +// 组合后台返回省,市,区---来满足vux的地址选择插件需要的格式 +// province省 city市 country区 +function getAddressFormat (province, city, country) { + let addressList = []; + if (!validate.checkValEmpty(province)) { + addressList.push(province); + } + if (!validate.checkValEmpty(city)) { + addressList.push(city); + } + if (!validate.checkValEmpty(country)) { + addressList.push(country); + } + return addressList; +} + +// 判断地址类型的值,是否必填,并进行提示 +// addressList, 代表需要校验的地址数组 +function checkAddressRequired (addressList) { + return validate.checkValEmpty(addressList[0]); +} + +// 得到selector的列表 +function getOptionsList (optionList) { + let tmpList = []; + if (optionList instanceof Array) { + optionList.forEach(function (item) { + tmpList.push({ + key: item.code, + value: item.name + }); + }); + } + return tmpList; +} + +// 检查必填的字段以及错误提示, requiredList是检查规则, checkInfo要检查的对象 +// context为this对象 +function checkRequiredField (requiredList, checkInfo, context) { + let allPassLabel = true; + for (let i = 0; i < requiredList.length; i++) { + // 如果配置了validator,那么就以validator进行验证,忽略其他验证(validator需要是函数) + if (requiredList[i].validator && Object.prototype.toString.call(requiredList[i].validator) === '[object Function]') { + if (!requiredList[i].validator(requiredList[i], checkInfo, context)) { + allPassLabel = false; + return false; + } + // 如果是地址的话 + } else if (requiredList[i].type === 'address') { + // 对于地址检查,是否为空,为空的话,返回true + if (checkAddressRequired(context[requiredList[i].checkKey])) { + checkValidateTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是非地址的话,那么第一步检查是否为空 + } else { + // 第一步,先检查是否填写 + if (validate.checkValEmpty(checkInfo[requiredList[i].key])) { + checkValidateTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果有patter的话,直接使用pattern,即正则判断(pattern需要正则) + if (requiredList[i].pattern && Object.prototype.toString.call(requiredList[i].pattern) === '[object RegExp]') { + if(!requiredList[i].pattern.test(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + } + // 对于特定类型,进行判断是否添加正确的类型 + // 如果是名字类型 + if (requiredList[i].type === 'name') { + if (!validate.checkName(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是手机号 + } else if (requiredList[i].type === 'tel') { + if (!validate.checkPhone(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是身份证 + } else if (requiredList[i].type === 'idCard') { + if (!IDValidator.isValid(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是座机 + } else if (requiredList[i].type === 'lineTel') { + if (!validate.checkLandline(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是房屋楼层 + } else if (requiredList[i].type === 'floor') { + if (!validate.checkFloor(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + // 如果是银行卡 + }else if (requiredList[i].type === 'bankCardNo') { + if (!validate.bankCard(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + }else if (requiredList[i].type === 'isEmail') { + if (!validate.checkEmail(checkInfo[requiredList[i].key])) { + checkRegularExpreTip(requiredList[i], context); + allPassLabel = false; + return false; + } + } + } + } + return allPassLabel; +} + +// 错误提示, requiredItem为检查的对象,context为this对象 +function checkValidateTip (requiredItem, context) { + let _this = context; + // tipType值为1为输入框,为2的话是下拉选择 + if (requiredItem.tipType === 1) { + // 如果进行正则验证的话,那么提示内容是正确,而一般的提示没有正确的这个提示字 + // 如果没有type属性的话,那么就是默认的 + Vue.prototype.$notify('请输入' + requiredItem.message, 'middle'); + return false; + } else if (requiredItem.tipType === 2) { + Vue.prototype.$notify('请选择' + requiredItem.message, 'middle'); + return false; + } +} + +// 错题提示,requiredItem为检查的对象,context为this对象 +// 这个是正则匹配的检测或者其他特殊检测的提示 +function checkRegularExpreTip (requiredItem, context) { + Vue.prototype.$notify('请输入正确的' + requiredItem.message, 'middle'); + return false; +} + +// 封装提交数据 submitVal需要提交的val对象 +function packageSubmitInfo (submitVal) { + let submitInfo = {}; + if (submitVal instanceof Object && submitVal !== null) { + for (let i in submitVal) { + // 对于非必填的话,其值为空的话,那么不传递给后台 + if (!validate.checkValEmpty(submitVal[i])) { + submitInfo[i] = submitVal[i]; + } + } + } + return submitInfo; +} + +export default { + getAddressFormat, + getOptionsList, + checkRequiredField, + packageSubmitInfo, + changeNullToString +}; diff --git a/src/utils/formValidator.js b/src/utils/formValidator.js new file mode 100644 index 0000000..6dc4f21 --- /dev/null +++ b/src/utils/formValidator.js @@ -0,0 +1,101 @@ +/* + * @Descripttion: 表单验证工具函数 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-04-01 19:54:53 + * @LastEditTime: 2019-08-22 14:23:15 + */ +import IDValidator from './IDValidator'; + +let fns = { + // 参数是否为真 + isEmpty(value) { + return value !== "" && typeof value !== "undefined" && value !== null; + }, + //密码验证 + isPassword(value) { + // 验证密码格式 + return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(value); + }, + // 验证码验证 + isCode(value) { + return /^\d{4}$/.test(value); + }, + isEmail(value){ + return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value); + }, + // 验证电话 + isTel(value) { + return /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/.test(value); + }, + //验证身份证 + isIdCard(value){ + return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value) + }, + // idCard check + checkIDCard(idCard) { + // 验证身份证格式 + return IDValidator.isValid(idCard); + }, + //验证银行卡号 + isBankCode(iccid){ + let initCard = iccid, + s1 = 0, + s2 = 0; + iccid = iccid.substring(0, iccid.length - 1); + let reverse = ''; + for (let i = iccid.length; i > 0; i--) { + reverse += iccid.charAt(i - 1); + } + for (let i = 0; i < reverse.length; i++) { + let digit = parseInt(reverse.charAt(i), 10); + if (i % 2 != 0) { + s1 += digit; + } else { + s2 += 2 * digit; + if (digit >= 5) { + s2 -= 9; + } + } + } + let sum = 10 - ((s1 + s2) % 10); + if (sum === 10) { + sum = 0; + } + return iccid + sum == initCard; + } +}; + +let Validator = function (form, rules) { + return { + // rule demo + //rules:>>> [{key:"formkey",message:"",type:"isEmpty",rule:/\d/}] + check(callback) { + if (!Array.isArray(rules) && rules.length === 0) throw "rules must be instance of Array"; + let len = rules.length; + for (let index = 0; index < len; index++) { + const ruleItem = rules[index]; + let fnName = fns[ruleItem.type]; + if (fnName && !fnName(form[ruleItem.key])) { + callback(ruleItem); + return false; + } + // 如果有自定义验证规则 + let rule = ruleItem.rule; + if(typeof rule !=='undefined' && !rule.test(form[ruleItem.key])){ + callback(ruleItem); + return false; + } + } + return true; + } + } +}; + + +// export default Validator; +export default { + install(Vue,opt){ + Vue.prototype.$validator = Validator; + } +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..8ebb489 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,361 @@ +/* + * @Descripttion: 工具函数 以 _ 符号作为函数前缀 + * @Author: TM丶 + * @LastEditors: 小明丶 + * @Date: 2019-03-10 22:05:50 + * @LastEditTime: 2020-03-27 14:17:45 + */ + +/** + * @Descripttion: 函数节流 + * @param {method} 执行的方法 + * @param {delay} 延迟时间 + * @param {context} 绑定的this值 + * @return: Function + */ +export function _throller(method, delay, context) { + var begin = new Date(); + return function () { + var args = arguments, + current = new Date(); + if (current - begin >= delay) { + method.apply(context, args); + begin = current; + } + } +} + +/** + * @Descripttion: 函数防抖 + * @param {method} 执行的方法 + * @param {delay} 延迟时间 + * @return: Function + */ +export function _debounce(method, delay) { + let timer = null; + return function () { + let context = this, + args = arguments; + + clearTimeout(timer); + timer = setTimeout(function () { + method.apply(context, args); + }, delay); + } +} + +/** + * @Descripttion: 字符串参数解析 + * @demo '?demo=123&test=test' + * @return: {demo:123,test:'test'} + */ +export function _getQueryArgs(str) { + if (str.indexOf('?') === -1) { + throw Error('参数错误') + } + let args = new URLSearchParams(str); + return args; +} + +/** + * @Descripttion: 将base64转换为文件 + * @param {dataurl} base64 + * @param {filename} 要创建的文件名 + * @return: file + */ +export function _dataURLtoFile(dataurl, filename) { + var arr = dataurl.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new File([u8arr], filename, { + type: mime + }); +} + + +/** + * @Descripttion: 文字复制到设备的剪切板 + * @param {text} 要复制的文字 + * @return: Boolean + */ +export function _copyToClipboard(text) { + var textArea = document.createElement('textarea'); + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = 0; + textArea.style.width = '2em'; + textArea.style.height = '2em'; + textArea.style.padding = 0; + textArea.style.border = 'none'; + textArea.style.outline = 'none'; + textArea.style.boxShadow = 'none'; + textArea.style.background = 'transparent'; + textArea.value = text ? text : ""; + document.body.appendChild(textArea); + if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备 + window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效 + // var Url2=document.getElementById("biaoios");//要复制文字的节点 + var range = document.createRange(); + // 选中需要复制的节点 + range.selectNode(textArea); + // 执行选中元素 + window.getSelection().addRange(range); + // 执行 copy 操作 + var successful = document.execCommand('copy'); + // 移除选中的元素 + window.getSelection().removeAllRanges(); + } else { + textArea.select(); + var msg = document.execCommand("Copy"); + } + document.body.removeChild(textArea); +} + + +/**文件转换base64 + * @param { 文件对象 } file + * @return { Promise } + */ +export function _fileToBase64(file) { + if (Object.prototype.toString.call(file) !== "[object File]") { + console.warn(`file 必须是 文件! >>>${file}`); + return + } + let reader = new FileReader(); + reader.readAsDataURL(file); + return new Promise((resolve, reject) => { + reader.onload = function () { + resolve(this.result); + } + }) +} + + +/** + * @Descripttion: 图片压缩 + * @param {path} 图片路径 || base64 + * @param {options} {quality:图片质量0-1,width,height} + * @return: base64 + */ +export function _imgCompress(path, options = {}) { + return new Promise((resolve, reject) => { + let img = new Image(); + img.src = path; + img.onload = function () { + let that = this, + w = that.width, + h = that.height, + scale = w / h, // 默认按比例压缩 + quality = options.quality || 0.3, + canvas = document.createElement('canvas'), + ctx = canvas.getContext('2d'); + + w = options.width || w; + h = options.height || (w / scale); + canvas.width = w; + canvas.height = h; + ctx.drawImage(that, 0, 0, w, h); + if (options.quality && options.quality <= 1 && options.quality > 0) { + quality = options.quality; + } + let base64 = canvas.toDataURL('image/jpeg', quality); + resolve(base64); + } + }) +} + +// 使input=number的maxlength有效 +export function disabledInputStr() { + window.addEventListener('input', (event) => { + let el = event.target, + val = el.value, + tagName = el.tagName.toUpperCase(); + if (tagName === 'INPUT' && el.getAttribute('type') === 'number') { + let maxlength = el.getAttribute('maxlength'); + if (val.length >= maxlength) { + el.value = val.slice(0, maxlength); + event.preventDefault(); + } + } + }) +} + +//移动端判断设备类型:安卓 或 ios +export function judegeDevice() { + let type = { + isIos: false, + isAndroid: false, + } + var u = navigator.userAgent; + if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //安卓手机 + type.isAndroid = true; + } else if (u.indexOf('iPhone') > -1) { //苹果手机 + type.isIos = true; + } + return type; +} + +//解决安卓中键盘弹起时顶起页面,导致元素不在可视区内的问题 +export function scrollElement() { + if (judegeDevice.isAndroid) { + window.addEventListener("resize", function () { + let el = document.activeElement; + if (el.tagName == "INPUT" || el.tagName == "TEXTAREA") { + setTimeout(function () { + // el.scrollIntoViewIfNeeded(); + el.scrollIntoView({ + behavior: 'smooth', + }); + }, 16.7); + } + }) + } +} + + + +/** + * @description: 禁止右键、选择、复制 + */ +export function a() { + ['contextmenu', 'selectstart', 'copy'].forEach(function (ev) { + document.addEventListener(ev, function (event) { + return event.returnValue = false + }) + }); +} + +// 根据 用户的机构类型 获取参数 +export function getParams(orgType, id) { + if(!id) return {}; + let obj = {} + switch (orgType) { + case 1: + case 2: + // 代理、渠道 + obj.merList = [id] + break; + case 3: + //商户 + obj.storeList = [id] + break; + } + return obj +} + +// 解析地区 +export function calcArea(arr){ + let province_list =[], + city_list = [], + county_list = []; + + function parseArea(arr) { + let obj = {} + arr.forEach(item => { + obj[item.value] = item.name; + }) + return obj; + } + + arr.forEach(item => { + item.value = +item.value; + let value = item.value; + if (!item.parent) { + province_list.push(item) + } else if (item.parent % 10000 === 0) { + city_list.push(item) + } else { + county_list.push(item) + } + }) + return { + province_list:parseArea(province_list), + city_list:parseArea(city_list), + county_list:parseArea(county_list) + } +} +// 解析地区 +export function calcAreaTwo(arr){ + let province_list =[], + city_list = [], + county_list = []; + + function parseArea(arr) { + let obj = {} + arr.forEach(item => { + obj[item.value] = item.name; + }) + return obj; + } + + arr.forEach(item => { + item.value = +item.value; + let value = item.value; + if (item.value%10000 ===0 ) { + province_list.push(item) + } else if (item.value % 100 === 0) { + city_list.push(item) + } else { + county_list.push(item) + } + }) + return { + province_list:parseArea(province_list), + city_list:parseArea(city_list), + county_list:parseArea(county_list) + } +} + +export function compress(img){ + // 用于压缩图片的canvas + let canvas = document.createElement('canvas'); + let ctx = canvas.getContext('2d'); + + // 瓦片canvas + var tCanvas = document.createElement('canvas'); + var tctx = tCanvas.getContext('2d'); + + let width = img.width; + let height = img.height; + + // 如果图片大于四百万像素,计算压缩比并将大小压至400万以下 + var ratio; + if ((ratio = width * height / 4000000) > 1) { + ratio = Math.sqrt(ratio); + width /= ratio; + height /= ratio; + } else { + ratio = 1; + } + canvas.width = width * 2; + canvas.height = height * 2; + // 铺底色 + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + // 如果图片像素大于100万则使用瓦片绘制 + var count; + if ((count = width * height / 1000000) > 1) { + count = ~~(Math.sqrt(count) + 1); // 计算要分成多少块瓦片 + // 计算每块瓦片的宽和高 + var nw = ~~(width / count); + var nh = ~~(height / count); + tCanvas.width = nw; + tCanvas.height = nh; + for (var i = 0; i < count; i++) { + for (var j = 0; j < count; j++) { + tctx.drawImage(img, i * nw * ratio, j * nh * ratio, nw * ratio * 2, nh * ratio * 2, 0, 0, nw, nh); + ctx.drawImage(tCanvas, i * nw, j * nh, nw * 2, nh * 2); + } + } + } else { + ctx.drawImage(img, 0, 0, width * 2, height * 2); + } + // 进行最小压缩 + let ndata = canvas.toDataURL('image/jpeg', 0.8); + return ndata; +} \ No newline at end of file diff --git a/src/utils/jsBridge.js b/src/utils/jsBridge.js new file mode 100644 index 0000000..8c4a6a9 --- /dev/null +++ b/src/utils/jsBridge.js @@ -0,0 +1,265 @@ +/** + * Created by c.k on 2017/11/20. + * global WebViewJavascriptBridge + * */ +import deviceInfo from './deviceInfo'; +// import store from '../store' +// import statisticHelper from './statisticalHelper' +// import channelHelper from './channel' +const setupWebViewJavascriptBridge = callback => { + // 注册事件监听 + if (window.WebViewJavascriptBridge) { + return callback(WebViewJavascriptBridge); + } else { + document.addEventListener( + 'WebViewJavascriptBridgeReady', + () => { + callback(WebViewJavascriptBridge); + }, + false + ); + } + + if (window.WVJBCallbacks) { + return window.WVJBCallbacks.push(callback); + } + window.WVJBCallbacks = [callback]; + let WVJBIframe = document.createElement('iframe'); + WVJBIframe.style.display = 'none'; + WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; + document.documentElement.appendChild(WVJBIframe); + setTimeout(function() { + document.documentElement.removeChild(WVJBIframe); + }, 0); +}; + +export default { + showLog(log) { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('showLog', log, function responseCallback( + responseData + ) {}); + }); + }, + closeApp() { + if (window.android && window.android.closeActivity) { + window.android.closeActivity(); + } + }, + // 获取原生设备信息 + fetchDeviceInfo() { + if (deviceInfo.getDeviceType() === 'Android') { + if (window.android && window.android.fetchDeviceInfo) { + let responseData = window.android.fetchDeviceInfo(); + deviceInfo.saveDeviceInfo(responseData); + } + } else { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('kJSFetchDeviceInfo', function( + responseData + ) { + deviceInfo.saveDeviceInfo(responseData); + }); + }); + } + }, + // 回传页面链接至原生 + sendApplyPageUrlToNative() { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler( + 'kJSFetchApplyURL', + window.location.href, + function responseCallback(responseData) {} + ); + }); + }, + // 回传页面信息至原生 + sendApplyPageInfoToNative(info) { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler( + 'kJSFetchProductInfo', + info, + function responseCallback(responseData) {} + ); + }); + }, + // 每次启动app时清除之前的登录状态 + logoutWhenAppLaunch() { + // for android + // window.forceLogoutWhenAppLaunch = function () { + // store.dispatch('logout') + // // 首次进入app,默认统计第一个按钮点击事件 + // statisticHelper.tabbarEventStatistical('loansupermarket'); + // } + // for iOS + // setupWebViewJavascriptBridge(function (bridge) { + // bridge.registerHandler('kJSAppLaunch', function (data) { + // store.dispatch('logout') + // // 首次进入app,默认统计第一个按钮点击事件 + // statisticHelper.tabbarEventStatistical('loansupermarket'); + // }) + // }) + // if (!channelHelper.isApp()) { + // statisticHelper.tabbarEventStatistical('loansupermarket'); + // } + }, + // 隐藏原生启动页 + hideNativeLaunchImage() { + // for android + if (window.appNative && window.appNative.hideLaunchView) { + window.appNative.hideLaunchView(); + } + // for iOS + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('kJSHideLaunchImage', function responseCallback( + responseData + ) {}); + }); + }, + // 隐藏显示原生header + showAndHideNativeHeader(show) { + // for android + if (window.native && window.native.showHeader) { + window.native.showHeader(show); + } + // for iOS + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler( + 'kJSShowAndHideNativeHeader', + show, + function responseCallback(responseData) {} + ); + }); + }, + // 打开微信 + openWX() { + // for android + if (window.android && window.android.openWX) { + window.android.openWX(); + } + // for iOS + // setupWebViewJavascriptBridge(function (bridge) { + // bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) { + // }) + // }) + }, + // 打开相册 + openQrCode() { + // for android + if (window.android && window.android.fetchQrCode) { + window.android.fetchQrCode(); + } else { + } + // for iOS + }, + + // 打开QQ + openQQ() { + // for android + if (window.android && window.android.openQQApplication) { + window.android.openQQApplication(); + } + // for iOS + // setupWebViewJavascriptBridge(function (bridge) { + // bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) { + // }) + // }) + }, + //打开通讯录 + openConect(callback) { + console.log('js打开通讯录'); + //for iOS + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('kJSOpenConect', function responseCallback( + responseData + ) {}); + + bridge.registerHandler('sendContectInfo', function( + data, + responseData + ) { + if (callback) { + callback(data); + } + }); + }); + }, + //获取高德地图定位位置信息 + getAMMapLoactionMsg(callback) { + console.log('js获取位置信息'); + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler( + 'kJSGetAMMapLoactionInfo', + function responseCallback(responseData) { + // alert(responseData.detail); + + if (callback) { + callback(responseData); + } + } + ); + + // bridge.registerHandler('sendAMMapLoactionInfo',function (data,responseData) { + + // // alert(data.address); + + // if(callback){ + // callback(data); + // } + + // }) + }); + }, + + //调用ios相机 + openCamera(callback) { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('kJSGetCameraInfo', function responseCallback( + responseData + ) { + if (callback) { + callback(responseData); + } + }); + }); + }, + + openAlbum(callback) { + setupWebViewJavascriptBridge(function(bridge) { + bridge.callHandler('kJSGetAlbumInfo', function responseCallback( + responseData + ) { + if (callback) { + callback(responseData); + } + }); + }); + } + + // 检查定位权限是否打开 + // checkUserAuthorization(callback) { + // // for android + // if (deviceInfo.isAndroidDevice()) { + // if (window.native && window.native.checkUserAuthorization) { + // let isOpen = window.native.checkUserAuthorization(); + // if (isOpen && isOpen === 'true') { + // callback(true); + // } else { + // callback(false); + // } + // } else { + // callback(true); + // } + // } + // // for iOS + // setupWebViewJavascriptBridge(function (bridge) { + // bridge.callHandler('kJSCheckUserAuthorization', function responseCallback(responseData) { + // if (responseData && responseData === 'true') { + // callback(true); + // } else { + // callback(false); + // } + // }) + // }) + // } +}; diff --git a/src/utils/pageBackByAndroid.js b/src/utils/pageBackByAndroid.js new file mode 100644 index 0000000..bdb31d2 --- /dev/null +++ b/src/utils/pageBackByAndroid.js @@ -0,0 +1,43 @@ +/* + * @Author: 小明丶 + * @Date: 2020-05-07 17:52:20 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-05-07 18:38:06 + * @Description: + */ +/** + * android 返回按钮统一调度的方法, + * 项目中有两个地方需要修改一个是这个地方,还有有个地方是 index.html 文件 + */ +import jsBri from './jsBridge'; +import store from '@/store/index'; + + +export default { + androidBackBtn() { + window.backPageByAndroid = function(obj) { + let hash = window.sessionStorage.getItem("gotoPagetemp"); + let footerList = store.state.footerNav || []; + if(footerList && footerList.length){ + let result = footerList.find(val => { + return val.path === hash; + }); + if (result) { + jsBri.closeApp(); + } else { + window.history.back(); + } + }else{ + + if(hash==='/login'||hash==='/'){ + jsBri.closeApp(); + }else { + window.history.go(-1); + } + } + }; + window.showOrgIdAndOrgType = function(obj) { + window.sessionStorage.setItem('scene_regInfos', obj); + }; + } +}; diff --git a/src/utils/validator.js b/src/utils/validator.js new file mode 100644 index 0000000..97e1c7d --- /dev/null +++ b/src/utils/validator.js @@ -0,0 +1,222 @@ +/* + * @Author: 小明丶 + * @Date: 2020-05-07 17:52:20 + * @LastEditors: zxq + * @LastEditTime: 2022-03-30 09:33:26 + * @Description: + */ +/** + * TANGIMING 2018-3-9 + * 这是一个用于存放正则表达式和一些验证方法的插件 + * 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法 + */ +import IDValidator from './IDValidator'; + +export default { + // 金额格式化 + formatMoney(str = 0) { + str = str + ''; + let newStr = ''; + let count = 0; + if (str.indexOf('.') === -1) { + for (let i = str.length - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; + } + count++; + } + str = newStr + '.00'; // 自动补小数点后两位 + return str; + } else { + for (let i = str.indexOf('.') - 1; i >= 0; i--) { + if (count % 3 === 0 && count !== 0) { + newStr = str.charAt(i) + ',' + newStr; + } else { + newStr = str.charAt(i) + newStr; // 逐个字符相接起来 + } + count++; + } + str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3); + return str; + } + }, + // 身份证 中间用* 显示 + cardIDHide(cardid) { + if (cardid) { + return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2'); + } else { + return ''; + } + }, + //手机号,中间四位*显示 + formatPhone(phone) { + return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); + }, + // 电话号码格式 + checkPhone(phone) { + let reg = /^1(3|4|5|6|7|8|9)\d{9}$/ + //let reg = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; + return reg.test(phone); + }, + //座机/手机/400号码验证 + checkCompanyPhone(phone){ + let reg = /^([0-9]{3,4}-)?[0-9]{7,8}$|^1(3|4|5|6|7|8|9)\d{9}$|^\d{3,4}-\d{3,4}-\d{3,4}$/ + return reg.test(phone) + }, + checkEmail(email) { + // 验证邮箱格式 + let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/; + // let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/; + return reg.test(email); + }, + checkVerifyCode(code) { + // 验证验证码格式 + let reg = /^\d{6}$/; + return reg.test(code); + }, + checkDynamicCode(code) { + // 验证邀请码格式 + let reg = /^[A-Za-z0-9]{4}$/; + return reg.test(code); + }, + // password check + checkPassword(password) { + // 验证密码格式 + let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; + return reg.test(password); + }, + // name check + checkName(name) { + // 验证用户名格式 + let reg = /^[\u4E00-\u9FA5]{2,10}$/; + return reg.test(name); + }, + //校验真实姓名 + checkRealName(name) { + // 验证用户名格式 + let reg = /^[\u4E00-\u9FA5]{2,6}$/; + return reg.test(name); + }, + // 账户名称的正则表达式 + checkUsername(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/; + return reg.test(name); + }, + //身份证详细地址验证 + checkCardAddress(address) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{9,30}$/; + return reg.test(address); + }, + //详细地址验证 + checkAddress(address) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{9,30}$/; + return reg.test(address); + }, + // 统一验证 + checkCommonField(name) { + let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/; + return reg.test(name); + }, + // idCard check + checkIDCard(idCard) { + // 验证身份证格式 + return IDValidator.isValid(idCard); + }, + isIdcard(val) { + let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val); + return result; + }, + checkValEmpty(str) { + // 验证是否为空 + if ( + str === undefined || + str === null || + str.length <= 0 || + str === 'undefined' + ) { + return true; + } else { + return false; + } + }, + // 验证佣金输入金额 + checkCommission(commission) { + // 小于100且后面可以带4个小数点 + let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/; + //一亿以内,保留四位小数 + // /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/ + // 如果通过的话,那么判断小数点的前几位数字 + return reg.test(commission); + }, + // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写 + checkChannelNo(channelNo) { + let reg = /^[\w\d]{4,8}$/; + return reg.test(channelNo); + }, + //验证是否包含空格 + checkSpace(val) { + let reg = /^\s+$/; + if (reg.test(val)) { + return true; + } else { + return false; + } + }, + //将发送请求中的参数格式化,如果为空则转为null + formatReq(obj) { + for (let i in obj) { + let item = obj[i]; + if (item === null) continue; + if ( + item === undefined || + item === '' || + item === 'undefined' || + item.length <= 0 || + JSON.stringify(item) == '{}' + ) { + obj[i] = null; + } + } + return obj; + }, + // 只能输入数字与小数点正则判断 + checkIntegerAndDot(checkVal) { + let dotReg = /\./g; + let IntegerReg = /^[1-9]{1}\d{0,5}$/; + // 如果输入了多个点,直接不符合要求 + if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) { + return false; + // 输入了一个点 + } else if ( + checkVal.match(dotReg) && + checkVal.match(dotReg).length === 1 + ) { + // 开头与结尾都不能出现点,点的前面与后面必须是数字 + let strLen = checkVal.length; + if ( + checkVal.indexOf('.') === 0 || + checkVal.indexOf('.') === strLen - 1 + ) { + return false; + // 超过个数的限制的话 + } else { + return strLen <= 6; + } + // 没有小数点的话,那么就是全部数字进行匹配 + } else if (!checkVal.match(dotReg)) { + return IntegerReg.test(checkVal); + } + }, + //银行卡验证 + bankCard(idCard) { + let reg = /^([1-9]{1})(\d{14,30})$/; + return reg.test(idCard); + }, + //公司名称校验 + checkCompany(name){ + let reg = /^[\u4e00-\u9fa5a-zA-Z]{2,20}$/; + return reg.test(name); + } +}; diff --git a/src/utils/wechat.js b/src/utils/wechat.js new file mode 100644 index 0000000..f07446b --- /dev/null +++ b/src/utils/wechat.js @@ -0,0 +1,41 @@ +/* + * @Author: 小明丶 + * @Date: 2020-05-07 18:35:25 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-10-27 20:10:04 + * @Description: + */ + +/** + * 微信授权 + * @param appid 公众号的唯一标识 + * @param redirect_uri 授权后重定向的回调链接地址(登录后授权了最好返回到登录跳转的主页面), 请使用 urlEncode 对链接进行处理,用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。 + * @param scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) + * @param state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节 + */ + +// export function goWeChat(appid,redirect_uri){ +// // 拼接微信授权页面链接 +// var url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect` + +// // 判断用户是否已经授权 +// if(window.localStorage.edu_ins_client_openId == 'undefined' || !localStorage.edu_ins_client_openId){ +// window.location.href = url +// // 在回调页面去获取到授权返回的code,并且传递给后端 +// } +// } + export class GoWeChat { + constructor(appid,redirect_uri){ + this.appid = appid + this.redirect_uri = redirect_uri + } + gocontract(){ + // 拼接微信授权页面链接 + var url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.appid}&redirect_uri=${this.redirect_uri}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect` + // 判断用户是否已经授权 + if(window.localStorage.edu_ins_client_openId == 'undefined' || !localStorage.edu_ins_client_openId){ + window.location.href = url + // 在回调页面去获取到授权返回的code,并且传递给后端 + } + } + } diff --git a/src/views/bankCard/index.vue b/src/views/bankCard/index.vue new file mode 100644 index 0000000..7d19ffe --- /dev/null +++ b/src/views/bankCard/index.vue @@ -0,0 +1,264 @@ +<!-- + * @Author: your name + * @Date: 2021-10-28 17:26:45 + * @LastEditTime: 2021-11-12 11:20:06 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: \edu_ins_client\src\views\bankCard\index.vue +--> +<template> + <div class="bankCard_page"> + <v-navbar title="我的银行卡" back="/home/personal"></v-navbar> + <van-form ref='submitFrom' label-width='120px' input-align='right' error-message-align='right'> + <!-- <h-cell :disabled='disabled' readonly v-model="mation.goodsName" label="请填写银行名称"></h-cell> --> + <van-field + + v-model="dataFrom.bankName" + name="bankName" + readonly + clickable + label="银行名称" + placeholder="银行名称" + @click="showBankList" + :rules="[{ required: true, message: '请填写银行名称' }]" + /> + <van-field + :readonly='disabled' + v-model="dataFrom.bankCardNo" + type="number" + name="bankCardNo" + label="银行卡号" + placeholder="银行卡号" + :rules="[{ required: true, message: '请填写银行卡号' }]" + /> + <van-field + v-model="dataFrom.bankCardMblNo" + :readonly='disabled' + type="tel" + :maxlength="11" + name="bankCardMblNo" + label="银行预留手机号" + placeholder="银行预留手机号" + :rules="[{ required: true, message: '请填写银行预留手机号' },,{validator, message: '手机号格式有误'}]" + > + <template #button> + <van-button v-if='!disabled&&dataFrom.bankCardMblNo' :disabled='waitTime>0' size="small" @click='sendCode' type="primary">{{codeText}}</van-button> + </template> + </van-field> + <van-field + v-model="dataFrom.verCode" + :readonly='disabled' + v-if='!disabled' + name="verCode" + label="验证码" + placeholder="验证码" + :rules="[{ required: true, message: '请输入验证码'}]" + /> + <div style="margin: 16px;"> + <van-button v-if='disabled' round block type="info" @click='disabled=false'>换绑</van-button> + <van-button v-if='!disabled' round block @click='onSubmit' type="info">确认</van-button> + </div> + </van-form> + <van-popup v-model="showPicker" position="bottom" :style="{ height: '40%' }" > + <van-picker + show-toolbar + :columns="columns" + @confirm="onConfirm" + @cancel="onCancel" + :default-index="defaultIndex" + > + <template #title> + <form action="/"> + <van-search v-model="searchValue" @search='onSearch' @input='inputSearch' placeholder="输入银行名称"> + <!-- <template #action> + <div @click="onSearch">搜索</div> + </template> --> + </van-search> + </form> + </template> + </van-picker> + </van-popup> + </div> +</template> + +<script> +import Vue from 'vue'; +import { Form } from 'vant'; +import { Field,Button,Picker,Popup,Search,Dialog } from 'vant'; + +Vue.use(Form); +Vue.use(Field); +Vue.use(Button); +Vue.use(Picker); +Vue.use(Popup); +Vue.use(Search); +export default { + name: '', + components: {[Dialog.Component.name]: Dialog.Component,}, + data() { + return { + dataFrom:{}, + submitText:"换绑", + columns:[], + showPicker:false, + searchValue:'', + bankCradList:[], + defaultIndex:0, + disabled:true, + codeText:'发送验证码', + waitTime:0, + timer:null, + bankId:"", + isClickSend:false, + } + }, + methods:{ + validator(val) { + console.log(val) + return val.length==11; + }, + onSubmit(values) { + if(!this.isClickSend){ + this.$tool.toast('请先获取验证码'); + return false + } + this.$refs.submitFrom.validate().then(()=>{ + // if(!this.dataFrom.bankCardMblNo.length>11){ + // this.$tool.toast('手机号格式有误'); + // return false + // } + if(!this.disabled){ + let data ={...values,...this.dataFrom,bankId:this.bankId}; + this.$api.bindBankCard(data).then(({body})=>{ + Dialog.alert({ + title: '提示', + message: '实名认证成功', + }); + this.disabled =true; + clearInterval(this.timer); + this.codeText =`发送验证码`; + this.waitTime =0; + this.dataFrom.verCode =''; + }).catch((msg)=>{ + // Dialog.alert({ + // title: '失败提示', + // message: '绑卡信息有误,请确认信息', + // }); + }); + } + }).catch(()=>{ + //验证失败 + }) + }, + onConfirm(value){ + this.dataFrom.bankName =value.text; + this.dataFrom.bankCode =value.code; + this.searchValue = ''; + this.columns = this.bankCradList; + this.showPicker = false; + }, + onCancel(){ + this.showPicker = false; + this.searchValue = ''; + this.columns = this.bankCradList; + }, + showBankList(){ + if(this.disabled){ + return true; + } + sessionStorage.bankList = JSON.stringify(this.columns); + this.$router.push({ + path: "/order-handling/bank-list", + query:{isBackName:'backCard'} + }); + // this.showPicker = true; + // if(this.dataFrom.bankName){ + // this.columns.forEach((b,index)=>{ + // if(b.name==this.dataFrom.bankName){ + // this.defaultIndex =index; + // } + // }) + // } + }, + onSearch(){ + let arr =[]; + this.bankCradList.forEach(k=>{ + if(k.name.indexOf(this.searchValue)>-1){ + arr.push(k); + } + }); + this.columns = arr; + }, + inputSearch(){ + if(!this.searchValue){ + this.columns = this.bankCradList; + } + }, + sendCode(){ + let {bankCardMblNo,bankCardNo,bankCode} =this.dataFrom; + let data ={bankCardMblNo,bankCardNo,bankCode}; + let _this =this; + if(this.waitTime>0){ + this.codeText =`${_this.waitTime}秒后重发`; + clearInterval(this.timer); + }else{ + this.$api.bankVerCode(data).then(({body})=>{ + this.isClickSend =true; + this.bankId =body.bankId; + this.waitTime = 60; + this.timer = setInterval(() => { + this.waitTime--; + this.codeText =`${_this.waitTime}秒后重发` + if (this.waitTime <= 0) { + this.codeText =`发送验证码` + clearInterval(this.timer) + } + }, 1000); + }); + } + + } + }, + created(){ + this.$api.bankCardInfo().then(({body})=>{ + let {bankCode,bankCardNo,bankCardMblNo} =body; + let bankName ='请选择银行'; + this.columns = body.bankList.map(val=>{ + if(bankCode == val.code){ + bankName = val.name; + } + return { + text:val.name, + ...val + } + }); + this.bankCradList = this.columns; + this.dataFrom = {bankCode,bankCardNo,bankCardMblNo,bankName:bankName}; + let queryObj = this.$route.query; + if(queryObj.code){ + this.dataFrom.bankCode =queryObj.code; + this.dataFrom.bankName =queryObj.name; + this.disabled =false; + } + }); + } +} +</script> + +<style lang="less"> +.bankCard_page{ + .van-search{ + padding: 0; + width: 180px; + } + .van-search>.van-cell{ + padding: 0; + } + /deep/ .van-field__control:disabled{ + color: #999 !important; + opacity: 1 !important; + -webkit-text-fill-color:#999 !important; + -webkit-opacity:1 !important; + } +} +</style> diff --git a/src/views/home.vue b/src/views/home.vue new file mode 100644 index 0000000..5b0a582 --- /dev/null +++ b/src/views/home.vue @@ -0,0 +1,52 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-08 09:28:54 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-05-21 15:38:20 + * @Description: + --> +<template> + <div class="home-page"> + <router-view></router-view> + <van-tabbar v-model="active" active-color="#5194FE" inactive-color="#666666" route @change="onChange"> + <van-tabbar-item v-for="(item,index) in footerNav" :key="index" :to="item.to"> + <template #icon="props"> + <svg class="icon" aria-hidden="true" style="width:26px;height:26px;"> + <use v-if="props.active" :xlink:href="'#' + item.icon_h" /> + <use v-else :xlink:href="'#' + item.icon" /> + </svg> + </template> + <span>{{item.title}}</span> + </van-tabbar-item> + </van-tabbar> + </div> +</template> +<script> +import Vue from "vue"; +import { Tabbar, TabbarItem } from "vant"; +import { mapState } from "vuex"; +Vue.use(Tabbar); +Vue.use(TabbarItem); +export default { + data() { + return { + active: 0 + }; + }, + computed: { + ...mapState(['footerNav']), + }, + created() { + if (window.location.search) { + // 微信授权登录后返回此页面含有code及state值,将code值发到后端,以获取用户unionId关联电话 + } + }, + methods: { + onChange(){ + console.log(this.active) + } + } +}; +</script> +<style lang="less" scoped> +</style> \ No newline at end of file diff --git a/src/views/homeIndex/home-index.vue b/src/views/homeIndex/home-index.vue new file mode 100644 index 0000000..cbf5e9b --- /dev/null +++ b/src/views/homeIndex/home-index.vue @@ -0,0 +1,273 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-20 20:29:47 + * @LastEditors: zxq + * @LastEditTime: 2022-07-08 14:55:26 + * @Description: +--> +<template> + <div class="home-index-page"> + <div class="top-bg-box"> + <!-- <div class="sweep-box" @click="goOrderHandling"> + <div class="sweep-top"> + <i class="iconfont iconsaoyisao"></i> + </div> + <div class="sweep-bottom"> + <p>扫一扫</p> + </div> + </div> --> + <div class="btn-box"> + <button @click="goOrderHandling">办理分期</button> + </div> + <div class="text-box"> + <!-- <p>客服电话:028-86043722</p> --> + <p>联系邮箱:kefu@finlean.com</p> + </div> + </div> + <van-dialog v-model="show" title="错误提示"> + <div class="dialog-box"> + <!-- <p>由于系统问题,暂时无法申请订单,请稍候再试。</p> --> + <p>{{errText}}</p> + </div> + </van-dialog> + </div> +</template> +<script> +import Vue from 'vue'; +import { Dialog } from 'vant'; + +// 全局注册 +Vue.use(Dialog); +export default { + data() { + return { + show:false, + errText:'', + businessInfo: {}, //扫码获取商户信息 + str: "" //二维码获取的字符串 + }; + }, + created() { + this.getWXToken(); + + // 判断微信接口是否支持 + wx.checkJsApi({ + jsApiList: ["checkJsApi", "scanQRCode"], // 需要检测的JS接口列表 + success: function(res) {} + }); + + }, + methods: { + /** + * 获取当前账号订单进行步骤 + * + * NO_SCAN(0,"待扫码"),调用扫码 + * NO_ID(1,"待上传身份证"),跳转上传身份证页面 + * NO_FACE(2,"待人脸识别"),跳转第三方人脸识别 + * NO_USER_INFO(3,"待填写个人信息"),跳转个人信息填写页面 + * NO_CONT_INFO(4,"待签署合同"),跳转合同签署页面 + * NO_IMG_INFO(5,"待上传影像资料"),跳转图片上传页面 + * AUDIT(6,"待审核");跳转审核结果页面 + * **/ + orderCreateStep() { + this.$api.orderCreateStep().then(res => { + localStorage.setItem('projId',res.body.projId); + // res.body.createStep = 4; + if (res.body.createStep == 0) { + //调用摄像头 + this.getCamera(); + } + if (res.body.createStep == 1) { + this.$router.push("/order-handling/upload-IDcard"); + } + if (res.body.createStep == 2) { + //重新人脸识别,先去协议页面; + this.$router.push({ + path: "/order-handling/face-recognition", + query: {isFaceBack:'1'} + }); + // let str = location.host + // this.$api + // .getFaceUrl({ + // callbackUrl: + // `https://${str}/aic_cus/#/order-handling/face-recognition` + // }) + // .then(res => { + // window.location.href = res.body.faceUrl; + // }); + //this.$router.push('/order-handling/upload-IDcard') + } + if (res.body.createStep == 3) { + this.$router.push("/order-handling/upload-userInfo"); + } + if (res.body.createStep == 4) { + window.sessionStorage.backUrl = '/home/index' + this.$router.push("/order-handling/contract-signing"); + } + if (res.body.createStep == 5) { + this.$router.push(res.body.projId=='100000'?"/order-handling/approval-results":"/order-handling/image-upload"); + } + if (res.body.createStep == 6) { + this.$router.push("/order-handling/approval-results"); + } + }).catch(err=>{ + this.errText = err.errMsg + this.show = true + }) + }, + // 点击获取当前账号在第几步直接跳转到对应步骤 + goOrderHandling() { + this.orderCreateStep(); + }, + // 异步准备微信环境 + checkIsReady() { + return new Promise((resolve, reject) => { + wx.ready(() => resolve()); + wx.error(err => reject(console.log(res + "wx.error"))); + }); + }, + // 调取微信jssdk,需要获取token + getWXToken() { + //let url = window.location.origin + window.location.pathname; + let url = location.href.split('#')[0] + this.$api.wechatgetSign({ url }).then( + res => { + // 第二步骤 只需要首页地址分享 ,需要在每次变化时调用 + wx.config({ + debug: false, // 开启调试模式 + appId: res.body.appId, + timestamp: res.body.timestamp, // 必填,生成签名的时间戳 + nonceStr: res.body.nonceStr, // 必填,生成签名的随机串 + signature: res.body.signature, // 必填,签名,见附录1 + jsApiList: ["checkJsApi", "scanQRCode"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }); + }, + error => { + console.log(error); + } + ); + }, + //调用摄像头扫码 + getCamera() { + let _this = this; + this.checkIsReady().then(() => { + if (window.android && window.android.fetchQrCode) { + window.android.fetchQrCode(); + } else { + wx.scanQRCode({ + needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, + scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有 + success: function(res) { + var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 + console.log(result); + _this.str = res.resultStr; + _this.$router.push({ + path: "/order-handling", + query: { + url: _this.str + } + }); + } + }); + } + }); + } + } +}; +</script> +<style lang="less" scoped> +.home-index-page { + & { + background: #fff; + height: 100vh; + } + .top-bg-box{ + &{ + width: 100%; + height: 100vh; + background: url('../../../static/img/homeBack.png'); + background-size: cover; + position: relative; + } + .btn-box{ + position: absolute; + text-align: center; + bottom: 147px; + width: 100%; + button{ + width:210px; + height:40px; + background:rgba(255,255,255,1); + box-shadow:0px 0px 10px 0px rgba(23,154,198,0.26), 0px -2px 5px 0px rgba(46,150,238,0.3) inset; + border-radius:20px; + outline: none; + border: 0; + color: #5194FE; + } + } + .text-box{ + text-align: center; + width: 100%; + position: absolute; + bottom: 66px; + p{ + font-size:12px; + font-family:PingFang SC; + font-weight:500; + color:rgba(255,255,255,1); + } + p:nth-of-type(1){ + margin-bottom: 6px; + } + } + } + // .top-bg-box { + // position: relative; + // width: 100vw; + // height: 130px; + // background-image: url("../../../static/img/bg.png"); + // background-size: cover; + // .sweep-box { + // width: 120px; + // height: 90px; + // background: rgba(255, 255, 255, 1); + // box-shadow: 0px 0px 15px 0px rgba(26, 100, 225, 0.12); + // border-radius: 8px; + // position: absolute; + // left: 50%; + // top: 78px; + // transform: translateX(-50%); + // text-align: center; + // .sweep-top { + // height: 52px; + // color: #5e9cff; + // line-height: 52px; + // i { + // font-size: 35px; + // } + // } + // .sweep-bottom { + // height: 38px; + // line-height: 38px; + // p { + // font-size: 16px; + // font-family: PingFang SC; + // font-weight: 500; + // color: rgba(51, 51, 51, 1); + // } + // } + // } + // } + .dialog-box{ + height: 100px; + box-sizing: border-box; + padding: 25px 25px ; + text-align: left; + p{ + line-height: 20px; + color: #666666; + font-size: 14px; + } + } +} +</style> diff --git a/src/views/order-handling/approval-results.vue b/src/views/order-handling/approval-results.vue new file mode 100644 index 0000000..8b92052 --- /dev/null +++ b/src/views/order-handling/approval-results.vue @@ -0,0 +1,326 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 16:38:26 + * @LastEditors: zxq + * @LastEditTime: 2022-07-13 14:14:09 + * @Description: 审批结果页面 +--> +<template> + <div class="approval-results-page"> + <v-navbar title="订单申请"></v-navbar> + <div class="steps-box"> + <div class="steps" :style="{ width: projId == 100001 ? '70%' : '50%' }"> + <p></p> + <div class="step-3">3</div> + <div class="step-4">4</div> + <div :style="{ left: '170px' }" :class="{ 'step-5': projId == 100001, 'step-6': projId == 100000 }">5</div> + <div class="step-6" v-if="projId == 100001">6</div> + </div> + <div class="zanwei"></div> + </div> + <!-- 审核结果 --> + <div class="mation-box" v-if="state == 1"> + <p>审核中</p> + <p v-if="stepId==100010002">正在审核您的资料,请耐心等待</p> + <p v-else>正在进行大数据评估,请耐心等待</p> + <img src="../../../static/img/shz.png" /> + </div> + <div class="mation-box" v-if="state == 2"> + <p>审核未通过</p> + <p>您的资料未通过审核</p> + <img src="../../../static/img/shsb.png" /> + </div> + <div class="mation-box" v-if="state == 3"> + <p>审核通过</p> + <p>恭喜您,申请已通过!</p> + <img src="../../../static/img/shcg.png" /> + </div> + <div class="mation-box" v-if="state == 4"> + <p>资料重传</p> + <p>图片未通过审核,请重新上传</p> + <img src="../../../static/img/zlcc.png" /> + </div> + <div class="mation-box" v-if="state == 5"> + <p>影像资料上传</p> + <p>还未上传影像资料</p> + <img src="../../../static/img/zlcc.png" /> + </div> + <template v-if="state == 1"> + <div class="text-box" style="margin-top:20px"> + <p v-if="stepId==100010002">提示:审核时间平均为15分钟,但在订单较多时,审核时间可能会被延长,我们会尽快为您完成审核,感谢您的理解!(退出页面不影响继续审核)</p> + <p v-else>提示:评估时间平均为3分钟,您可离开页面后再返回查看评估结果。若您评估结果为通过的,您可能需要根据页面提示进行下一步操作,感谢您的支持</p> + </div> + <div v-if="stepId==100010002" class="text-box"> + <p>人工审核时间:09:00-20:00,非人工审核时间提交的订单,我们会在次日上班后第一时间处理。</p> + </div> + </template> + <template v-if="state == 2"> + <div class="text-box" style="margin-top:20px"> + <p>提示:根据目前您提供的资料和信息,我们暂时不能为您提供服务,对此我们深表遗憾,希望您能谅解,期待再次合作!</p> + </div> + </template> + <!-- <template v-if="state == 3"> + <div class="our-code-box" v-if="code"> + <p>您的分期交易验证码为</p> + <p> + <span>【</span> + <span class="code">{{code}}</span> + <span>】</span> + </p> + </div> + <div v-else class="our-code-box"> + <p>订单已核销</p> + </div> + <div class="text-box" style="margin-top:20px"> + <p>温馨提示:如您确认本次业务为您本人操作且同意按期还款,请将验证码告诉培训机构工作人员!</p> + </div> + </template> --> + <template v-if="state == 4"> + <div class="text-box" style="margin-top:20px"> + <p>提示:{{ text }}</p> + </div> + </template> + + <div class="btn-box"> + <button @click="goPage">{{ btnText }}</button> + </div> + </div> +</template> +<script> +export default { + data() { + return { + state: "", + code: "", + text: "", + timer:null, + stepId:"", + stepName:"" + }; + }, + computed: { + btnText() { + console.log(this.state+'computed') + if (this.state == 1) { + return "刷新"; + } + if (this.state == 2) { + return "返回首页"; + } + if (this.state == 3) { + return "返回首页"; + } + if (this.state == 4||this.state == 5) { + return "前往上传"; + } + }, + projId() { + return localStorage.getItem("projId"); + }, + }, + watch:{ + state(val){ + if(val==1){ + this.timer = setInterval(()=>{ + this.initPage(); + },5000) + }else{ + clearInterval(this.timer); + } + } + }, + created() { + this.initPage(); + }, + methods: { + //跳转 + goPage() { + if (this.state == 1) { + window.location.reload(true); //强制从服务器重新加载当前页面 + } + if (this.state == 2) { + this.$router.push("/home/index"); + } + if (this.state == 3) { + this.$router.push("/home/index"); + } + if (this.state == 4||this.state==5) { + //跳回资料上传页面 + this.$router.push("/order-handling/image-upload"); + } + }, + initPage(){ + this.$api.initAuditInfo().then(({body}) => { + this.state = body.auditStatus; + this.code = body.pickCode; + this.text = body.auditMsg; + this.stepId = body.stepId;//审核步骤 100010001-机审,100010002-人工审核 + this.stepName = body.stepName; + }); + } + }, + destroyed(){ + clearInterval(this.timer); + } +}; +</script> +<style lang="less" scoped> +.approval-results-page { + & { + min-height: 100vh; + } + .steps-box { + .steps { + width: 70%; + height: 65px; + position: relative; + + p { + border-bottom: 1px dashed #b3b3b3; + height: 32px; + } + .step-3 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 18px; + top: 19px; + } + .step-4 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(113, 123, 133, 1); + border: 0; + border-radius: 50%; + color: #fff; + position: absolute; + left: 90px; + top: 19px; + } + .step-5 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + color: #fff; + background: rgba(113, 123, 133, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 170px; + top: 19px; + } + .step-6 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(81, 148, 254, 1); + border: 1px solid rgba(113, 123, 133, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + position: absolute; + left: 240px; + top: 19px; + color: #fff; + } + .step-6-width { + left: 170px; + } + } + } + .mation-box { + & { + width: 343px; + height: 79px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + box-sizing: border-box; + padding: 16px; + position: relative; + margin: auto; + } + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + margin-bottom: 10px; + } + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + img { + width: 48px; + height: 45px; + position: absolute; + right: 24px; + top: 12px; + } + } + .our-code-box { + & { + text-align: center; + margin-top: 36px; + } + p:nth-of-type(1) { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + p:nth-of-type(2) { + span:nth-of-type(1), + span:nth-of-type(3) { + color: #333333; + font-size: 14px; + } + .code { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: #5194fe; + } + } + } + .text-box { + width: 343px; + margin: auto; + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + line-height: 17px; + p { + word-wrap: break-word; + word-break: break-all; + } + } + .btn-box { + & { + text-align: center; + margin-top: 56px; + } + button { + width: 320px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + border: 0; + color: #fff; + } + } +} +</style> diff --git a/src/views/order-handling/bank-list.vue b/src/views/order-handling/bank-list.vue new file mode 100644 index 0000000..487cb5e --- /dev/null +++ b/src/views/order-handling/bank-list.vue @@ -0,0 +1,448 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 17:48:41 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2021-11-12 09:23:40 + * @Description: 银行选择列表 +--> +<template> + <div class="bank-list-page"> + <!-- <v-navbar title="选择银行"></v-navbar> --> + <van-nav-bar title="选择银行" @click-left="gofront"> + <template #left> + <i class="iconfont iconzuojiantou" style="font-size:18px"></i> + </template> + </van-nav-bar> + <van-search v-model="value" shape="round" background="#F5F5F7" placeholder="搜索" @input="onInput" /> + <div style="height:30px;line-height:30px;padding-left:16px;box-sizing:border-box;" v-if="!value"> + <p>热门银行</p> + </div> + <!-- 热门银行 --> + <div class="rm-bank-box" v-if="!value"> + <div class="bank-box" v-for="(item,i) in bankList" :key="i" @click="getBankCode(item)"> + <span>{{item.name}}</span> + </div> + </div> + <div class="search-list" v-if="value"> + <div class="bank-box" v-for="(item,i) in searchBankList" :key="i" :id="item.first" :class="item.first" @click="getBankCode(item)"> + <span>{{item.name}}</span> + </div> + </div> + <!-- <div style="height:30px;line-height:30px;padding-left:16px;box-sizing:border-box;" v-if="!value"> + <p>全部银行</p> + </div> + <div class="all-bank-box" v-if="!value"> + <div class="bank-box" v-for="(item,i) in otherBankList" :key="i" :id="item.first" :class="item.first" @click="getBankCode(item)"> + <span>{{item.name}}</span> + </div> + </div> + + <div class="letter-list"> + <p v-for="(item,e) in letterList" :key="e" @click="sortBank(item)">{{item}}</p> + </div> --> + </div> +</template> +<script> +import Vue from "vue"; +import { Search } from "vant"; +import { NavBar } from 'vant'; + +Vue.use(NavBar); +Vue.use(Search); +export default { + data() { + return { + value: "", + letterList: [ + "热", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z" + ], + hotBankList:[ + { + name:'北京银行', + code:'4031000', + first:'B' + }, + { + name:'工商银行', + code:'0102', + first:'G' + }, + { + name:'光大银行', + code:'0303', + first:'G' + }, + { + name:'广发银行', + code:'0306', + first:'G' + }, + { + name:'华夏银行', + code:'0304', + first:'H' + }, + { + name:'建设银行', + code:'0105', + first:'J' + }, + { + name:'交通银行', + code:'0301', + first:'J' + }, + { + name:'民生银行', + code:'0305', + first:'M' + }, + { + name:'农业银行', + code:'0103', + first:'N' + }, + { + name:'平安银行', + code:'0307', + first:'P' + }, + { + name:'浦发银行', + code:'0310', + first:'P' + }, + { + name:'上海银行', + code:'4012900', + first:'S' + }, + { + name:'兴业银行', + code:'0309', + first:'X' + }, + { + name:'邮政储蓄银行', + code:'0403', + first:'Y' + }, + { + name:'中国银行', + code:'0104', + first:'Z' + }, + { + name:'招商银行', + code:'0308', + first:'Z' + }, + { + name:'中信银行', + code:'0302', + first:'Z' + }, + ], + otherBankList:[ + { + name:'北京农商银行', + code:'14189200', + first:'B' + }, + { + name:'重庆农村商业银行', + code:'14139200', + first:'C' + }, + { + name:'重庆银行', + code: '04419200', + first:'C' + }, + { + name:'长沙银行', + code:'04619200', + first:'C' + }, + { + name:'成都农商银行', + code:'14229200', + first:'C' + }, + { + name:'成都银行', + code:'04299200', + first:'C' + }, + { + name:'广东省农村信用社联合社', + code:'14509200', + first:'G' + }, + { + name:'广州农村商业银行', + code:'14059200', + first:'G' + }, + { + name:'广州银行', + code:'04139200', + first:'G' + }, + { + name:'贵州省农村信用社联合社', + code:'14369200', + first:'G' + }, + { + name:'贵州银行', + code:'05849200', + first:'G' + }, + { + name:'贵阳银行', + code:'04439200', + first:'G' + }, + { + name:'广西壮族自治区农村信用社联合社', + code:'14439200', + first:'G' + }, + { + name:'湖北省农村信用社联合社', + code:'14109200', + first:'H' + }, + { + name:'杭州银行', + code:'04239200', + first:'H' + }, + { + name:'海南省农村信用社联合社', + code:'14489200', + first:'H' + }, + { + name:'海南银行', + code:'05889200', + first:'H' + }, + { + name:'河北省农村信用社联合社', + code:'14419200', + first:'H' + }, + { + name:'河北银行', + code:'04229200', + first:'H' + }, + { + name:'江苏银行', + code:'05089200', + first:'J' + }, + { + name:'江西银行', + code:'04489200', + first:'J' + }, + { + name:'南京银行', + code:'04249200', + first:'N' + }, + { + name:'宁波银行', + code:'04089200', + first:'N' + }, + { + name:'上海农村商业银行', + code:'14019200', + first:'S' + }, + { + name:'陕西省农村信用社联合社', + code:'14429200', + first:'S' + }, + { + name:'山西省农村信用社', + code:'14559200', + first:'S' + }, + { + name:'深圳农村商业银行', + code:'4025840', + first:'S' + }, + { + name:'天津银行', + code:'04349200', + first:'T' + }, + { + name:'温州银行', + code:'04129200', + first:'W' + }, + { + name:'厦门银行', + code:'04029200', + first:'X' + }, + { + name:'西安银行', + code:'04449200', + first:'X' + }, + { + name:'云南省农村信用社联合社', + code:'14099200', + first:'Y' + }, + { + name:'浙江民泰商业银行', + code:'05259200', + first:'Z' + }, + { + name:'郑州银行', + code:'04359200', + first:'Z' + }, + ], + searchBankList:[], + + }; + }, + computed:{ + bankList(){ + return JSON.parse(sessionStorage.bankList) + }, + }, + methods:{ + // 模糊查询 + onInput(){ + this.searchBankList = [] + this.bankList.forEach(e=>{ + if(e.name.indexOf(this.value) > -1 && this.value){ + this.searchBankList.push(e) + } + }) + // this.otherBankList.forEach(e=>{ + // if(e.name.indexOf(this.value) > -1 && this.value){ + // this.searchBankList.push(e) + // } + // }) + }, + getBankCode(item){ + let isBackName =this.$route.query.isBackName, url = ''; + if(isBackName){ + url = '/bankCard/index'; + }else{ + url = '/order-handling/contract-signing'; + } + this.$router.push({ + path:url, + query:{ + code:item.code, + name:item.name + } + }) + }, + // 点击字母排序 + sortBank(item){ + location.hash = '#' + item + }, + // 返回合同签署页面 + gofront(){ + let isBackName =this.$route.query.isBackName; + if(isBackName){ + this.$router.push('/bankCard/index'); + }else{ + this.$router.push('/order-handling/contract-signing'); + } + + } + } +}; +</script> +<style lang="less" scoped> +.bank-list-page { + & { + min-height: 100vh; + background: #edf0f7; + position: relative; + } + .letter-list { + position: fixed; + width: 16px; + height: 80vh; + right: 5px; + top: 110px; + p { + font-size: 12px; + margin-bottom: 5px; + color: #157efb; + } + } + .rm-bank-box { + & { + background: #fff; + box-sizing: border-box; + padding: 0 16px ; + } + .bank-box { + height: 44px; + line-height: 44px; + border-bottom:1px solid #EEEEEE; + } + } + .all-bank-box,.search-list{ + & { + background: #fff; + box-sizing: border-box; + padding: 0 16px ; + } + .bank-box { + height: 44px; + line-height: 44px; + border-bottom:1px solid #EEEEEE; + } + } + /deep/.van-search__content--round { + border-radius: 0.34rem; + background: #fff; + } +} +</style> \ No newline at end of file diff --git a/src/views/order-handling/contract-signing.vue b/src/views/order-handling/contract-signing.vue new file mode 100644 index 0000000..d3a257a --- /dev/null +++ b/src/views/order-handling/contract-signing.vue @@ -0,0 +1,659 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 11:14:44 + * @LastEditors: zxq + * @LastEditTime: 2022-06-16 10:32:23 + * @Description: 合同签署页面 +--> +<template> + <div class="contract-signing-page"> + <v-navbar title="订单申请" :back="backUrl"></v-navbar> + <div class="steps-box"> + <div class="steps"> + <p class="line"></p> + <div class="step-2">2</div> + <div class="step-3">3</div> + <div class="step-4">4</div> + <div class="step-5">5</div> + <!-- <div class="step-6">6</div> --> + </div> + </div> + <div class="mation-box"> + <p>合同签署</p> + <p>请确保资料填写准确,并仔细阅读合同文件,以便顺利签署</p> + </div> + <div class="code-info-box"> + <h-cell v-model="cardInfo.bankName" placeholder="请选择" isLink readonly isMust label="开户银行名称" @click.native="goBankPage"></h-cell> + <h-cell v-model="cardInfo.bankCardNo" isMust placeholder="请输入银行卡号" label="银行卡号" max="19"></h-cell> + <h-cell v-model="cardInfo.bankCardMblNo" isMust placeholder="请输入银行预留手机号" label="银行预留手机号" max="11"></h-cell> + <van-field v-model="verCode" center required clearable label="短信验证码" maxlength="6" placeholder="请输入短信验证码"> + <template #button> + <van-button size="small" plain @click="sendCode" maxlength="6" :disabled="btnDis" type="default">{{btnText}}</van-button> + </template> + </van-field> + <!-- <h-cell v-model="verCode" isMust placeholder="请输入验证码" label="短信验证码"> + <template slot="v-cell-right"> + <div class="code-btn"> + <input type="text" maxlength="6" v-model="verCode" /> + <button + @click="sendCode" + :disabled="btnDis" + :style="btnDis?'color:#E6E6E6':'color:#62A0FF'" + ></button> + </div> + </template> + </h-cell> --> + </div> + <div class="xieyi-box"> + <div class="ridio-box"> + <van-checkbox v-model="checked" icon-size="13px">我已仔细阅读并同意签署</van-checkbox> + </div> + <div class="text-box"> + <p> + <span @click="goAgr(1)" v-if="cardInfo.contractList.indexOf(1) > -1">《保理付款服务合同》</span> + <span @click="goAgr(2)" v-if="cardInfo.contractList.indexOf(2) > -1">《代扣委托书》</span> + <span @click="goAgr(3)" v-if="cardInfo.contractList.indexOf(3) > -1">《信息授权函》</span> + <span @click="goAgr(5)" v-if="cardInfo.contractList.indexOf(5) > -1">《个人征信查询报送授权书》</span> + <span @click="goAgr(6)" v-if="cardInfo.contractList.indexOf(6) > -1">《委托担保合同》</span> + <span @click="goAgr(7)" v-if="cardInfo.contractList.indexOf(7) > -1">《融资担保服务申请书》</span> + <!-- <span @click="goAgr(4)">《重要信息告知书》</span> --> + <span @click="getBankContract" v-show="cardInfo.bankCode!='BCOM'&&cardInfo.bankCode!='CIB'&&cardInfo.bankCode">《{{bankContract}}》</span> + </p> + </div> + </div> + <div class="btn-box"> + <van-button @click="gonext" :loading="btnLoading" :disabled="btnLoading" type="info" loading-text="加载中..." v-show="btnDisable">提交申请</van-button> + </div> + <van-dialog v-model="show" title="温馨提示" show-cancel-button @cancel="onCancel"> + <div class="dialog-text-box"> + <p>{{cardInfo.noticeMsg}}</p> + </div> + </van-dialog> + <van-dialog v-model="showErr" title="提示"> + <div class="dialog-text-box"> + <p>{{errMessage}}</p> + </div> + </van-dialog> + <van-image-preview v-model="showPdf" :images="images" @change="onChange" closeable="true" :loop="false" showIndicators="true"> + <template v-slot:index>第{{ index+1 }}页</template> + </van-image-preview> + </div> +</template> +<script> +import Vue from "vue"; +import { Checkbox, CheckboxGroup } from "vant"; +import { Dialog } from "vant"; +import { ImagePreview } from 'vant'; +import { Field, Button } from 'vant'; +// 全局注册 +Vue.use(ImagePreview); +Vue.use(Dialog); +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +Vue.use(Field); +Vue.use(Button); +export default { + data() { + return { + index: 0,//合同当前查看页 + bankContract: '',//银行协议名称 + backUrl: "", + checked: false, + show: false, + showErr: false, + showPdf: false, + images: [],//合同图片列表 + cardInfo: { + bankCardMblNo: '', + bankCardNo: '', + bankCode: '', + bankList: [], + bankName: '', + noticeMsg: '', + contractList:[] + }, //银行相关信息 + bankId: '', + verCode: "", //验证码 + btnText: "获取验证码", + btnDis: false, + errMessage: "", + btnDisable: true, + btnLoading:false + }; + }, + created() { + //获取顶部返回地址 首页 或者是上一页 + this.backUrl = window.sessionStorage.backUrl; + //判断是否有存储在本地的签约值 + if (sessionStorage.sigMation) { + //有值表示跳往查看了合同 + this.cardInfo = JSON.parse(sessionStorage.sigMation); + this.bankId = sessionStorage.bankId + this.verCode = sessionStorage.verCodeContract + //第一次获取验证码时间 如果跳转合同页时时间任然大于零,取存储时间继续读秒 + if (sessionStorage.wait > 0) { + this.getSecond(Number(sessionStorage.wait)) + } + //本地有存储签约值时,选择银行卡回跳附值 + if (this.$route.query.name) { + this.show = false; + this.cardInfo.bankName = this.$route.query.name; + this.cardInfo.bankCode = this.$route.query.code; + + } + this.getBankContractName() + } + else { + // 没有本地存储就不是合同页回跳,初始化请求,判断弹窗 + this.$api.initContInfo().then(res => { + this.cardInfo = res.body; + + if (this.$route.query.name) { + this.show = false; + this.cardInfo.bankName = this.$route.query.name; + this.cardInfo.bankCode = this.$route.query.code; + } + else if (this.$route.query.whichPage) { + this.show = false; + } else { + res.body.bankList.forEach(e => { + if (e.code == this.cardInfo.bankCode) { + this.cardInfo.bankName = e.name; + } + }); + this.show = true; + } + this.getBankContractName() + }); + } + }, + + beforeRouteLeave(to, from, next) { + // 跳往指定页面清空信息 + if ( + to.path == "/home/index" || + to.path == "/order-handling/upload-userInfo" || + to.path == "/order-handling/bank-list" || + to.path == "/order-handling/image-upload" + ) { + sessionStorage.sigMation = ""; + } + next(); + }, + methods: { + onChange(index) { + this.index = index; + }, + //协议页面 + goAgr(which) { + + // 根据点击请求获取 合同图片列表 + this.$api.getContInfo({ + contType: which + }).then(res => { + this.images = res.body.contUrls + this.showPdf = true + }) + }, + // 获取银行协议名称 + getBankContractName() { + + if (this.cardInfo.bankCode == 'ICBC') { + this.bankContract = '中国工商银行快捷支付业务服务协议' + } + if (this.cardInfo.bankCode == 'ABC') { + this.bankContract = '农业银行快捷支付业务协议' + } + if (this.cardInfo.bankCode == 'CCB') { + this.bankContract = '中国建设银行总对总快捷客户授权协议' + } + if (this.cardInfo.bankCode == 'BOC') { + this.bankContract = '中国银行股份有限公司借记卡快捷支付服务协议' + } + if (this.cardInfo.bankCode == 'CITIC') { + this.bankContract = '中信银行借记卡快捷支付线上服务协议' + } + if (this.cardInfo.bankCode == 'CEB') { + this.bankContract = '中国光大银行客户信息验证授权协议' + } + if (this.cardInfo.bankCode == 'PAB') { + this.bankContract = '平安银行快捷支付业务服务协议' + } + if (this.cardInfo.bankCode == 'PSBC') { + this.bankContract = '中国邮政储蓄银行借记卡快捷支付业务线上服务协议' + } + if (this.cardInfo.bankCode == 'SHB') { + this.bankContract = '上海银行快捷支付业务线上服务协议' + } + if (this.cardInfo.bankCode == 'SPDB') { + this.bankContract = '浦发银行快捷支付协议' + } + if (this.cardInfo.bankCode == 'CMBC') { + this.bankContract = '中国民生银行快捷支付业务用户协议' + } + if (this.cardInfo.bankCode == 'CMB') { + this.bankContract = '招商银行快捷支付业务线上用户服务协议' + } + if (this.cardInfo.bankCode == 'GDB') { + this.bankContract = '广发银行—宝付快捷支付业务线上服务协议' + } + if (this.cardInfo.bankCode == '') { + this.bankContract = '' + } + }, + // 获取银行协议 + getBankContract() { + sessionStorage.sigMation = JSON.stringify(this.cardInfo); + sessionStorage.bankId = this.bankId + sessionStorage.verCodeContract = this.verCode + let agrUrl = '' + let title = '服务协议' + if (this.cardInfo.bankCode == 'ICBC') { + agrUrl = './static/bankPdf/ICBC.pdf' + } + if (this.cardInfo.bankCode == 'ABC') { + agrUrl = './static/bankPdf/ABC.pdf' + } + if (this.cardInfo.bankCode == 'CCB') { + agrUrl = './static/bankPdf/CCB.pdf' + } + if (this.cardInfo.bankCode == 'BOC') { + agrUrl = './static/bankPdf/BOC.pdf' + } + if (this.cardInfo.bankCode == 'CITIC') { + agrUrl = './static/bankPdf/CITIC.pdf' + } + if (this.cardInfo.bankCode == 'CEB') { + agrUrl = './static/bankPdf/CEB.pdf' + } + if (this.cardInfo.bankCode == 'PAB') { + agrUrl = './static/bankPdf/PAB.pdf' + } + if (this.cardInfo.bankCode == 'PSBC') { + agrUrl = './static/bankPdf/PSBC.pdf' + } + if (this.cardInfo.bankCode == 'SHB') { + agrUrl = './static/bankPdf/SHB.pdf' + } + if (this.cardInfo.bankCode == 'SPDB') { + agrUrl = './static/bankPdf/SPDB.pdf' + } + if (this.cardInfo.bankCode == 'CMBC') { + agrUrl = './static/bankPdf/CMBC.pdf' + } + if (this.cardInfo.bankCode == 'CMB') { + agrUrl = './static/bankPdf/CMB.pdf' + } + if (this.cardInfo.bankCode == 'GDB') { + agrUrl = './static/bankPdf/GDB.pdf' + } + this.$router.push({ + path: '/agreement', + query: { + tit: title, + agrUrl: agrUrl + } + }) + }, + //跳转银行卡选择页面 + goBankPage() { + sessionStorage.bankList = JSON.stringify(this.cardInfo.bankList); + this.$router.push({ + path: "/order-handling/bank-list" + }); + }, + //下一步 + gonext() { + let v = this.$tool; + if (v.checkValEmpty(this.cardInfo.bankName)) { + v.toast("请选择开户银行名称"); + return; + } + if (v.checkValEmpty(this.cardInfo.bankCardNo)) { + v.toast("请输入银行卡号"); + return; + } + if (!v.bankCard(this.cardInfo.bankCardNo)) { + v.toast("请输入正确的银行卡号"); + return; + } + if (v.checkValEmpty(this.cardInfo.bankCardMblNo)) { + v.toast("请输入预留手机号"); + return; + } + if (!v.checkPhone(this.cardInfo.bankCardMblNo)) { + v.toast("请输入正确的手机号"); + return; + } + if (v.checkValEmpty(this.bankId)) { + v.toast("请先获取验证码"); + return; + } + if (v.checkValEmpty(this.verCode)) { + v.toast("请输入验证码"); + return; + } + if (!this.checked) { + v.toast("请在阅读并确认协议后勾选用户协议"); + return; + } + let projId = localStorage.getItem('projId'); + this.btnLoading = true; + this.$api.saveContInfo({ ...this.cardInfo, verCode: this.verCode, bankId: this.bankId }).then(res => { + this.btnLoading = false; + sessionStorage.sigMation = ""; + if (projId == 100000) { + // F0订单跳转申请结果 + this.$router.push({ path: '/order-handling/approval-results'}); + } else { + // F1跳转 + if(res.body.isPass==1){ + // 1审核通过 + this.$router.push({ path: "/order-handling/image-upload" }); + }else{ + this.$router.push({ path: '/order-handling/approval-results'}); + } + } + }).catch(err => { + this.errMessage = err; + this.showErr = true; + this.btnLoading = false; + }); + }, + //弹窗取消 + onCancel() { + this.$router.push(window.sessionStorage.backUrl); + }, + //获取验证码 + sendCode() { + let v = this.$tool; + if (v.checkValEmpty(this.cardInfo.bankName)) { + v.toast("请选择开户行"); + return; + } + if (v.checkValEmpty(this.cardInfo.bankCardNo)) { + v.toast("请输入银行卡号"); + return; + } + if (!v.bankCard(this.cardInfo.bankCardNo)) { + v.toast("请输入正确的银行卡号"); + return; + } + if (v.checkValEmpty(this.cardInfo.bankCardMblNo)) { + v.toast("请输入预留手机号"); + return; + } + if (!v.checkPhone(this.cardInfo.bankCardMblNo)) { + v.toast("请输入正确的手机号"); + return; + } + + this.$api + .bankVerCode({ + bankCardMblNo: this.cardInfo.bankCardMblNo, + bankCardNo: this.cardInfo.bankCardNo, + bankCode: this.cardInfo.bankCode, + }) + .then(res => { + this.getSecond(60); + this.bankId = res.body.bankId; + }) + .catch(err => { + let str = err.errMsg.split("秒")[0]; + let miao = str.split("请")[1]; + if (miao) { + this.getSecond(Number(miao)); + //this.btnDisable = false; + } + }); + }, + //发送验证码现在函数 + getSecond(wait) { + let _this = this; + let _wait = wait; + if (wait == 0) { + this.btnText = "获取验证码"; + wait = _wait; + this.btnDis = false; + } else { + this.btnDis = true; + this.btnText = "验证码(" + wait + "s)"; + wait--; + sessionStorage.wait = wait + setTimeout(function () { + _this.getSecond(wait); + }, 1000); + } + } + } +}; +</script> +<style lang="less" scoped> +.contract-signing-page { + & { + min-height: 100vh; + } + .van-cell { + padding: 10px 8px; + } + .van-cell--required::before { + left: 2px; + } + .steps-box { + & { + } + .steps { + width: 100%; + height: 65px; + position: relative; + box-sizing: border-box; + display: flex; + display: -webkit-flex; + justify-content: space-around; + -webkit-justify-content: space-around; + align-items: center; + -webkit-align-items: center; + + .line { + position: absolute; + right: 10%; + width: 90%; + border-bottom: 1px dashed #b3b3b3; + //height: 32px; + } + .step-2 { + z-index: 10; + text-align: center; + line-height: 30px; + + color: #fff; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // left: 18px; + // top: 19px; + } + .step-3 { + z-index: 10; + text-align: center; + line-height: 30px; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border: 0; + border-radius: 50%; + color: #fff; + // position: absolute; + // left: 90px; + // top: 19px; + } + .step-4 { + z-index: 10; + text-align: center; + line-height: 30px; + width: 30px; + height: 30px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + // position: absolute; + // left: 170px; + // top: 19px; + color: #fff; + } + .step-5 { + z-index: 10; + text-align: center; + line-height: 30px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // left: 250px; + // top: 19px; + } + .step-6 { + z-index: 10; + text-align: center; + line-height: 30px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // right: 18px; + // top: 19px; + } + } + } + .mation-box { + width: 343px; + height: 79px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + margin: auto; + box-sizing: border-box; + padding: 16px 15px; + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + margin-bottom: 10px; + } + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + } + .code-info-box { + & { + box-sizing: border-box; + margin-top: 15px; + padding: 0 26px; + } + .code-btn { + width: 100%; + text-align: right; + display: flex; + position: relative; + // border-left: 1px solid #e6e6e6; + // margin-left: 5px; + input { + width: 40%; + border: none; + outline: none; + text-align: right; + } + // button::before{ + // content: ''; + // width: 1px; + // height: 13px; + // background: #E6E6E6; + // position: absolute; + // left: 100px; + // } + button { + width: 60%; + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + text-decoration: underline; + color: rgba(81, 148, 254, 1); + background: #fff; + border: 0; + outline: none; + text-align: right; + } + } + } + .xieyi-box { + & { + margin-top: 25px; + } + .ridio-box { + box-sizing: border-box; + padding-left: 16px; + } + .text-box { + box-sizing: border-box; + padding-left: 10px; + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(81, 148, 254, 1); + p { + padding-left: 20px; + } + } + } + .btn-box { + & { + margin-top: 32px; + text-align: center; + padding-bottom: 32px; + } + button { + width: 320px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + border: 0; + outline: none; + color: #fff; + } + } + .dialog-text-box { + padding: 24px; + box-sizing: border-box; + overflow: scroll; + height: 302px; + p { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: #999; + line-height: 25px; + } + } + /deep/.van-dialog { + width: 313px; + height: 400px; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transform: translate3d(0, 0, 0); + } +} +</style> diff --git a/src/views/order-handling/face-recognition.vue b/src/views/order-handling/face-recognition.vue new file mode 100644 index 0000000..ca7ae13 --- /dev/null +++ b/src/views/order-handling/face-recognition.vue @@ -0,0 +1,350 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 09:09:32 + * @LastEditors: zxq + * @LastEditTime: 2022-07-08 16:37:47 + * @Description: 人脸识别结果页面 +--> +<template> + <div class="face-recognition-page"> + <v-navbar title="订单申请"></v-navbar> + <div class="steps-box"> + <div class="zhanwei"></div> + <div class="steps"> + <p></p> + <div class="step-1">1</div> + <div class="step-2">2</div> + <div class="step-3">3</div> + <div class="step-4">4</div> + </div> + </div> + <div v-if="!isFaceBack"> + <div class="mation-box" v-if="state==1"> + <div class="left"> + <p>人脸识别成功</p> + <p>身份验证成功,点击下一步完善信息</p> + </div> + <div class="right"> + <img src="../../../static/img/rlsbz.png" alt /> + </div> + </div> + <div class="mation-box" v-if="state==2"> + <div class="left"> + <p>人脸识别中</p> + <p>正在进行身份验证,请稍后</p> + </div> + <div class="right"> + <img src="../../../static/img/rlsbz.png" alt /> + </div> + </div> + <div class="mation-box" v-if="state==0"> + <div class="left"> + <p>人脸识别失败</p> + <p>身份认证失败,请重新识别</p> + </div> + <div class="right"> + <img src="../../../static/img/rlsbsb.png" alt /> + </div> + </div> + <div class="mation-box" v-if="state==3"> + <div class="left"> + <p>人脸识别失败</p> + <p>身份认证次数超限,禁止继续识别</p> + </div> + <div class="right"> + <img src="../../../static/img/rlsbsb.png" alt /> + </div> + </div> + </div> + <div v-else class="new_box"> + <div class="new_box_right"> + <img src="../../../static/img/rlsbz.png" alt /> + </div> + <p>为了满足您的业务需求,需要您使用认证服务,服务可能采集如下信息:</p> + <div class="do_list"> + <p>操作人姓名、证件号</p> + <p>网络运营商注册手机号(仅手机认证获取)</p> + <p>银行卡或预留手机号(仅银行卡认证获取)</p> + <p>操作人人脸视频(仅人脸识别获取)</p> + </div> + <div class="ridio-box" style="margin-bottom:10px;"> + <van-checkbox v-model="checked" icon-size="13px"> + <p class="xieyi"> + <span>我已阅读并同意</span> + <span @click.stop="showAgree(1)"> 《认证服务协议》</span> + <span @click.stop="showAgree(2)"> 《用户隐私政策》</span> + </p> + </van-checkbox> + </div> + <div class="ridio-box"> + <van-checkbox v-model="checkede" icon-size="13px">我同意e签宝采集人脸照片并提供给深圳市景天商业保理有限公司(对接专用)用于实名认证</van-checkbox> + </div> + </div> + <div class="btn-box"> + <button @click="goNext">{{btnText}}</button> + </div> + </div> +</template> +<script> +import Vue from "vue"; +import { Checkbox, CheckboxGroup } from "vant"; +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +export default { + data() { + return { + state: 1, + btnText: "下一步", + isFaceBack:this.$route.query.isFaceBack, + checked:true, + checkede:true + }; + }, + created() { + if(!this.isFaceBack){ + this.getres() + }else{ + this.btnText='开始认证'; + } + }, + methods: { + // 获取识别结果 + getres() { + this.$api.findFaceResult().then(res => { + this.state = res.body.faceResult; + if (res.body.faceResult == 0) { + this.btnText = "开始认证"; + } + if (res.body.faceResult == 1) { + this.btnText = "下一步"; + } + if (res.body.faceResult == 2) { + this.btnText = "刷新"; + } + if (res.body.faceResult == 3) { + this.btnText = "禁止继续识别"; + } + }); + }, + goNext() { + if(this.isFaceBack){ + let v = this.$tool; + if (!this.checked) { + v.toast("请阅读并同意认证服务协议,用户隐私政策"); + return; + } + if (!this.checkede) { + v.toast("请同意e签宝采集人脸照片"); + return; + } + this.goToFace(); + }else{ + if (this.state == 0) { + this.goToFace(); + } + if (this.state == 1) { + this.$router.push("/order-handling/upload-userInfo"); + } + if (this.state == 2) { + this.getres() + } + if (this.state == 3) { + this.$router.push("/home/index"); + } + } + }, + showAgree(type){ + this.$router.push({ + path:'/agreement', + query:{ + from:'face', + tit:type==1?'认证服务协议':"用户隐私政策", + agrUrl:type==1?'./static/rzfwxy.pdf':'./static/yhyszc.pdf' + } + }) + }, + goToFace(){ + let str = location.host + this.$api.getFaceUrl({callbackUrl:`https://${str}/aic_cus/#/order-handling/face-recognition`}).then(res => { + window.location.href = res.body.faceUrl; + }); + } + } +}; +</script> +<style lang="less" scoped> +.face-recognition-page { + .new_box{ + padding: 16px; + display: flex; + justify-content: center; + align-items: flex-start; + flex-direction: column; + line-height: 1.5; + } + .new_box_right{ + width: 100%; + text-align: center; + margin-bottom: 24px; + img { + width: 96px; + height: 90px; + } + } + .do_list{ + margin:16px 0; + p{ + padding-left: 8px; + position: relative; + &::before{ + content:''; + position: absolute; + left:0px; + top: 50%; + transform: translateY(-50%); + width: 3px; + height: 3px; + border-radius: 50%; + background-color: #333; + } + } + } + .xieyi { + span:nth-of-type(1) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + span:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: #5194fe; + } + span:nth-of-type(3) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: #5194fe; + } + } + .steps-box { + & { + display: flex; + } + .zhanwei { + width: 25%; + } + .steps { + width: 75%; + height: 65px; + position: relative; + p { + border-bottom: 1px dashed #b3b3b3; + height: 32px; + } + .step-1 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: -15px; + top: 19px; + } + .step-2 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + color: #fff; + position: absolute; + left: 55px; + top: 19px; + } + .step-3 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 130px; + top: 19px; + } + .step-4 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 210px; + top: 19px; + } + } + } + .mation-box { + width: 343px; + height: auto; + padding-bottom: 10px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + margin: auto; + display: flex; + .left { + width: 60%; + padding-left: 17px; + padding-top: 16px; + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + margin-bottom: 10px; + } + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + } + .right { + width: 40%; + padding-top: 12px; + text-align: center; + img { + width: 48px; + height: 45px; + } + } + } + .btn-box { + & { + text-align: center; + margin-top: 56px; + } + button { + width: 320px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + border: 0; + color: #fff; + } + } +} +</style> diff --git a/src/views/order-handling/image-upload.vue b/src/views/order-handling/image-upload.vue new file mode 100644 index 0000000..467d796 --- /dev/null +++ b/src/views/order-handling/image-upload.vue @@ -0,0 +1,212 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 14:42:58 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-07-06 09:30:49 + * @Description: 图像上传页面 +--> +<template> + <div class="image-upload-page"> + <v-navbar title="订单申请" :back="url"></v-navbar> + <div class="steps-box"> + <div class="steps"> + <p></p> + <div class="step-3">3</div> + <div class="step-4">4</div> + <div class="step-5">5</div> + <div class="step-6">6</div> + </div> + <div class="zanwei"></div> + </div> + <div class="mation-box"> + <p>图片资料上传</p> + <p>请确保图片清晰可见,以便顺利申请</p> + </div> + <div class="upload-box"> + <UploadFile + :fileType="1" + title="首付凭证" + :hasTips="true" + :typeId="this.$route.query.typeId" + :sourceType="this.$route.query.zfbVersion" + :picList="uploadObj.contImgUrls" + ></UploadFile> + <UploadFile + :fileType="2" + title="现场合照" + :hasTips="true" + :typeId="this.$route.query.typeId" + :sourceType="this.$route.query.zfbVersion" + :picList="uploadObj.localeImgUrls" + ></UploadFile> + <UploadFile + :fileType="3" + title="资料证明" + :hasTips="false" + :typeId="this.$route.query.typeId" + :sourceType="this.$route.query.zfbVersion" + :picList="uploadObj.proofImgUrls" + ></UploadFile> + </div> + <div class="btn-box"> + <button @click="submitApp">提交申请</button> + </div> + </div> +</template> +<script> +import UploadFile from "../../components/upload/uploadImg"; +export default { + components:{ + UploadFile + }, + data() { + return { + url:'', + uploadObj: { + contImgUrls:[],//首付凭证 + localeImgUrls:[],//现场合照 + proofImgUrls:[],//证明资料 + } + }; + }, + beforeRouteEnter (to, from, next) { + // ... + next(vm=>{ + if(from.path=='/order-handling/contract-signing'){ + vm.url = '/order-handling/contract-signing' + //window.sessionStorage.backUrl = '/order-handling/image-upload' + } + }) + }, + methods:{ + submitApp(){ + let v = this.$tool + if(this.uploadObj.contImgUrls.length == 0){ + v.toast('请上传首付凭证') + return + } + if(this.uploadObj.localeImgUrls.length == 0){ + v.toast('请上现场合照') + return + } + this.$api.saveImgInfo({ + ...this.uploadObj + }).then(res=>{ + this.$router.push('/order-handling/approval-results') + }) + } + } +}; +</script> +<style lang="less" scoped> +.image-upload-page { + & { + min-height: 100vh; + } + .steps-box { + & { + } + .steps { + width: 70%; + height: 65px; + position: relative; + + p { + border-bottom: 1px dashed #b3b3b3; + height: 32px; + } + .step-3 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 18px; + top: 19px; + } + .step-4 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(113, 123, 133, 1); + border: 0; + border-radius: 50%; + color: #fff; + position: absolute; + left: 90px; + top: 19px; + } + .step-5 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + position: absolute; + left: 170px; + top: 19px; + color: #fff; + } + .step-6 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 240px; + top: 19px; + } + } + } + .mation-box { + padding: 16px 18px; + box-sizing: border-box; + width: 343px; + height: 79px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + margin: auto; + p:nth-of-type(1) { + margin-bottom: 10px; + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + p:nth-of-type(2) { + font-size: 13px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + } + .upload-box{ + padding: 16px; + } + .btn-box{ + &{ + text-align: center; + padding-bottom: 32px; + } + button{ + width:325px; + height:44px; + background:rgba(81,148,254,1); + border-radius:22px; + outline: none; + border: 0; + color: #fff; + } + } +} +</style> diff --git a/src/views/order-handling/order-handling.vue b/src/views/order-handling/order-handling.vue new file mode 100644 index 0000000..2445682 --- /dev/null +++ b/src/views/order-handling/order-handling.vue @@ -0,0 +1,121 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-21 19:43:21 + * @LastEditors: zxq + * @LastEditTime: 2022-02-28 17:28:09 + * @Description: 扫码办单订单信息页面 +--> +<template> + <div class="order-handling-page"> + <v-navbar + title="订单详情" + titleColor="#fff" + background="linear-gradient(60deg,rgba(75,137,250,1),rgba(105,167,255,1))" + > + <template slot="left-back"> + <div> + <i + class="iconfont iconzuojiantou" + style="font-size:22px;font-weight:blod;color:#fff" + @click="$router.go(-1)" + ></i> + </div> + </template> + </v-navbar> + <div class="info-box"> + <h-cell readonly v-model="mation.goodsName" label="商品名称"></h-cell> + <h-cell readonly v-model="mation.goodsModel" label="规格"></h-cell> + <h-cell readonly v-model="mation.goodsAmt" label="成交价格"></h-cell> + <h-cell readonly v-model="mation.insAmt" label="分期金额"></h-cell> + <h-cell readonly v-model="mation.insTerm" label="期数"></h-cell> + </div> + <div class="goPlan"> + <van-cell title="还款试算" is-link @click="goRepayment" /> + </div> + <div class="btn-box"> + <button class="btn" @click="goOrder">开始申请</button> + </div> + </div> +</template> +<script> +import Vue from "vue"; +import { Cell, CellGroup } from "vant"; + +Vue.use(Cell); +Vue.use(CellGroup); +export default { + data() { + return { + mation: {}, + orderUrl:'' + }; + }, + created() { + this.$api.createTrial({ orderUrl: this.$route.query.url}).then(res => { + this.mation = res.body; + localStorage.setItem('projId',res.body.projId); + }); + }, + methods: { + //跳转还款计划 + goRepayment() { + window.sessionStorage.setItem('order-repayPlans',JSON.stringify(this.mation.repayPlans)) + this.$router.push({ + path: "/order/repayment-plan", + query: { + repayPlans: this.mation.repayPlans + } + }); + }, + //创建订单并且跳转 + goOrder() { + this.$api.orderCreate({orderUrl: this.$route.query.url}) + .then(res => { + this.$router.push({ + path: "/order-handling/upload-IDcard", + query: {} + }); + }); + } + } +}; +</script> +<style lang="less" scoped> +.order-handling-page { + & { + min-height: 100vh; + background: @c-back; + } + .info-box { + padding: 0 26px; + background: #fff; + } + .goPlan { + background: #fff; + margin-top: 11px; + /deep/.van-cell { + padding: 0.2rem 26px; + } + } + .btn-box { + & { + text-align: center; + margin-top: 36px; + } + .btn { + width: 320px; + height: 44px; + background: linear-gradient( + 90deg, + rgba(82, 142, 255, 1), + rgba(105, 167, 255, 1) + ); + box-shadow: 0px 7px 10px 0px rgba(85, 146, 255, 0.3); + border-radius: 22px; + color: #fff; + outline: none; + border: 0; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/order-handling/upload-IDcard.vue b/src/views/order-handling/upload-IDcard.vue new file mode 100644 index 0000000..52379a0 --- /dev/null +++ b/src/views/order-handling/upload-IDcard.vue @@ -0,0 +1,351 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-23 11:05:09 + * @LastEditors: zxq + * @LastEditTime: 2022-07-08 14:54:57 + * @Description: 上传身份证 +--> +<template> + <div class="upload-IDcard-page"> + <v-navbar title="订单申请"></v-navbar> + <div class="steps-box"> + <div></div> + <div class="steps"> + <p></p> + <div class="step-1">1</div> + <div class="step-2">2</div> + <div class="step-3">3</div> + </div> + </div> + <div class="tit-box"> + <p>身份证照片上传</p> + <p>请确保照片清晰可见,以便顺利申请</p> + </div> + <div class="idcard-box"> + <upLoadIdCard :cardBack="idCardMation.idBackUrl" :cardFont="idCardMation.idFrontUrl"></upLoadIdCard> + </div> + <div class="id-mation-box"> + <div class="tit"> + <p>请核对身份证信息</p> + </div> + <div class="mation"> + <h-cell v-model="idCardMation.usrIdName" isMust label="姓名"></h-cell> + <h-cell v-model="idCardMation.usrIdCard" isMust readonly label="身份证号"></h-cell> + <h-cell v-model="idCardMation.sex" readonly isMust label="性别"></h-cell> + <h-cell v-model="idCardMation.idCardAddr" isMust label="身份证地址"></h-cell> + <h-cell v-model="idDate" readonly isLink isMust label="有效期" @click.native="isShoTime = true"></h-cell> + </div> + </div> + <div class="btn-box"> + <button @click="goNext">下一步</button> + </div> + <van-popup v-model="isShoTime" position="bottom"> + <div class="text-center-g flex-around-g time-label"> + <p + class="flex-1-g" + :class="[timeIndex===0 ? 'active':'']" + @click="setTimeIndex(0)" + >开始:{{startDay}}</p> + <p + class="flex-1-g" + :class="[timeIndex===1 ? 'active':'']" + @click="setTimeIndex(1)" + >结束:{{endDay}}</p> + </div> + <van-datetime-picker + ref="timepicker" + item-height='45' + visible-item-count='4' + :show-toolbar="false" + v-model="currentDate" + @change="setTime" + :min-date="minDate" + :max-date="maxDate" + type="date" + /> + <van-button class="btn-time" @click="refreshData">确定</van-button> + </van-popup> + </div> +</template> +<script> +import Bus from "../../bus"; +import Vue from "vue"; +import { DatetimePicker } from "vant"; +import { Popup } from "vant"; + +Vue.use(Popup); +Vue.use(DatetimePicker); +export default { + data() { + return { + readOnlyName: false, + readOnlyId: false, + readOnlySex: false, + minDate: new Date(1990, 0, 1), + maxDate: new Date(2030, 11, 31), + startDay: "", // 开始时间 + endDay: "", //结束时间 + timeIndex: 0, + isShoTime: false, + timePicker: null, + currentDate: new Date(1990, 0, 1), + idCardMation: {}, //身份证相关信息 + //idCardUserInfo:{},//身份证照片信息 + }; + }, + computed: { + idDate() { + if ( + this.idCardMation.idCardValidBegin && + this.idCardMation.idCardValidEnd + ) { + return ( + this.idCardMation.idCardValidBegin + + "-" + + this.idCardMation.idCardValidEnd + ); + } + }, + // cardBack() { + // return this.idCardMation.idBackUrl; + // }, + // cardFont() { + // return this.idCardMation.idFrontUrl; + // } + }, + created() { + this.$api.createInitIdInfo().then(res => { + this.idCardMation = res.body; + if (this.idCardMation.usrIdName) { + this.readOnlyName = true; + } + if (this.idCardMation.usrIdCard) { + this.readOnlyId = true; + } + if (this.idCardMation.sex) { + this.readOnlySex = true; + } + }); + }, + beforeUpdate(){ + let _this = this + Bus.$on('getIdUserInfo',(msg)=>{ + _this.idCardMation = msg + }) + }, + methods: { + //设置时间 + setTime(picker, arr) { + if (!this.timepicker && picker) { + this.timePicker = picker; + } + let v = arr ? arr : picker.getValues(), + time = v[0] + "." + v[1] + "." + v[2]; + if (this.timeIndex === 0) { + this.startDay = time; + } else { + this.endDay = time; + } + }, + setTimeIndex(index) { + this.timeIndex = index; + this.setPickerValue(); + }, + // 设置日期的值 + setPickerValue() { + if (this.timePicker) { + let timeArr = []; + if (this.timeIndex === 0) { + timeArr = this.startDay; + } else { + timeArr = this.endDay; + } + this.currentDate = new Date(timeArr); + } + }, + // 时间切换刷新统计数据 + refreshData() { + if (this.timePicker) { + let arr = this.timePicker.getValues(); + this.setTime(null, arr); + this.idCardMation.idCardValidBegin = this.startDay; + this.idCardMation.idCardValidEnd = this.endDay; + } + this.isShoTime = false; + }, + // 下一步 + goNext() { + let v = this.$tool; + if(v.checkValEmpty(this.idCardMation.idFrontUrl)){ + v.toast('请上传身份证正面') + return + } + if(v.checkValEmpty(this.idCardMation.idBackUrl)){ + v.toast('请上传身份证反面') + return + } + if(v.checkValEmpty(this.idCardMation.idCardAddr)){ + v.toast('请输入身份证详细地址') + return + } + // if(!v.checkValEmpty(this.idCardMation.idCardAddr)){ + // v.toast('请输入正确的身份证详细地址') + // return + // } + this.$api.saveIdInfo({...this.idCardMation,}).then(res => { + let str = location.host + //保存成功后获取人脸识别地址 + // this.$api.getFaceUrl({ + // callbackUrl:`https://${str}/aic_cus/#/order-handling/face-recognition` + // }).then(res=>{ + // window.location.href = res.body.faceUrl + // }) + this.$router.push({ + path: "/order-handling/face-recognition", + query: {isFaceBack:'1'} + }); + }); + } + } +}; +</script> +<style lang="less" scoped> +.upload-IDcard-page { + & { + min-height: 100vh; + } + .steps-box { + & { + display: flex; + } + div { + width: 50%; + } + .steps { + height: 65px; + position: relative; + p { + border-bottom: 1px dashed #b3b3b3; + height: 32px; + } + .step-1 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + position: absolute; + left: -15px; + top: 19px; + } + .step-2 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 55px; + top: 19px; + } + .step-3 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 130px; + top: 19px; + } + } + } + .tit-box { + & { + width: 343px; + height: 75px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + margin: auto; + box-sizing: border-box; + padding: 16px 17px; + } + p:nth-of-type(1) { + margin-bottom: 10px; + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + } + .idcard-box { + & { + margin-top: 29px; + } + } + .id-mation-box { + & { + box-sizing: border-box; + padding-left: 17px; + margin-top: 27px; + } + .tit { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + .mation { + box-sizing: border-box; + padding: 0 26px; + } + } + .btn-box { + text-align: center; + margin-top: 32px; + padding-bottom: 37px; + button { + width: 320px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + color: #fff; + border: 0; + outline: none; + } + } + .time-label { + .lh(65px); + color: @c-text-999; + + .active { + color: @c-text-default; + } + } + .btn-time { + display: block; + text-align: center; + line-height: 40px; + width: 320px; + height: 40px; + background-color: @c-bg-default; + color: @c-text-fff; + border-radius: 22px; + margin: 15px auto; + } +} +</style> diff --git a/src/views/order-handling/upload-userInfo.vue b/src/views/order-handling/upload-userInfo.vue new file mode 100644 index 0000000..e39ba05 --- /dev/null +++ b/src/views/order-handling/upload-userInfo.vue @@ -0,0 +1,654 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-25 09:59:53 + * @LastEditors: zxq + * @LastEditTime: 2022-07-20 09:47:46 + * @Description: 信息填写页面 +--> +<template> + <div class="upload-userinfo-page"> + <v-navbar title="订单申请"></v-navbar> + <div class="steps-box"> + <div class="steps"> + <p></p> + <div class="step-1">1</div> + <div class="step-2">2</div> + <div class="step-3">3</div> + <div class="step-4">4</div> + <div class="step-5">5</div> + </div> + </div> + <div class="mation-box"> + <p>个人信息填写</p> + <p>请确保资料填写的准确性,以便顺利申请</p> + </div> + <div class="user-info-box"> + <h-cell + v-model="degree" + placeholder="请选择" + label="最高学历" + readonly + isLink + isMust + @click.native="getSelect(1)" + ></h-cell> + <h-cell + v-model="socialIdentity" + placeholder="请选择" + label="社会身份" + readonly + isLink + isMust + @click.native="getSelect(2)" + ></h-cell> + <h-cell + v-model="areListHome" + placeholder="请选择" + label="现居住地址" + readonly + isLink + isMust + @click.native="getSelect(3)" + ></h-cell> + <h-cell max="30" v-model="userMation.homeAddr" isMust placeholder="请输入居住详细地址" label="居住详细地址"></h-cell> + <h-cell max="20" v-model="userMation.email" isMust placeholder="请输入电子邮箱" label="电子邮箱" @blur="changeEmail"></h-cell> + <h-cell + v-if="userMation.socialIdentity != 2&&userMation.socialIdentity != 3" + max="20" + isMust + v-model="userMation.companyName" + placeholder="请输入公司名称" + label="公司名称" + ></h-cell> + <h-cell + v-if="userMation.socialIdentity != 2&&userMation.socialIdentity != 3" + v-model="userMation.companyPhone" + isMust + placeholder="请输入公司电话" + label="公司电话" + max="11" + ></h-cell> + <h-cell + v-if="userMation.socialIdentity != 2&&userMation.socialIdentity != 3" + v-model="areListMer" + placeholder="请选择" + label="公司地址" + readonly + isLink + isMust + @click.native="getSelect(4)" + ></h-cell> + <h-cell + v-if="userMation.socialIdentity != 2&&userMation.socialIdentity != 3" + max="30" + isMust + v-model="userMation.companyAddr" + placeholder="请输入公司详细地址" + label="公司详细地址" + ></h-cell> + <h-cell v-model="userMation.contactName1" isMust placeholder="请输入第一联系人姓名" label="第一联系人姓名"></h-cell> + <h-cell + v-model="contactRelation1" + placeholder="请选择" + label="第一联系人关系" + readonly + isLink + isMust + @click.native="getSelect(5)" + ></h-cell> + <h-cell + v-model="userMation.contactMblNo1" + placeholder="请输入第一联系人手机号" + label="第一联系人手机号" + isMust + max="11" + ></h-cell> + <h-cell v-model="userMation.contactName2" :isMust='isMustReq' placeholder="请输入第二联系人姓名" label="第二联系人姓名"></h-cell> + <h-cell + v-model="contactRelation2" + placeholder="请选择" + label="第二联系人关系" + :isMust='isMustReq' + readonly + isLink + @click.native="getSelect(6)" + ></h-cell> + <h-cell + v-model="userMation.contactMblNo2" + :isMust='isMustReq' + placeholder="请输入第二联系人手机号" + label="第二联系人手机号" + max="11" + ></h-cell> + <h-cell + v-if=" projId == 100001" + v-model="contactRelation3" + placeholder="请选择" + label="第三联系人关系" + readonly + isLink + @click.native="getSelect(7)" + ></h-cell> + <h-cell v-if=" projId == 100001" v-model="userMation.contactName3" placeholder="请输入第三联系人姓名" label="第三联系人姓名"></h-cell> + <h-cell + v-if=" projId == 100001" + v-model="userMation.contactMblNo3" + placeholder="请输入第三联系人手机号" + label="第三联系人手机号" + max="11" + ></h-cell> + </div> + <div class="btn-box"> + <button @click="goNext">下一步</button> + </div> + <van-popup v-model="showPickerOne" round position="bottom"> + <van-picker + value-key="name" + show-toolbar + :columns="columnsOne" + @cancel="showPickerOne = false" + @confirm="onConfirmOne" + /> + </van-popup> + <van-popup v-model="showPickerTwo" round position="bottom"> + <van-picker + value-key="text" + show-toolbar + item-height="50" + visible-item-count="5" + :columns="columnsTwo" + @cancel="showPickerTwo = false" + @confirm="onConfirmTwo" + /> + </van-popup> + <van-popup v-model="showPickerThree" round position="bottom"> + <van-picker + value-key="name" + show-toolbar + item-height="50" + visible-item-count="5" + :columns="columnsThree" + @cancel="showPickerThree = false" + @confirm="onConfirmThree" + /> + </van-popup> + </div> +</template> +<script> +import Vue from "vue"; +import { Picker } from "vant"; +import { Popup } from "vant"; + +Vue.use(Popup); +Vue.use(Picker); +export default { + data() { + return { + showPickerOne: false, + showPickerTwo: false, + showPickerThree:false, + columnsOne: [], //其他选择 + columnsTwo: [], //地区选择 + columnsThree:[], + userMation: {}, //个人信息对象 + areListHome: "", //显示的居中地址 + areListMer: "", //显示的公司地址 + homeOrMer: "", //用于判断弹出层附值 + degree: "", + socialIdentity: "", + contactRelation1: "", + contactRelation2: "", + contactRelation3:"", + isMustReq:false + }; + }, + computed: { + projId() { + return localStorage.getItem("projId"); + }, + }, + created() { + this.columnsTwo = this.$store.state.areaList; + this.$api.initUserInfo().then(res => { + this.userMation = res.body; + this.isMustReq = res.body.projId == 100001; + //返显最高学历 + res.body.degreeList.forEach(e => { + if (e.code == res.body.degree) { + this.degree = e.name; + } + }); + //返显社会角色 + res.body.socialIdentityList.forEach(e => { + if (e.code == res.body.socialIdentity) { + this.socialIdentity = e.name; + } + }); + //返显联系一关系 + res.body.contactRelation1List.forEach(e => { + if (e.code == res.body.contactRelation1) { + this.contactRelation1 = e.name; + } + }); + //返显联系二关系 + res.body.contactRelation2List.forEach(e => { + if (e.code == res.body.contactRelation2) { + this.contactRelation2 = e.name; + } + }); + res.body.contactRelation3List.forEach(e => { + if (e.code == res.body.contactRelation3) { + this.contactRelation3 = e.name; + } + }); + // 返显居住地区 + var pr = "", + ci = "", + ar = ""; + this.$store.state.areaList.forEach(e => { + if (e.code == res.body.homeProv) { + pr = e.text; + e.children.forEach(i => { + if (i.code == res.body.homeCity) { + ci = i.text; + i.children.forEach(c => { + if (c.code == res.body.homeArea) { + ar = c.text; + } + }); + } + }); + } + }); + if (pr && ci && ar) { + this.areListHome = pr + "/" + ci + "/" + ar; + } + + //返显公司地址 + var pr2 = "", + ci2 = "", + ar2 = ""; + this.$store.state.areaList.forEach(e => { + if (e.code == res.body.companyProv) { + pr2 = e.text; + e.children.forEach(i => { + if (i.code == res.body.companyCity) { + ci2 = i.text; + i.children.forEach(c => { + if (c.code == res.body.companyArea) { + ar2 = c.text; + } + }); + } + }); + } + }); + if (pr2 && ci2 && ar2) { + this.areListHome = pr2 + "/" + ci2 + "/" + ar2; + } + }); + }, + methods: { + changeEmail(){ + let isHave = this.userMation.email.indexOf("@"); + let email = this.userMation.email; + if(isHave>-1&&email){ + let beforeStr = email.substring(0,isHave); + let afterStr = email.substring(isHave+1,email.length); + this.userMation.email = beforeStr+"@"+afterStr; + } + }, + // 下一步 + goNext() { + let v = this.$tool; + if (v.checkValEmpty(this.degree)) { + v.toast("请选择最高学历"); + return; + } + if (v.checkValEmpty(this.socialIdentity)) { + v.toast("请选择社会身份"); + return; + } + if (v.checkValEmpty(this.areListHome)) { + v.toast("请选择居住地址"); + return; + } + if (v.checkValEmpty(this.userMation.homeAddr)) { + v.toast("请输入居住详细地址"); + return; + } + // if (!v.checkAddress(this.userMation.homeAddr)) { + // v.toast("请输入正确的居住详细地址"); + // return; + // } + if (v.checkValEmpty(this.userMation.email)) { + v.toast("请输入电子邮箱"); + return; + } + if (!v.checkEmail(this.userMation.email)) { + v.toast("请输入正确的电子邮箱"); + return; + } + if (this.userMation.socialIdentity != 2 && this.userMation.socialIdentity != 3) { + if (v.checkValEmpty(this.userMation.companyName)) { + v.toast("请输入公司名称"); + return; + } + if (!v.checkCompany(this.userMation.companyName)) { + v.toast("请输入正确的公司名称"); + return; + } + if (v.checkValEmpty(this.userMation.companyPhone)) { + v.toast("请输入公司电话"); + return; + } + // if (!v.checkCompanyPhone(this.userMation.companyPhone)) { + // v.toast("请输入正确的公司电话"); + // return; + // } + if (v.checkValEmpty(this.areListMer)) { + v.toast("请选择公司地址"); + return; + } + if (v.checkValEmpty(this.userMation.companyAddr)) { + v.toast("请输入公司详细地址"); + return; + } + // if (!v.checkAddress(this.userMation.companyAddr)) { + // v.toast("请输入正确的公司详细地址"); + // return; + // } + } + if (v.checkValEmpty(this.userMation.contactName1)) { + v.toast("请输入第一联系人姓名"); + return; + } + // if (!v.checkRealName(this.userMation.contactName1)) { + // v.toast("请输入正确的第一联系人姓名"); + // return; + // } + if (v.checkValEmpty(this.contactRelation1)) { + v.toast("请选择第一联系人关系"); + return; + } + if (v.checkValEmpty(this.userMation.contactMblNo1)) { + v.toast("请输入第一联系人手机号"); + return; + } + if (!v.checkPhone(this.userMation.contactMblNo1)) { + v.toast("请输入正确的第一联系人手机号"); + return; + } + + // F1项目添加第二联系人必填 + if(this.isMustReq){ + if (v.checkValEmpty(this.userMation.contactName2)) { + v.toast("请输入第二联系人姓名"); + return; + } + // if (!v.checkRealName(this.userMation.contactName2)) { + // v.toast("请输入正确的第二联系人姓名"); + // return; + // } + if (v.checkValEmpty(this.contactRelation2)) { + v.toast("请选择第二联系人关系"); + return; + } + if (v.checkValEmpty(this.userMation.contactMblNo2)) { + v.toast("请输入第二联系人手机号"); + return; + } + if (!v.checkPhone(this.userMation.contactMblNo2)) { + v.toast("请输入正确的第二联系人手机号"); + return; + } + // 第三联系人 + if (v.checkValEmpty(this.userMation.contactName2)) { + v.toast("请输入第二联系人姓名"); + return; + } + // if (!v.checkRealName(this.userMation.contactName2)) { + // v.toast("请输入正确的第二联系人姓名"); + // return; + // } + // if (v.checkValEmpty(this.contactRelation3)) { + // v.toast("请选择第二联系人关系"); + // return; + // } + // if (v.checkValEmpty(this.userMation.contactMblNo3)) { + // v.toast("请输入第二联系人手机号"); + // return; + // } + // if (!v.checkPhone(this.userMation.contactMblNo3)) { + // v.toast("请输入正确的第二联系人手机号"); + // return; + // } + } + this.$api.saveUserInfo({...this.userMation}).then(res => { + this.$router.push({ + path: "/order-handling/contract-signing", + }); + window.sessionStorage.backUrl = "/order-handling/upload-userInfo" + }); + }, + // 弹出层选择 + getSelect(i) { + this.homeOrMer = i; + if (i == 1) { + this.showPickerOne = true; + this.columnsOne = this.userMation.degreeList; + } + if (i == 2) { + this.showPickerOne = true; + this.columnsOne = this.userMation.socialIdentityList; + } + if (i == 3) { + this.showPickerTwo = true; + // this.columnsTwo = this.$store.state.areaList; + } + if (i == 4) { + this.showPickerTwo = true; + // this.columnsTwo = this.$store.state.areaList; + } + if (i == 5) { + this.showPickerOne = true; + this.columnsOne = this.userMation.contactRelation1List; + + } + if (i == 6) { + this.showPickerOne = true; + this.columnsOne = this.userMation.contactRelation2List; + console.log(this.userMation.contactRelation2List); + } + if (i == 7) { + this.showPickerThree = true; + this.columnsThree = this.userMation.contactRelation3List; + console.log(this.userMation.contactRelation3List); + } + }, + // 其他选择确定 + onConfirmOne(picker, value, index) { + if (this.homeOrMer == 1) { + this.userMation.degree = picker.code; + this.degree = picker.name; + } + if (this.homeOrMer == 2) { + this.userMation.socialIdentity = picker.code; + this.socialIdentity = picker.name; + } + if (this.homeOrMer == 5) { + this.userMation.contactRelation1 = picker.code; + this.contactRelation1 = picker.name; + } + if (this.homeOrMer == 6) { + this.userMation.contactRelation2 = picker.code; + this.contactRelation2 = picker.name; + } + this.showPickerOne = false; + }, + // 地区选择确定 + onConfirmTwo(picker, value, index) { + if (this.homeOrMer == 3) { + this.userMation.homeProv = this.columnsTwo[value[0]].code; + this.userMation.homeCity = this.columnsTwo[value[0]].children[ + value[1] + ].code; + this.userMation.homeArea = this.columnsTwo[value[0]].children[ + value[1] + ].children[value[2]].code; + this.areListHome = picker[0] + "/" + picker[1] + "/" + picker[2]; + } + if (this.homeOrMer == 4) { + this.userMation.companyProv = this.columnsTwo[value[0]].code; + this.userMation.companyCity = this.columnsTwo[value[0]].children[ + value[1] + ].code; + this.userMation.companyArea = this.columnsTwo[value[0]].children[ + value[1] + ].children[value[2]].code; + this.areListMer = picker[0] + "/" + picker[1] + "/" + picker[2]; + } + this.showPickerTwo = false; + }, + onConfirmThree(picker, value, index){ + this.userMation.contactRelation3 = picker.code; + this.contactRelation3 = picker.name; + this.showPickerThree = false; + } + } +}; +</script> +<style lang="less" scoped> +.upload-userinfo-page { + & { + min-height: 100vh; + } + .steps-box { + .steps { + width: 100%; + height: 65px; + position: relative; + padding: 0 18px; + box-sizing: border-box; + display: flex; + justify-content: space-between; + align-items: center; + -webkit-align-items: center; + p { + border-bottom: 1px dashed #b3b3b3; + width: 90%; + position: absolute; + z-index: -1; + } + .step-1 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // left: 18px; + // top: 19px; + } + .step-2 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(113, 123, 133, 1); + border: 0; + border-radius: 50%; + color: #fff; + // position: absolute; + // left: 90px; + // top: 19px; + } + .step-3 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + // position: absolute; + // left: 170px; + // top: 19px; + color: #fff; + } + .step-4 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // left: 250px; + // top: 19px; + } + .step-5 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + // position: absolute; + // right: 18px; + // top: 19px; + } + } + } + .mation-box { + width: 343px; + height: 79px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + margin: auto; + box-sizing: border-box; + padding: 16px 17px; + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + margin-bottom: 10px; + } + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + } + .user-info-box { + & { + box-sizing: border-box; + padding: 0 16px; + margin-top: 15px; + } + } + .btn-box { + & { + text-align: center; + margin-top: 32px; + padding-bottom: 46px; + } + button { + width: 320px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + border: 0; + color: #fff; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/order/active-repayment.vue b/src/views/order/active-repayment.vue new file mode 100644 index 0000000..d4766b9 --- /dev/null +++ b/src/views/order/active-repayment.vue @@ -0,0 +1,415 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-22 16:13:05 + * @LastEditors: zxq + * @LastEditTime: 2022-07-05 17:55:53 + * @Description: 主动还款页面 +--> +<template> + <div class="active-repayment-page"> + <v-navbar title="主动还款" :back="'/order/order-detail?id=' + $route.query.id"></v-navbar> + <div class="mation-box"> + <van-checkbox-group v-model="result" @change="onChange" style="width: 100%"> + <!-- <div class="info-box" v-for="(item,index) in list" :key="index"> --> + <van-collapse v-model="activeNames" style="width: 100%"> + <van-collapse-item style="width: 100%" :name="item.seqNo" v-for="(item, index) in list" :key="index" ref="keyplan"> + <template #title> + <div class="tit-box"> + <van-checkbox @click.prevent.stop.native="onClick(item)" v-model="item.checked" :name="item.seqNo" :disabled="item.canRepay == 0 ? true : false">第{{ item.seqNo }}期</van-checkbox> + <div>应还总额</div> + <div>¥{{ item.totalAmt }}</div> + <div v-if="item.rpySts == 1"> + <p style="line-height: 16px">已还</p> + </div> + </div> + </template> + <!-- 内容 --> + <div class="content-box"> + <p> + <span>应还本金</span> + <span>¥{{ item.rpyAmt }}</span> + </p> + <p> + <span>应还服务费</span> + <span>¥{{ item.rpySerFee }}</span> + </p> + <p> + <span>应还滞纳金</span> + <span>¥{{ item.rpyLateFee }}</span> + </p> + <p> + <span>应还日期</span> + <span>{{ item.rpyDay }}</span> + </p> + </div> + </van-collapse-item> + </van-collapse> + <!-- </div> --> + </van-checkbox-group> + </div> + <!-- 占位 --> + <div style="height: 100px; width: 100vw"></div> + <div class="footer-box"> + <div class="text-box"> + <p>主动还款必须按照应还顺序依次还款</p> + <p>不支持跳期还款</p> + </div> + <div class="play-box"> + <p> + <span>应还总额:</span> + <span>¥{{ repayAmt }}</span> + </p> + <button class="btn" @click="pay">确认支付</button> + </div> + </div> + <van-popup v-model="yzmShow"> + <div class="yzmbox"> + <van-icon name="cross" size="18" class="yzmbox-close" @click="yzmShow = false" /> + <p style="font-size: 16px; color: #000">请输入短信验证码</p> + <div class="yzmbox-contnet"> + <div class="yzmbox-contnet-yzm"> + <span>将发送到手机号:</span> + <span>{{ userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, "$1****$2") }}</span> + </div> + </div> + <div class="yzmbox-contnet-get"> + <input type="text" v-model="yzmVal" placeholder="请输入验证码" /> + <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span> + </div> + <van-button class="showbtn" block round @click="yzmYes">确 认 支 付</van-button> + </div> + </van-popup> + </div> +</template> +<script> +import Vue from "vue"; +import { Collapse, CollapseItem } from "vant"; +import { Checkbox, CheckboxGroup, Button, Popup, Icon } from "vant"; +import { mapState } from "vuex"; +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +Vue.use(Collapse); +Vue.use(CollapseItem); +Vue.use(Button); +Vue.use(Popup); +Vue.use(Icon); +export default { + data() { + return { + activeNames: [], + list: [], + result: [], + repayTerms: [], //还款期数 + repayAmt: 0, //还款金额 + yzmShow: false, + yzmVal: "", + yzmText:'发送验证码', + Open: true, //倒计时开关 + }; + }, + created() { + this.init(); + }, + computed: { + ...mapState(["userinfo"]), + }, + methods: { + init() { + this.$api + .initRepay({ + orderId: this.$route.query.id, + }) + .then((res) => { + this.list = res.body.repayPlans || []; + }); + }, + pay() { + if(this.repayAmt>0){ + this.yzmShow = true; + }else{ + + } + }, + onChange() { + //判断数组元素个数 + if (this.result.length > 0) { + this.$api + .repayTrial({ repayTerms: this.result, orderId: this.$route.query.id }) + .then((res) => { + this.repayAmt = res.body.totalAmt; + }) + .catch((err) => { + //捕捉错误 清空选项重新选择 + this.result = []; + this.list.forEach((e) => { + e.checked = false; + }); + }); + } else { + //this.activeNames = [] + this.repayAmt = 0; + } + console.log(this.activeNames); + }, + onClick(item) { + //此点击函数只是用来阻止事件冒泡 + console.log("点击了", item); + }, + /**主动还款**/ + yzmYes() { + if (this.yzmVal == "" || this.yzmVal == null) { + this.$notify({ type: "danger", message: "验证码为空!" }); + } else{ + this.$api.repay({orderId: this.$route.query.id,repayAmt: this.repayAmt, repayTerms: this.result,verCode:this.yzmVal}).then((res) => { + this.$router.push({ + path: "/order/pay-result", + query: { + orderId: this.$route.query.id, + repayId: res.body.repayId, + model: 1, //1-主动还款行为 2-提前结清行为 + }, + }); + }); + } + }, + getYzm() { + let sendParams = { mblNo: this.userinfo.mblNo, verCodeType: 20 }; + if (this.Open) { + this.$api.getVerCode(sendParams).then((res) => { + this.Open = false; + let num = 60; + this.yzmText = num + "秒后重发"; + let _this = this; + _this.timer = setInterval(() => { + num--; + if (num === 0) { + clearInterval(_this.timer); + _this.Open = true; + _this.yzmText = "重新发送"; + } else { + _this.yzmText = num + "秒后重发"; + } + }, 1000); + }) + .catch(() => { + this.Open = true; + }); + } + }, + }, +}; +</script> +<style lang="less" scoped> +.active-repayment-page { + & { + min-height: 100vh; + background: #f5f5f7; + position: relative; + } + /deep/.van-collapse-item { + width: 100%; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(225, 237, 255, 1); + border-radius: 5px; + margin-bottom: 8px; + } + /deep/[class*="van-hairline"]::after { + position: absolute; + box-sizing: border-box; + content: " "; + pointer-events: none; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0; + -webkit-transform: scale(0.5); + transform: scale(0.5); + } + .mation-box { + & { + background: #fff; + display: flex; + justify-content: center; + padding: 20px 16px; + box-sizing: border-box; + height: auto; + margin-top: 10px; + } + .info-box { + width: 343px; + height: 44px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(225, 237, 255, 1); + border-radius: 5px; + margin-bottom: 8px; + } + .tit-box { + & { + //width: 100%; + display: flex; + z-index: 100; + //justify-content: space-between; + } + div:nth-of-type(1) { + width: 80px; + } + div:nth-of-type(2) { + width: 70px; + font-size: 13px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + div:nth-of-type(3) { + //width: 80px; + font-size: 16px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + } + div:nth-of-type(4) { + margin-left: 12px; + text-align: center; + p { + display: inline-block; + width: 40px; + height: 16px; + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + background: rgba(240, 246, 255, 1); + border: 1px solid rgba(81, 148, 254, 1); + border-radius: 3px; + color: #5194fe; + } + } + } + .content-box { + & { + color: #999999; + } + p { + span { + display: inline-block; + width: 49%; + } + span:nth-of-type(2) { + text-align: right; + } + } + p:nth-of-type(2) { + margin: 11px 0; + } + p:nth-of-type(4) { + margin-top: 11px; + } + } + } + .footer-box { + & { + position: absolute; + bottom: 0; + } + .text-box { + & { + height: 39px; + width: 100vw; + text-align: center; + } + p { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + line-height: 15px; + } + } + .play-box { + & { + width: 100vw; + height: 49px; + background: #fff; + position: relative; + line-height: 49px; + box-sizing: border-box; + padding-left: 16px; + } + .btn { + width: 120px; + height: 49px; + background: rgba(81, 148, 254, 1); + color: #fff; + border: 0; + outline: none; + position: absolute; + top: 0; + right: 0; + } + p { + span:nth-of-type(1) { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + span:nth-of-type(2) { + font-size: 16px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(255, 102, 102, 1); + } + } + } + } + .yzmbox { + box-sizing: border-box; + width: 280px; + height: 225px; + position: relative; + overflow: hidden; + .flex("", center, center, column); + text-align: center; + border-radius: 6px; + background: #fff; + padding-top: 30px; + .van-button--block { + width: 90%; + margin-top: 15px; + } + &-close { + color: #999; + font-size: 16px; + position: absolute; + right: 8px; + top: 8px; + } + &-contnet { + margin-top: 11px; + color: #999; + font-size: 14px; + &-yzm { + .flex(center, center); + span { + font-size: 14px; + } + } + &-get { + width: 80%; + margin: 0 10%; + margin-top: 15px; + .flex(space-between, center); + input { + border: none; + width: 45%; + background: #fff; + height: 30px; + } + &-yzm { + color: @c-default; + } + } + } + } +} +</style> diff --git a/src/views/order/contract.vue b/src/views/order/contract.vue new file mode 100644 index 0000000..f2f16c7 --- /dev/null +++ b/src/views/order/contract.vue @@ -0,0 +1,145 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-06-19 09:42:54 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-10-27 09:49:54 + * @Description: 相关合同页面 +--> +<template> + <div class="contract-page"> + <v-navbar title="相关合同"></v-navbar> + <div class="contract-box"> + <!-- <h-cell v-if="contract1" label="《保理付款服务合同》" isLink readonly @click="goPdf(1)"></h-cell> --> + <h-cell v-if="contract2" label="《代扣委托书》" isLink readonly @click="goPdf(2)"></h-cell> + <h-cell v-if="contract3" label="《信息授权函》" isLink readonly @click="goPdf(3)"></h-cell> + <!-- <h-cell v-if="contract4" label="《重要信息告知书》" isLink readonly @click="goPdf(4)"></h-cell> --> + <h-cell v-if="contract5" label="《个人征信查询报送授权书》" isLink readonly @click="goPdf(5)"></h-cell> + <h-cell v-if="contract6" label="《委托担保合同》" isLink readonly @click="goPdf(6)"></h-cell> + <h-cell v-if="contract7" label="《融资担保服务申请书》" isLink readonly @click="goPdf(7)"></h-cell> + </div> + <van-image-preview v-model="show" :images="images" @change="onChange" closeable="true" :loop="false" showIndicators="true"> + <template v-slot:index>第{{ index+1 }}页</template> + </van-image-preview> + </div> +</template> +<script> +import Vue from 'vue'; +import { ImagePreview } from 'vant'; + +// 全局注册 +Vue.use(ImagePreview); +export default { + data() { + return { + show: false, + index: 0, + images: [ + 'https://img.yzcdn.cn/vant/apple-1.jpg', + 'https://img.yzcdn.cn/vant/apple-2.jpg', + ], + } + }, + computed: { + contract1() { + return JSON.parse(sessionStorage.contract1Urls) + }, + contract2() { + return JSON.parse(sessionStorage.contract2Urls) + }, + contract3() { + return JSON.parse(sessionStorage.contract3Urls) + }, + contract4() { + return JSON.parse(sessionStorage.contract4Urls) + }, + contract5() { + return JSON.parse(sessionStorage.contract5Urls) + }, + contract6() { + return JSON.parse(sessionStorage.contract6Urls) + }, + contract7() { + return JSON.parse(sessionStorage.contract7Urls) + }, + }, + methods: { + onChange(index) { + this.index = index; + }, + goPdf(i) { + let url = '' + let tit = '' + switch (i) { + case 1: + this.images = JSON.parse(sessionStorage.contract1Urls) + tit = '保理付款服务合同' + break; + case 2: + this.images = JSON.parse(sessionStorage.contract2Urls) + tit = '代扣委托书' + break; + case 3: + this.images = JSON.parse(sessionStorage.contract3Urls) + tit = '信息授权函' + break; + case 4: + this.images = JSON.parse(sessionStorage.contract4Urls) + tit = '重要信息告知书' + break; + case 5: + this.images = JSON.parse(sessionStorage.contract5Urls) + tit = '个人征信查询报送授权书' + break; + case 6: + this.images = JSON.parse(sessionStorage.contract6Urls) + tit = '委托担保合同' + break; + case 7: + this.images = JSON.parse(sessionStorage.contract7Urls) + tit = '融资担保服务申请书' + break; + } + this.show = true + // this.$router.push({ + // path:"/agreement2", + // query:{ + // tit:tit, + // url:url + // } + // }) + } + } +} +</script> +<style lang="less" scoped> +.contract-page { + & { + min-height: 100vh; + background: #f5f5f7; + } + .contract-box { + background: #fff; + margin-top: 10px; + padding: 0 27px 0 25px; + /deep/.v-cell-box { + .left { + width: 80%; + } + } + } + /deep/.van-image-preview__close-icon--top-right { + top: 0.12rem; + right: 0.32rem; + } + /deep/.van-image-preview__image { + top: 35px; + } + /deep/.van-image__error, + .van-image__img, + .van-image__loading { + display: block; + width: 100%; + height: 95%; + } +} +</style> \ No newline at end of file diff --git a/src/views/order/my-order.vue b/src/views/order/my-order.vue new file mode 100644 index 0000000..79e11c5 --- /dev/null +++ b/src/views/order/my-order.vue @@ -0,0 +1,115 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-21 16:46:50 + * @LastEditors: zxq + * @LastEditTime: 2022-06-14 16:57:03 + * @Description: 我的订单 +--> +<template> + <div class="my-order-page"> + <v-navbar title="我的订单" back="/home/personal"></v-navbar> + <h-list height="90vh" background="#f5f5f5" v-if="mation.length > 0" > + <div class="mation-box" v-for="(item,index) in mation" :key="index" @click="goDetail(item)"> + <div> + <span>订单号</span> + <span>{{item.orderId}}</span> + </div> + <div> + <span>订单状态</span> + <span>{{item.statusName}}</span> + </div> + <div> + <span>逾期状态</span> + <span>{{item.overStatusName}}</span> + </div> + </div> + </h-list> + <div class="noinfo-box" v-else> + <img src="../../assets/img/noinfo.png" alt=""> + <p>暂无订单</p> + </div> + </div> +</template> +<script> +export default { + data() { + return { + mation:[], + loading:false, + finished:false, + orderId:'' + } + }, + created(){ + this.init() + }, + methods:{ + init(){ + this.$api.orderUserList().then(res=>{ + this.mation = res.body.items + }) + }, + goDetail(item){ + if(item.canDtl==1){ + this.$router.push({ + path:'/order/order-detail', + query:{ + id:item.orderId + } + }) + } + }, + } +} +</script> +<style lang="less" scoped> + .my-order-page{ + &{ + height: 100vh; + background: @c-back; + position: relative; + } + .mation-box{ + width:343px; + background:rgba(255,255,255,1); + box-shadow:0px 4px 12px 0px rgba(12,85,188,0.08); + border-radius:5px; + margin-top: 10px; + box-sizing: border-box; + padding: 17px; + div:nth-of-type(2){ + margin: 13px 0; + } + div{ + span{ + display: inline-block; + width: 49%; + } + span:nth-of-type(1){ + font-size:13px; + font-family:PingFang SC; + font-weight:500; + color:rgba(153,153,153,1); + } + span:nth-of-type(2){ + font-size:13px; + font-family:PingFang SC; + font-weight:500; + color:rgba(51,51,51,1); + text-align: right; + } + } + } + .noinfo-box{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + text-align: center; + img{ + width: 222px; + height: 130px; + } + } + } +</style> \ No newline at end of file diff --git a/src/views/order/order-detail.vue b/src/views/order/order-detail.vue new file mode 100644 index 0000000..a7aca15 --- /dev/null +++ b/src/views/order/order-detail.vue @@ -0,0 +1,329 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-21 17:31:49 + * @LastEditors: zxq + * @LastEditTime: 2022-07-08 16:12:18 + * @Description: 订单详情 +--> +<template> + <div class="order-detail-page"> + <v-navbar + title="订单详情" + titleColor="#fff" + background="linear-gradient(60deg,rgba(75,137,250,1),rgba(105,167,255,1))" + > + <template slot="left-back"> + <div> + <i + class="iconfont iconzuojiantou" + style="font-size:22px;font-weight:blod;color:#fff" + @click="$router.push('/order/my-order')" + ></i> + </div> + </template> + </v-navbar> + <div class="business-info-box"> + <div class="business-top"> + <div class="box"> + <img src="../../../static/img/pic.png" alt /> + <span>商品信息</span> + </div> + </div> + <div class="business-mation"> + <h-cell label="商品名称" v-model="orderInfo.goodsName" readonly></h-cell> + <h-cell label="规格" v-model="orderInfo.goodsModel" readonly></h-cell> + <h-cell label="成交价格" v-model="orderInfo.goodsAmt" readonly></h-cell> + </div> + </div> + <div class="fenqi-info-box"> + <div class="fenqi-top"> + <div class="box"> + <img src="../../../static/img/pic.png" alt /> + <span>分期信息</span> + </div> + </div> + <div class="fenqi-mation"> + <h-cell label="分期金额" v-model="orderInfo.insAmt" readonly></h-cell> + <h-cell label="期数" v-model="insTerm" readonly></h-cell> + <h-cell label="应还总额" v-model="orderInfo.repayTotalAmt" readonly></h-cell> + <h-cell label="交易日期" v-model="orderInfo.payTime" readonly></h-cell> + <h-cell label="订单状态" v-model="orderInfo.statusName" readonly></h-cell> + <h-cell label="还款状态" v-model="orderInfo.overStatusName" readonly></h-cell> + <h-cell v-if="orderInfo.repayPlans" label="还款计划表" isLink readonly @click="goRepaymentPlan"></h-cell> + </div> + </div> + <div style="margin-top:10px;padding:0 26px;background:#fff" v-if="orderInfo.contract2Urls || orderInfo.contract3Urls || orderInfo.contract4Urls || orderInfo.contract5Urls || orderInfo.contract6Urls || orderInfo.contract7Urls"> + <!-- <div style="margin-top:10px;padding:0 26px;background:#fff" v-if="orderInfo.contract2Urls || orderInfo.contract3Urls || orderInfo.contract4Urls"> --> + <!-- orderInfo.contract1Urls || 合同一保理合同暂时不要 --> + <h-cell label="相关合同" @click="goContract" isLink readonly></h-cell> + </div> + <div class="btn-box"> + <button class="btn-jxsq" v-if="orderInfo.applyBtn==1" @click="doItNext">继续申请</button> + <button class="btn-qx" v-if="orderInfo.cancelBtn==1" @click="show=!show">取消订单</button> + <button class="btn-jq" v-if="orderInfo.preCloseBtn==1" @click="goSettle">提前结清</button> + <button class="btn-hk" v-if="orderInfo.repayBtn==1" @click="goRepayment">主动还款</button> + </div> + <van-dialog + @confirm="onConfirm" + v-model="show" + show-cancel-button + confirmButtonColor="#333333" + cancelButtonColor="#666666" + > + <div class="title-box"> + <p>确定取消此订单吗?</p> + </div> + </van-dialog> + </div> +</template> +<script> +import Vue from "vue"; +import { Dialog } from "vant"; + +Vue.use(Dialog); +export default { + data() { + return { + show: false, + orderInfo: {}, + step:'',//步骤 + insTerm:'',//期数 + }; + }, + created() { + this.init(); + }, + methods: { + /**初始化**/ + init() { + this.$api.orderUserDetail({orderId: this.$route.query.id }).then(res => { + this.orderInfo = res.body; + this.insTerm = res.body.insTerm+'期' + }); + }, + /**订单取消**/ + onConfirm() { + this.$api + .orderUserCancel({ + orderId: this.orderInfo.orderId + }) + .then(res => { + this.$tool.toast("订单取消成功"); + this.init() + }); + }, + /**跳转还款计划表**/ + goRepaymentPlan() { + this.$router.push({ + path: "/order/repayment-plan", + query: { + id: this.orderInfo.orderId + } + }); + }, + /**跳转提前结清**/ + goSettle() { + this.$api.initPreClose({ orderId: this.$route.query.id }).then(({ body }) => { + this.$router.push({ + path: "/order/settlementEarly", + query: { + id: this.orderInfo.orderId + } + }); + }) + }, + /**跳转主动还款**/ + goRepayment() { + this.$router.push({ + path: "/order/active-repayment", + query: { + id: this.orderInfo.orderId + } + }); + }, + /**继续申请**/ + doItNext(){ + this.$api.orderCreateStep().then(res=>{ + let createStep = res.body.createStep; + localStorage.setItem('projId',res.body.projId); + this.step = createStep + if (res.body.createStep == 0) { + this.$router.push('/home/index') + } + if (res.body.createStep == 1) { + this.$router.push("/order-handling/upload-IDcard"); + } + if (res.body.createStep == 2) { + //重新人脸识别,先去协议页面; + this.$router.push({ + path: "/order-handling/face-recognition", + query: {isFaceBack:'1'} + }); + // let str = location.host + // this.$api.getFaceUrl({callbackUrl:`https://${str}/aic_cus/#/order-handling/face-recognition`}).then(res => { + // window.location.href = res.body.faceUrl; + // }); + } + if (res.body.createStep == 3) { + this.$router.push("/order-handling/upload-userInfo"); + } + if (res.body.createStep == 4) { + this.$router.push("/order-handling/contract-signing"); + } + if (res.body.createStep == 5) { + this.$router.push(res.body.projId=='100000'?"/order-handling/approval-results":"/order-handling/image-upload"); + } + if (res.body.createStep == 6) { + this.$router.push("/order-handling/approval-results"); + } + }) + }, + /**跳转相关合同页**/ + goContract(){ + sessionStorage.contract1Urls = JSON.stringify(this.orderInfo.contract1Urls) + sessionStorage.contract2Urls = JSON.stringify(this.orderInfo.contract2Urls) + sessionStorage.contract3Urls = JSON.stringify(this.orderInfo.contract3Urls) + sessionStorage.contract4Urls = JSON.stringify(this.orderInfo.contract4Urls) + sessionStorage.contract5Urls = JSON.stringify(this.orderInfo.contract5Urls) + sessionStorage.contract6Urls = JSON.stringify(this.orderInfo.contract6Urls) + sessionStorage.contract7Urls = JSON.stringify(this.orderInfo.contract7Urls) + this.$router.push({ + path:'/order/contract', + query:{ + orderId: this.$route.query.id + } + }) + }, + goToSettle(){ + + } + } +}; +</script> +<style lang="less" scoped> +.order-detail-page { + & { + min-height: 100vh; + background: @c-back; + padding-bottom: 29px; + } + /deep/.v-cell-box .input[disabled] { + opacity: 1; + -webkit-opacity: 1; + color: #333; + -webkit-text-fill-color: #333; +} + .business-info-box { + & { + width: 100%; + background: #fff; + } + .business-top { + font-size: 15px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + padding: 0 10px; + .box { + border-bottom: 1px solid #e6e6e6; + padding: 17px 6px; + } + img { + width: 6px; + height: 13px; + } + } + .business-mation { + padding: 0 26px; + } + div:last-of-type { + border: 0; + } + } + .fenqi-info-box { + & { + width: 100%; + background: #fff; + margin-top: 10px; + } + .fenqi-top { + font-size: 15px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + padding: 0 10px; + .box { + border-bottom: 1px solid #e6e6e6; + padding: 17px 6px; + } + img { + width: 6px; + height: 13px; + } + } + .fenqi-mation { + padding: 0 26px; + } + div:last-of-type { + border: 0; + } + } + .btn-box { + & { + text-align: center; + margin-top: 32px; + } + .btn-jxsq { + width: 155px; + height: 44px; + background: rgba(231, 240, 255, 1); + border: 1px solid rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + color: #5194fe; + margin-right: 13px; + } + .btn-jq { + width: 155px; + height: 44px; + background: rgba(231, 240, 255, 1); + border: 1px solid rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + color: #5194fe; + margin-right: 13px; + } + .btn-hk { + outline: none; + border: 0; + color: #fff; + width: 155px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + } + .btn-qx { + outline: none; + border: 0; + color: #fff; + width: 155px; + height: 44px; + background: rgba(81, 148, 254, 1); + border-radius: 22px; + } + } + .title-box { + & { + height: 100px; + line-height: 100px; + text-align: center; + } + p { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + } +} +</style> diff --git a/src/views/order/pay-result.vue b/src/views/order/pay-result.vue new file mode 100644 index 0000000..9f4830b --- /dev/null +++ b/src/views/order/pay-result.vue @@ -0,0 +1,157 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-06-19 15:59:27 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2021-10-29 16:51:54 + * @Description: 支付结果页面 +--> +<template> + <div class="pay-result-page"> + <v-navbar title="支付结果"></v-navbar> + <div class="result-box"> + <img :src="url" alt /> + <!-- <img src="../../../static/img/faile.png" alt /> + <img src="../../../static/img/ing.png" alt /> --> + <p>{{titleText}}</p> + <p>{{tipText}}</p> + </div> + <div class="btn-box"> + <button @click="goBack" v-if="preSettleStatus == 2">返回</button> + </div> + </div> +</template> +<script> +export default { + data() { + return { + preSettleStatus:'', + url: "./static/img/ing.png", //图片地址 + titleText: "支付中", //标题文字 + tipText: "正在进行支付,请稍后…", //提示文字 + timer: "" //定时器 + }; + }, + created() { + this.init() + }, + methods: { + init() { + //判断用户查询哪一个行为的支付结果 + if(this.$route.query.model == 1){ + this.$api.findRepayResult({ repayId: this.$route.query.repayId}).then(res => { + this.preSettleStatus = res.body.repaySts + if (res.body.repaySts == 2) { + this.url = "./static/img/faile.png"; + this.titleText = "支付失败"; + this.tipText = res.body.failMsg; + } + if (res.body.repaySts == 1) { + this.url = "./static/img/success.png"; + this.titleText = "支付成功"; + this.tipText = "支付成功,跳转中请稍后…"; + this.timer = setTimeout(()=>{ + this.goBack() + },3000) + } + if (res.body.repaySts == 0) { + this.url = "./static/img/ing.png"; + this.titleText = "支付中"; + this.tipText = "正在进行支付,请稍后…"; + + } + }); + } + if(this.$route.query.model == 2){ + this.$api + .preSettleStatus({ + orderId: this.$route.query.orderId + }) + .then(res => { + this.preSettleStatus = res.body.status + if (res.body.status == 2) { + this.url = "./static/img/faile.png"; + this.titleText = "支付失败"; + this.tipText = res.body.msg; + } + if (res.body.status == 1) { + this.url = "./static/img/success.png"; + this.titleText = "支付成功"; + this.tipText = "支付成功,跳转中请稍后…"; + this.timer = setTimeout(()=>{ + this.goBack() + },3000) + } + if (res.body.status == 0) { + this.url = "./static/img/ing.png"; + this.titleText = "支付中"; + this.tipText = "正在进行支付,请稍后…"; + this.timer = setInterval(()=>{ + this.init() + },3000) + } + }); + } + + }, + goBack(){ + this.$router.push({ + path:'/order/order-detail', + query:{ + id:this.$route.query.orderId + } + }) + } + }, + beforeDestroy(){ + clearInterval(this.timer) + clearTimeout(this.timer) + } +}; +</script> +<style lang="less" scoped> +.pay-result-page { + & { + min-height: 100vh; + background: @c-back; + } + .result-box { + & { + background: #fff; + text-align: center; + margin-top: 10px; + padding: 31px 0 24px; + } + img { + width: 83px; + height: 81px; + } + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + margin-top: 20px; + } + p:nth-of-type(2) { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + margin-top: 12px; + } + } + .btn-box{ + text-align: center; + margin-top: 32px; + button{ + width:320px; + height:44px; + background:rgba(81,148,254,1); + border-radius:22px; + border: 0; + outline: none; + color: #fff; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/order/repayment-plan.vue b/src/views/order/repayment-plan.vue new file mode 100644 index 0000000..f3bf019 --- /dev/null +++ b/src/views/order/repayment-plan.vue @@ -0,0 +1,483 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-13 17:26:17 + * @LastEditors: zxq + * @LastEditTime: 2022-06-15 17:53:43 + * @Description: 还款试算-订单详情还款计划表 + --> +<template> + <div class="repayment-plan-page"> + <v-navbar :title="isPlan?'还款计划表':'还款试算'" fixed></v-navbar> + <div class='repayment_box'> + <!-- <div class='repayment_small_box'> --> + <!-- <div style="height:10px"></div> --> + <div v-if='isAllReplay' class="primary_btn" @click="checkAll" > + <van-checkbox icon-size='14px' v-model="checkedAll">全选</van-checkbox> + </div> + <div class='repayment_small_box'> + <van-collapse v-model="activeNames" accordion style='padding-bottom:50px;' > + <van-checkbox-group v-model="result" ref="checkboxGroup" @change='changeRadion'> + <div v-for="(item,index) in tremList" :key="index" class='chckout'> + <van-checkbox v-if='isAllReplay&&item.canRepay==1' @click.stop='changeRad' :name="item.seqNo" icon-size='14px'> </van-checkbox> + <van-collapse-item :name="index"> + <template #title> + <div> + <span>{{'第'+(index+1)+'期'}}</span> + </div> + </template> + <div class="detail-box"> + <div class="text-box"> + <span>应还日期:</span> + <span>{{item.rpyDay}}</span> + </div> + <div class="text-box"> + <span>{{isPlan?'应还本金:':'应还总额:'}}</span> + <span v-if="isPlan">¥{{item.rpyAmt}}</span> + <span v-else>¥{{item.totalAmt}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>应还服务费:</span> + <span>¥{{item.rpySerFee}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>应还滞纳金:</span> + <span>¥{{item.rpyLateFee}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>实还日期:</span> + <span>{{item.realRpyTime}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>实还本金:</span> + <span>¥{{item.realAmt}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>实还服务费:</span> + <span>¥{{item.realSerFee}}</span> + </div> + <div v-if="isPlan" class="text-box"> + <span>实还滞纳金:</span> + <span>¥{{item.realLateFee}}</span> + </div> + </div> + </van-collapse-item> + </div> + </van-checkbox-group> + </van-collapse> + <!-- <div class='btn_class' v-if='!isAllReplay&&showReplayArr.length>0'> + <van-button size='normal' block type="info" @click="goPay">立即还款</van-button> + </div> + <div class='btn_replay primary_btn' v-else> + <div class='payment_money' v-if='totalAmt'> + <span>本次共计需还</span> + <span>{{totalAmt}}</span> + </div> + <div v-if="totalAmt&&havaRadion" > + <van-button size="small" type="info" @click="yzmShow=true">确认还款</van-button> + <van-button size="small" type="default" @click="canelReplay">取消</van-button> + </div> + </div> --> + </div> + </div> + <!-- 短信验证码弹窗 --> + <van-popup v-model="yzmShow"> + <div class="yzmbox"> + <van-icon name="cross" size="18" class="yzmbox-close" @click="yzmShow = false" /> + <p style="font-size:16px;color:#000;">请输入短信验证码</p> + <div class="yzmbox-contnet"> + <div class="yzmbox-contnet-yzm"> + <span>将发送到手机号:</span> + <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/,'$1****$2')}}</span> + </div> + </div> + <div class="yzmbox-contnet-get"> + <input type="text" v-model="yzmVal" placeholder="请输入验证码"/> + <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{yzmText}}</span> + </div> + <van-button class="showbtn" block round @click="yzmYes">确认</van-button> + </div> + </van-popup> + </div> +</template> +<script> +import Vue from 'vue'; +import { mapState } from 'vuex'; +import { Collapse, CollapseItem ,Button,Checkbox, CheckboxGroup,Popup,Icon,Dialog } from 'vant'; +Vue.use(Collapse); +Vue.use(CollapseItem); +Vue.use(Button); +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +Vue.use(Popup); +Vue.use(Icon); +export default { + components: {[Dialog.Component.name]: Dialog.Component}, + data(){ + return{ + activeNames: ['1'], + tremList:[], + result: [], + checkedAll:false, + isAllReplay:false,//是否是可还款状态 + yzmShow:false, + yzmVal:"", + Open: true, //倒计时开关 + yzmText: '获取验证码', + showReplayArr:[], + totalAmt:'', + orderId:'', + timer:null, + havaRadion:true, + getStatusTime:null, + repayId:'', + repayPStatus:1, + } + }, + computed: { + ...mapState(['userinfo']), + isPlan(){ + if(this.$route.query.id){ + return true + }else{ + return false + } + } + }, + methods:{ + init() { + this.$api.initRepay({orderId:this.$route.query.id}).then(res => { + this.tremList = (res.body.repayPlans || []).map((val,index)=>{ + return { + ...val, + id:val.orderId+index, + checked:false + } + }); + let arr = []; + res.body.repayPlans.forEach(val=>{ + if(val.canRepay==1){ + arr.push(val.canRepay); + } + }); + this.showReplayArr = arr; + }); + }, + checkAll() { + if(!this.checkedAll){ + this.$refs.checkboxGroup.toggleAll(true); + }else{ + this.result=[]; + } + }, + goPay(index) { + this.isAllReplay =!this.isAllReplay; + }, + getYzm(){ + let sendParams = {mblNo: this.userinfo.mblNo, verCodeType: 20}; + if (this.Open) { + this.$api.getVerCode(sendParams).then((res) => { + this.Open = false; + let num = 60; + this.yzmText = num + '秒后重发'; + let _this = this; + _this.timer = setInterval(() => { + num--; + if (num === 0) { + clearInterval( _this.timer); + _this.Open = true; + _this.yzmText = '重新发送'; + } else { + _this.yzmText = num + '秒后重发'; + } + }, 1000); + }).catch(() => { + this.Open = true; + }); + } + }, + yzmYes() { + if (this.yzmVal == "" || this.yzmVal == null) { + this.$notify({ type: "danger", message: "验证码为空!" }); + } else { + this.$api.repay({orderId: parseInt(this.$route.query.id),repayAmt:this.totalAmt, repayTerms:this.result,verCode:this.yzmVal}).then(({body}) => { + this.yzmShow = false; + clearInterval(this.timer); + this.yzmVal = ""; + this.yzmText ='获取验证码'; + this.isAllReplay =false; + this.Open = true; + this.totalAmt =''; + this.result=[]; + this.repayId = body.repayId;//还款还款行为ID + this.checkReolayStatus(); + }); + + } + }, + checkReolayStatus(){ + this.$api.findRepayResult({repayId:this.repayId}).then(({body})=>{ + if(this.getStatusTime!==null){ + clearInterval(this.getStatusTime); + } + // 0-支付中,1-支付成功,2-支付失败 + // failMsg: "支付金额为0,不需要调用授权支付接口流程" + // repaySts: 1 + // repayStsName: "支付成功" + // this.repayPStatus = body.repaySts; + if(body.repaySts==1){ + Dialog.alert({ + title: '提示', + message:body.repayStsName? body.repayStsName:'还款成功', + }).then(res=>{ + clearInterval(this.getStatusTime); + }) + }else if(body.repaySts==2){ + Dialog.alert({ + title: '提示', + message:body.repayStsName? body.repayStsName:'还款失败', + }).then(res=>{ + clearInterval(this.getStatusTime); + }) + }else{ + // 状态为还款中时不许操作其他未还款的 + Dialog.alert({ + title: '提示', + message:body.repayStsName? body.failMsg:'还款中', + }).then(() => { + this.getStatusTime = setInterval(() => { + this.checkReolayStatus(); + }, 2000); + }); + } + this.init(); + }); + }, + changeRadion(e){ + this.havaRadion = this.result.length>0; + if(this.result==0){ + this.totalAmt =''; + } + if(this.showReplayArr.length!==e.length){ + this.checkedAll =false; + }else{ + this.checkedAll =true; + } + if(e.length>0){ + let max; + //遍历数组,默认arr中的某一个元素为最大值,进行逐一比较 + for(let i=0; i<e.length; i++){ + //外层循环一次,就拿arr[i] 和 内层循环arr.legend次的 arr[j] 做对比 + for(var j=i; j<e.length; j++){ + if(e[i]>e[j]){ + //如果arr[j]大就把此时的值赋值给最大值变量max + max=e[j]; + e[j]=e[i]; + e[i]=max; + } + } + } + this.$api.repayTrial({orderId:this.$route.query.id,repayTerms:e}).then(res => { + this.totalAmt = res.body.totalAmt; + }).catch(err=>{ + this.totalAmt = 0; + }); + } + + }, + canelReplay(){ + this.isAllReplay=false; + this.result=[]; + this.checkedAll=false; + this.totalAmt=0; + }, + changeRad(){ + + } + }, + created(){ + let tremList = JSON.parse(window.sessionStorage.getItem('order-repayPlans')); + if(tremList){ + this.tremList = (JSON.parse(window.sessionStorage.getItem('order-repayPlans')) || []).map((val,index)=>{ + return { + ...val, + id:val.orderId+index + } + }); + }else{ + this.init(); + } + }, + beforeDestroy(){ + clearInterval(this.getStatusTime); + clearInterval(this.timer); + sessionStorage.removeItem('order-repayPlans'); + } +} +</script> +<style lang="less" scoped> + .repayment-plan-page{ + padding-top: 44px; + &{ + min-height: 100vh; + background-color:#fff; + padding-bottom: 24px; + box-sizing: border-box; + } + .repayment_box{ + height:calc(100vh - 44px); + overflow: hidden; + } + .repayment_small_box{ + height:calc(100vh - 44px); + overflow: scroll; + padding-bottom: 50px; + // box-sizing: border-box; + } + .detail-box{ + background: @c-back; + display: flex; + flex-wrap: wrap; + .text-box{ + display: inline-block; + width: 50%; + color:rgba(153,153,153,1); + font-weight:500; + margin: 6px 0; + span:nth-of-type(2){ + color:rgba(51,51,51,1); + } + } + } + .btn_class{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; + margin-top: 20px; + } + .van-button--block{ + width: 90%; + } + .primary_btn{ + box-sizing: border-box; + width: 100%; + padding: 0.2rem 0.32rem; + overflow: hidden; + color: #323233; + font-size: 0.28rem; + line-height: 0.48rem; + background-color: #fff; + } + .btn_replay{ + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 40px; + position: absolute; + bottom: 0; + left: 0; + } + .payment_money{ + color: #666; + span{ + &:last-child{ + font-size: 18px; + color: #333; + font-weight: bold; + } + } + } + .yzmbox { + box-sizing: border-box; + width: 280px; + height: 225px; + position: relative; + overflow: hidden; + .flex("", center, center, column); + text-align: center; + border-radius: 6px; + background: #fff; + padding-top: 30px; + .van-button--block{ + width: 90%; + margin-top: 15px; + } + &-close { + color: #999; + font-size: 16px; + position: absolute; + right: 8px; + top: 8px; + } + &-contnet { + margin-top: 11px; + color: #999; + font-size: 14px; + &-yzm { + .flex(center, center); + span { + font-size: 14px; + } + } + &-get { + width: 80%; + margin: 0 10%; + margin-top: 15px; + .flex(space-between, center); + input { + border: none; + width: 45%; + background: #fff; + height: 30px; + } + &-yzm { + color: @c-default; + } + } + } + } + .chckout{ + display: flex; + justify-content: flex-start; + align-items: flex-start; + padding: 0 0.32rem; + overflow: hidden; + color: #323233; + box-sizing: border-box; + .van-checkbox{ + width: 20px; + height: 44px; + overflow: hidden; + color: #323233; + font-size: 0.28rem; + line-height: 44px; + background-color: #fff; + box-sizing: border-box; + display: flex; + justify-content:center; + align-items: center; + } + + } + .van-collapse-item{ + width: 100%; + + } + /deep/.van-cell--clickable{ + padding-left: 0 !important; + padding-left: 0.16rem; + } + /deep/.van-collapse-item__title{ + padding-left: 0 !important; + padding-left: 0.16rem; + } + /deep/.van-collapse-item__content { + padding: 0.32rem; + color: #969799; + font-size: 0.26rem; + line-height: 1.5; + background-color: @c-back; + } + } +</style> \ No newline at end of file diff --git a/src/views/order/settle.vue b/src/views/order/settle.vue new file mode 100644 index 0000000..be80e8b --- /dev/null +++ b/src/views/order/settle.vue @@ -0,0 +1,301 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-22 11:36:16 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-06-23 13:42:58 + * @Description: 提前结清 +--> +<template> + <div class="settle-page"> + <v-navbar title="提前结清" :back="'/order/order-detail?id='+$route.query.id"></v-navbar> + <div class="fenqi-info-box"> + <div class="info-top"> + <div class="box"> + <img src="../../../static/img/pic.png" alt /> + <span>分期信息</span> + </div> + </div> + <div class="mation-box"> + <h-cell v-model="order.insAmt" readonly label="分期金额"></h-cell> + <h-cell v-model="order.insTerm" readonly label="分期期数"></h-cell> + </div> + <div class="v-collapse-box"> + <van-collapse v-model="activeNames"> + <van-collapse-item name="1"> + <template #title> + <div class="cell-box" @click="getActive"> + <div class="left"> + <span>当前应还金额</span> + <div ref="jiantou" class="jiantou-you"></div> + </div> + <div class="right"> + <p>¥{{order.curTotalAmt}}</p> + </div> + </div> + </template> + <div class="active-box"> + <div class="text-box"> + <span>当期应还:</span> + <span>{{order.curRpyAmt}}</span> + </div> + <div class="text-box"> + <span>往期应还:</span> + <span>¥{{order.pastRpyAmt}}</span> + </div> + </div> + </van-collapse-item> + </van-collapse> + </div> + <div class="mation-box"> + <h-cell v-model="order.remainAmt" readonly label="剩余本金"></h-cell> + <h-cell v-model="order.settleFeeAmt" readonly label="提前结清手续费"></h-cell> + </div> + </div> + <div class="footer-box"> + <div class="text-box"> + <p>提前结清会产生对应的手续费</p> + <p>提前结清手续费=剩余本金 * 提前结清费率</p> + </div> + <div class="play-box"> + <p> + <span>应还总额:</span> + <span>¥{{order.totalAmt}}</span> + </p> + <button class="btn" @click="doPay">确认支付</button> + </div> + </div> + </div> +</template> +<script> +import Vue from "vue"; +import { Collapse, CollapseItem } from "vant"; + +Vue.use(Collapse); +Vue.use(CollapseItem); +export default { + data() { + return { + active: false, + activeNames: [], + repayAmt:'',//结清金额 + order:{},//订单相关信息 + }; + }, + created() { + this.init(); + }, + methods: { + /**初始化**/ + init() { + this.$api.initPreClose({ + orderId:this.$route.query.id + }).then(res=>{ + this.order = res.body || [] + this.order.insAmt = '¥'+this.order.insAmt + this.order.insTerm = this.order.insTerm+'期' + this.order.settleFeeAmt = '¥'+this.order.settleFeeAmt + this.order.remainAmt = '¥'+this.order.remainAmt + }) + }, + /**展开控制**/ + getActive() { + this.active = !this.active; + if (this.active) { + this.$refs.jiantou.style.transform = "rotate(90deg)"; + this.$refs.jiantou.style.transition = "transform 0.3s linear"; + //this.$refs.jiantou.style.top = "8px"; + } else { + this.$refs.jiantou.style.transform = "rotate(0deg)"; + this.$refs.jiantou.style.transition = "transform 0.3s linear"; + } + }, + /**确认支付**/ + doPay(){ + this.$api.preClose({ + orderId:this.$route.query.id, + repayAmt:this.order.totalAmt + }).then(res=>{ + //支付跳转支付宝结果页面 + this.$router.push({ + path:'/order/pay-result', + query:{ + orderId:this.$route.query.id, + model:2 //1-主动还款行为 2-提前结清行为 + } + }) + }) + + }, + } +}; +</script> +<style lang="less" scoped> +.settle-page { + & { + min-height: 100vh; + background: @c-back; + } + /deep/.van-collapse-item__content { + padding: 0; + } + /deep/.van-cell__right-icon { + margin-left: 0.1rem; + color: #969799; + display: none; + } + /deep/.van-cell--clickable { + cursor: pointer; + padding: 0 26px; + } + /deep/.van-hairline--top-bottom::after, + .van-hairline-unset--top-bottom::after { + border-width: 0; + } + .fenqi-info-box { + & { + background: #fff; + margin-top: 10px; + } + .info-top { + font-size: 15px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + padding: 0 10px; + .box { + border-bottom: 1px solid #e6e6e6; + padding: 17px 6px; + } + img { + width: 6px; + height: 13px; + } + } + .mation-box { + & { + padding: 0 26px; + } + div:last-of-type { + border: 0; + } + } + .cell-box { + & { + padding: 0.2rem 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #eeeeee; + } + .left, + .right { + display: inline-block; + width: 49%; + } + .right { + text-align: right; + p{ + color: rgba(153, 153, 153, 1); + } + } + .left { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: #666666; + position: relative; + // span::after{ + // content: ''; + // position: absolute; + // top: 5px; + // left: 90px; + // width: 0; + // height: 0; + // border: 6px solid transparent; + // border-left-color: #5194fe; + // } + .jiantou-you { + position: absolute; + top: 5px; + left: 90px; + width: 0; + height: 0; + border: 6px solid transparent; + border-left-color: #5194fe; + } + } + } + .active-box { + background: @c-back; + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + padding: 15px 22px; + .text-box { + display: inline-block; + width: 50%; + color: rgba(153, 153, 153, 1); + font-weight: 500; + margin: 6px 0; + span:nth-of-type(2) { + color: rgba(51, 51, 51, 1); + } + } + } + } + .footer-box { + & { + position: fixed; + bottom: 0; + } + .text-box { + & { + height: 39px; + width: 100vw; + text-align: center; + } + p { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + line-height: 15px; + } + } + .play-box { + & { + width: 100vw; + height: 49px; + background: #fff; + position: relative; + line-height: 49px; + box-sizing: border-box; + padding-left: 16px; + } + .btn { + width: 120px; + height: 49px; + background: rgba(81, 148, 254, 1); + color: #fff; + border: 0; + outline: none; + position: absolute; + top: 0; + right: 0; + } + p { + span:nth-of-type(1) { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + span:nth-of-type(2) { + font-size: 16px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(255, 102, 102, 1); + } + } + } + } +} +</style> \ No newline at end of file diff --git a/src/views/order/settlementEarly.vue b/src/views/order/settlementEarly.vue new file mode 100644 index 0000000..d91cb0d --- /dev/null +++ b/src/views/order/settlementEarly.vue @@ -0,0 +1,352 @@ +<!-- + * @Author: zxq + * @Date: 2022-06-14 11:03:17 + * @LastEditors: zxq + * @LastEditTime: 2022-06-16 10:06:39 + * @Description: Description + * @FilePath: \edu_ins_client\src\views\order\settlementEarly.vue +--> +<template> + <div class="settlement_early"> + <v-navbar title="全部应还"></v-navbar> + <div class="settle_box"> + <div>结清待支付总额(元)</div> + <div>{{ order.totalAmt }}</div> + <div>服务费{{ order.settleFeeAmt }}元</div> + <div> + <button class="btn-jq" @click="goSettle">提前结清</button> + </div> + </div> + + <div class="info-top"> + <div class="box"> + <img src="../../../static/img/pic.png" alt /> + <span>未还期数</span> + </div> + <div> + <van-collapse v-model="activeNames" style="width:100%"> + <van-collapse-item style="width:100%" :name="item.seqNo" v-for="item in repayPlans" :key="item.seqNo" ref="keyplan"> + <template #title> + <div class="tit-box"> + <!-- <van-checkbox @click.prevent.stop.native="onClick(item)" v-model="item.checked" :name="item.seqNo" :disabled="item.canRepay == 0 ? true : false">第{{ item.seqNo }}期</van-checkbox> --> + <!-- <div>应还总额</div> --> + <div style="width:150px;"> + <span>{{item.rpyDay}}账单</span> + </div> + <div>¥{{ item.totalAmt }}</div> + <div v-if="item.rpySts == 1"> + <p style="line-height: 16px;">已还</p> + </div> + </div> + </template> + <!-- 内容 --> + <div class="content-box"> + <p> + <span>应还本金</span> + <span>¥{{ item.rpyAmt }}</span> + </p> + <p> + <span>应还服务费</span> + <span>¥{{ item.rpySerFee }}</span> + </p> + <p> + <span>应还滞纳金</span> + <span>¥{{ item.rpyLateFee }}</span> + </p> + <p> + <span>应还总额</span> + <span>¥{{ item.totalAmt }}</span> + </p> + <p> + <span>应还日期</span> + <span>{{ item.rpyDay }}</span> + </p> + </div> + </van-collapse-item> + </van-collapse> + </div> + <div class="text-box"> + <p>提前结清会产生对应的手续费</p> + <p>提前结清手续费=剩余本金 * 提前结清费率</p> + </div> + </div> + <van-popup v-model="yzmShow"> + <div class="yzmbox"> + <van-icon name="cross" size="18" class="yzmbox-close" @click="yzmShow = false" /> + <p style="font-size:16px;color:#000;">请输入短信验证码</p> + <div class="yzmbox-contnet"> + <div class="yzmbox-contnet-yzm"> + <span>将发送到手机号:</span> + <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/,'$1****$2')}}</span> + </div> + </div> + <div class="yzmbox-contnet-get"> + <input type="text" v-model="yzmVal" placeholder="请输入验证码"/> + <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{yzmText}}</span> + </div> + <van-button class="showbtn" block round @click="yzmYes">确认</van-button> + </div> + </van-popup> + </div> +</template> + +<script> +import { Collapse, CollapseItem ,Button,Popup,Icon} from "vant"; +import { mapState } from 'vuex'; +Vue.use(Collapse); +Vue.use(Button); +Vue.use(Popup); +Vue.use(Icon); +Vue.use(CollapseItem); +export default { + data() { + return { + order: {}, + repayPlans: [], + activeNames: ["1"], + yzmShow:false, + yzmVal:'', + yzmText:'发送验证码', + Open: true, //倒计时开关 + }; + }, + created() { + this.init(); + }, + computed: { + ...mapState(['userinfo']) + }, + methods: { + init() { + this.$api.initPreClose({ orderId: this.$route.query.id }).then(({ body }) => { + this.order = body.preSettInfo || {}; + this.repayPlans = body.repayPlans; + }); + }, + goSettle() { + this.yzmShow = true; + // this.$api.preClose({ + // orderId:this.$route.query.id, + // repayAmt:this.order.totalAmt + // }).then(res=>{ + // //支付跳转支付宝结果页面 + // this.$router.push({ + // path:'/order/pay-result', + // query:{ + // orderId:this.$route.query.id, + // model:2 //1-主动还款行为 2-提前结清行为 + // } + // }) + // }) + }, + yzmYes() { + if (this.yzmVal == "" || this.yzmVal == null) { + this.$notify({ type: "danger", message: "验证码为空!" }); + } else { + this.$api.preClose({orderId: parseInt(this.$route.query.id),verCode:this.yzmVal}).then(({body}) => { + this.yzmShow = false; + clearInterval(this.timer); + this.$router.push({ + path:'/order/pay-result', + query:{ + orderId:this.$route.query.id, + model:2 //1-主动还款行为 2-提前结清行为 + } + }) + }); + + } + }, + getYzm(){ + let sendParams = {mblNo: this.userinfo.mblNo, verCodeType: 20}; + if (this.Open) { + this.$api.getVerCode(sendParams).then((res) => { + this.Open = false; + let num = 60; + this.yzmText = num + '秒后重发'; + let _this = this; + _this.timer = setInterval(() => { + num--; + if (num === 0) { + clearInterval( _this.timer); + _this.Open = true; + _this.yzmText = '重新发送'; + } else { + _this.yzmText = num + '秒后重发'; + } + }, 1000); + }).catch(() => { + this.Open = true; + }); + } + }, + }, +}; +</script> + +<style scoped lang="less"> +.settlement_early { + background-color: #f5f5f7; + padding-bottom: 50px; +} +.settle_box { + width: 100%; + padding: 16px 0; + box-sizing: border-box; + text-align: center; + background-color: #fff; + > div { + margin-bottom: 16px; + &:first-child { + font-size: 16px; + } + &:nth-child(2){ + font-size: 18px; + font-weight: bold; + } + } +} +.btn-jq { + width: 155px; + height: 44px; + background: #5194fe; + border: 1px solid rgba(81, 148, 254, 1); + border-radius: 22px; + outline: none; + color: #fff; + margin-right: 13px; +} +.info-top { + font-size: 15px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + padding: 0 10px; + .box { + border-bottom: 1px solid #e6e6e6; + padding: 17px 6px; + } + img { + width: 6px; + height: 13px; + } +} +.tit-box { + & { + display: flex; + z-index: 100; + } + div:nth-of-type(1) { + width: 80px; + } + div:nth-of-type(2) { + width: 70px; + font-size: 13px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + div:nth-of-type(3) { + //width: 80px; + font-size: 16px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(51, 51, 51, 1); + } + div:nth-of-type(4) { + margin-left: 12px; + text-align: center; + p { + display: inline-block; + width: 40px; + height: 16px; + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + background: rgba(240, 246, 255, 1); + border: 1px solid rgba(81, 148, 254, 1); + border-radius: 3px; + color: #5194fe; + } + } +} +.content-box { + & { + color: #999; + } + p { + margin-top: 11px; + span { + display: inline-block; + width: 49%; + } + span:nth-of-type(2) { + text-align: right; + } + } +} +.text-box { + margin-top: 16px; + & { + height: 39px; + width: 100vw; + text-align: center; + } + p { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + line-height: 15px; + } +} + .yzmbox { + box-sizing: border-box; + width: 280px; + height: 225px; + position: relative; + overflow: hidden; + .flex("", center, center, column); + text-align: center; + border-radius: 6px; + background: #fff; + padding-top: 30px; + .van-button--block{ + width: 90%; + margin-top: 15px; + } + &-close { + color: #999; + font-size: 16px; + position: absolute; + right: 8px; + top: 8px; + } + &-contnet { + margin-top: 11px; + color: #999; + font-size: 14px; + &-yzm { + .flex(center, center); + span { + font-size: 14px; + } + } + &-get { + width: 80%; + margin: 0 10%; + margin-top: 15px; + .flex(space-between, center); + input { + border: none; + width: 45%; + background: #fff; + height: 30px; + } + &-yzm { + color: @c-default; + } + } + } + } +</style> diff --git a/src/views/personal/personal-center.vue b/src/views/personal/personal-center.vue new file mode 100644 index 0000000..cca9d3b --- /dev/null +++ b/src/views/personal/personal-center.vue @@ -0,0 +1,186 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-05-21 16:03:42 + * @LastEditors: zxq + * @LastEditTime: 2022-06-15 09:41:41 + * @Description: +--> +<template> + <div class="personal-center-page"> + <div class="top-box"> + <div class="top-img-box"> + <img :src="mation.headimgurl" alt="头像" /> + </div> + <div class="top-info-box"> + <p>{{mation.nickname}}</p> + <p>{{userinfo.mblNo}}</p> + </div> + <div :class="{'fn-box':true,'fn_box1':!userinfo.hasBankCard,'fn_box':userinfo.hasBankCard}"> + <div @click="goMyOrder"> + <img src="../../../static/img/order.png" alt /> + <p :style="{color:overStatus>0?'red':'#000'}">我的订单</p> + </div> + <div @click="goMybankCard" v-if='userinfo.hasBankCard'> + <img src="../../../static/img/bankCard.png" alt /> + <p>我的银行卡</p> + </div> + <div @click="logout"> + <img src="../../../static/img/logout.png" alt/> + <p @click="logout">退出登录</p> + </div> + </div> + </div> + <van-dialog className="dio-box" confirmButtonColor="#333" cancelButtonColor="#666666" @confirm="onConfirm" v-model="show" show-cancel-button> + <div class="box"> + <p>确定退出登录吗?</p> + </div> + </van-dialog> + </div> +</template> +<script> +import Vue from 'vue'; +import { Dialog } from 'vant'; +import { mapState } from 'vuex'; + + +Vue.use(Dialog); +export default { + data() { + return { + show:false, + overStatus:0 + }; + }, + computed:{ + ...mapState(['userinfo']), + mation(){ + if(localStorage.edu_ins_client_userMation){ + return JSON.parse(localStorage.edu_ins_client_userMation) + } + } + }, + created(){ + this.getBaseInfo() + }, + methods: { + goMyOrder() { + this.$router.push("/order/my-order"); + }, + logout(){ + this.show = true + }, + goMybankCard(){ + this.$router.push('/bankCard/index') + }, + onConfirm(){ + this.$api.logout().then(res=>{ + //清除openId session等存储,跳转登录页面 + localStorage.clear() + sessionStorage.clear() + this.$router.push('/') + }) + }, + getBaseInfo(){ + this.$api.baseInfo().then(({body})=>{ + this.overStatus = body.overStatus; + }) + } + + } +}; +</script> +<style lang="less" scoped> +.personal-center-page { + & { + height: 100vh; + background: #fff; + } + .top-box { + width: 100vw; + height: 205px; + background-image: url("../../../static/img/bgwd.png"); + background-size: cover; + text-align: center; + box-sizing: border-box; + padding-top: 26px; + position: relative; + .top-img-box { + display: inline-block; + width: 75px; + height: 75px; + margin-bottom: 16px; + + img { + width: 100%; + height: 100%; + border-radius: 50%; + } + } + .top-info-box { + p:nth-of-type(1) { + font-size: 16px; + font-family: PingFang SC; + font-weight: bold; + color: rgba(255, 255, 255, 1); + margin-bottom: 10px; + } + p:nth-of-type(2) { + font-size: 16px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(255, 255, 255, 1); + } + } + .fn-box { + & { + width: 343px; + height: 90px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 10px 0px rgba(26, 94, 216, 0.12); + border-radius: 8px; + position: absolute; + left: 50%; + top: 173px; + transform: translateX(-50%); + display: flex; + justify-content: space-between; + align-items: center; + } + div { + padding-top: 21px; + img { + width: 22px; + height: 22px; + margin-bottom: 7px; + } + p { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(0, 0, 0, 1); + } + } + } + } + .fn_box{ + div { + width: 30%; + } + } + .fn_box1{ + div { + width: 50%; + } + } + .dio-box{ + width:280px; + //height:150px; + background:rgba(255,255,255,1); + border-radius:5px; + .box{ + line-height: 80px; + text-align: center; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/user/agreement.vue b/src/views/user/agreement.vue new file mode 100644 index 0000000..35c1926 --- /dev/null +++ b/src/views/user/agreement.vue @@ -0,0 +1,115 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-06-23 16:31:23 + * @LastEditors: 小明丶 + * @LastEditTime: 2020-07-01 11:28:29 + * @Description: +--> +<template> + <div class="pdf" v-show="fileType === 'pdf'"> + <v-navbar :title="$route.query.tit" :back='backUrl'></v-navbar> + <!-- <embed :src="pdfUrl" :style="{height: '100vh'}" style="width: 100%" /> --> + <pdf + :src="pdfSrc" + :page="currentPage" + @num-pages="pageCount=$event" + @page-loaded="currentPage=$event" + @loaded="loadPdfHandler" + ></pdf> + <div class="arrow"> + + <span @click="changePdfPage(0)" class="turn" :class="{grey: currentPage==1}">上一页</span> + {{currentPage}} / {{pageCount}} + + <span @click="changePdfPage(1)" class="turn" :class="{grey: currentPage==pageCount}">下一页</span> + </div> + </div> +</template> +<script> +import pdf from "vue-pdf"; +import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js' +export default { + metaInfo: { + meta: [ + { charset: "utf-8" }, + { + name: "viewport", + content: + "width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=2,user-scalable=yes" + } + ] + }, + components: { pdf }, // props: ['pdfSrc'], + data() { + return { + currentPage: 0, // pdf文件页码 + pageCount: 0, // pdf文件总页数 + fileType: "pdf", // 文件类型 + pdfSrc: "" // pdf文件地址 + }; + }, + computed:{ + backUrl(){ + if(this.$route.query.from == 'login'){ + return "/login?whichPage=1" + }else if(this.$route.query.from == 'sig'){ + return "/order-handling/contract-signing?whichPage=1" + } + } + }, + created() { + //this.pdfUrl = pdf.createLoadingTask({ url: data.url, CMapReaderFactory }) + //this.pdfSrc = this.$route.query + // 有时PDF文件地址会出现跨域的情况,这里最好处理一下 + //this.pdfUrl = './static/web/viewer.html?' + //this.pdfUrl = './static/web/viewer.html?file=' + 'https://t.finlean.com/jttech/M00/01/04/rBEX617ytmKAEKtoAAb34lu1n7Q194.pdf', +'PDF' + this.pdfSrc = pdf.createLoadingTask({url:this.$route.query.agrUrl,CMapReaderFactory}); + }, + methods: { + // 改变PDF页码,val传过来区分上一页下一页的值,0上一页,1下一页 + changePdfPage(val) { + // console.log(val) + if (val === 0 && this.currentPage > 1) { + this.currentPage--; + //console.log(this.currentPage); + } + if (val === 1 && this.currentPage < this.pageCount) { + this.currentPage++; + //console.log(this.currentPage); + } + }, // pdf加载时 + loadPdfHandler(e) { + this.currentPage = 1; // 加载的时候先加载第一页 + } + } +}; +</script> + +<style lang="less" scoped> + .pdf{ + canvas{ + height: 90vh; + } + .arrow{ + &{ + position: fixed; + width: 100%; + height: 50px; + text-align: center; + line-height: 50px; + background: #fcfcfc; + bottom: 0; + span:nth-of-type(1){ + display: inline-block; + width: 30vw; + text-align: left; + } + span:nth-of-type(2){ + display: inline-block; + width: 30vw; + text-align: right; + } + } + } + } +</style> \ No newline at end of file diff --git a/src/views/user/agreement2.vue b/src/views/user/agreement2.vue new file mode 100644 index 0000000..acd75a9 --- /dev/null +++ b/src/views/user/agreement2.vue @@ -0,0 +1,113 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-06-23 16:31:23 + * @LastEditors: zxq + * @LastEditTime: 2022-06-16 16:43:01 + * @Description: +--> +<template> + <div class="pdf" v-show="fileType === 'pdf'"> + <v-navbar :title="$route.query.tit"></v-navbar> + <!-- <c-pdf pdfurl="http://t.finlean.com/jttech/M00/01/04/rBEX617ytmKAEKtoAAb34lu1n7Q194.pdf"></c-pdf> --> + <embed :src="pdfUrl" :style="{height: '100vh'}" style="width: 100%" /> + <!-- <pdf + :src="pdfSrc" + :page="currentPage" + @num-pages="pageCount=$event" + @page-loaded="currentPage=$event" + @loaded="loadPdfHandler" + ></pdf> + <div class="arrow"> + + <span @click="changePdfPage(0)" class="turn" :class="{grey: currentPage==1}">上一页</span> + {{currentPage}} / {{pageCount}} + + <span @click="changePdfPage(1)" class="turn" :class="{grey: currentPage==pageCount}">下一页</span> + </div> --> + </div> +</template> +<script> +// import CPdf from "../../components/pdf/cpdf"; +//import pdf from "vue-pdf"; +// import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js' +export default { + metaInfo: { + meta: [ + { charset: "utf-8" }, + { + name: "viewport", + content: + "width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=2,user-scalable=yes" + } + ] + }, + components: { CPdf }, // props: ['pdfSrc'], + data() { + return { + currentPage: 0, // pdf文件页码 + pageCount: 0, // pdf文件总页数 + fileType: "pdf", // 文件类型 + pdfSrc: "" // pdf文件地址 + }; + }, + created() { + //this.pdfUrl = pdf.createLoadingTask({ url: data.url, CMapReaderFactory }) + //this.pdfSrc = this.$route.query + // 有时PDF文件地址会出现跨域的情况,这里最好处理一下 + //this.pdfUrl = './static/web/viewer.html?' + + //this.pdfUrl = './static/web/viewer.html?file=' + this.$route.query.url, +'PDF' + this.pdfUrl = './static/web/viewer.html?file=' + 'https://t.finlean.com/jttech/M00/01/04/rBEX617ytmKAEKtoAAb34lu1n7Q194.pdf', +'PDF' + + //this.pdfSrc = pdf.createLoadingTask({url:this.$route.query.agrUrl,CMapReaderFactory}); + }, + + + methods: { + // 改变PDF页码,val传过来区分上一页下一页的值,0上一页,1下一页 + changePdfPage(val) { + // console.log(val) + if (val === 0 && this.currentPage > 1) { + this.currentPage--; + //console.log(this.currentPage); + } + if (val === 1 && this.currentPage < this.pageCount) { + this.currentPage++; + //console.log(this.currentPage); + } + }, // pdf加载时 + loadPdfHandler(e) { + this.currentPage = 1; // 加载的时候先加载第一页 + } + } +}; +</script> + +<style lang="less" scoped> + .pdf{ + canvas{ + height: 90vh; + } + .arrow{ + &{ + position: fixed; + width: 100%; + height: 50px; + text-align: center; + line-height: 50px; + background: #fcfcfc; + bottom: 0; + span:nth-of-type(1){ + display: inline-block; + width: 30vw; + text-align: left; + } + span:nth-of-type(2){ + display: inline-block; + width: 30vw; + text-align: right; + } + } + } + } +</style> \ No newline at end of file diff --git a/src/views/user/front-login.vue b/src/views/user/front-login.vue new file mode 100644 index 0000000..6f57fbf --- /dev/null +++ b/src/views/user/front-login.vue @@ -0,0 +1,73 @@ +<!-- + * @Author: 小明丶 + * @Date: 2020-06-04 09:55:50 + * @LastEditors: zxq + * @LastEditTime: 2022-07-12 11:01:46 + * @Description: +--> +<template> + <div></div> +</template> +<script> +import { mapActions } from "vuex"; +import Vue from "vue"; +import { RadioGroup, Radio } from "vant"; +import { Checkbox, CheckboxGroup } from "vant"; +import { GoWeChat } from "../../utils/wechat"; + +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +Vue.use(Radio); +Vue.use(RadioGroup); + +export default { + data() { + return {}; + }, + created() { + var _this = this; + // localStorage.edu_ins_client_openId = 'oJbj21YwUatdNaYf3iEPwwGtWuUg' + // localStorage.edu_ins_client_userMation = '{"openid":"oGGPLs2yZ5tiBnB9iYcZrV60DoqM","nickname":"乌卡拉卡","sex":"1","province":"四川","city":"成都","country":"中国","headimgurl":"http://thirdwx.qlogo.cn/mmopen/vi_32/sYsBGsncFia9ql7K5stRibY61BSjDkPkNQFiasqdHiczTwbnX7JeZhcrp49RZD9icFTDLd2JqUjIrHHVw0f52kE4Uibw/132"}' + // this.$router.push("/login"); + //本地是否存储有openId,有就调用openId登录 + if (localStorage.edu_ins_client_openId && localStorage.edu_ins_client_openId != undefined) { + //this.$router.push("/login"); + this.openIdLogin({ + vm: _this, + openId: localStorage.edu_ins_client_openId + }); + } else { + this.loginBut(); + } + }, + methods: { + ...mapActions(["login", "getVercode", "openIdLogin"]), + //截取code值 + getUrlCode(name) { + return ( + decodeURIComponent( + (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec( + location.href + ) || [, ""])[1].replace(/\+/g, "%20") + ) || null + ); + }, + //登录验证 + loginBut() { + // 无openId跳转授权,有就执行openId登录 + //if (!localStorage.edu_ins_client_openId || localStorage.edu_ins_client_openId == undefined) { + let url = location.host + //console.log(location.href) + //console.log("准备跳转"); wx594ab33e0466eccf + //var str = encodeURIComponent("https://t.finlean.com/aic_cus/#/login"); + var str = encodeURIComponent(`https://${url}/aic_cus/#/login`); + //goWeChat("wx9bfa36fe433b079a", str); //四个参数appid-公众号id,redirect_uri-回调链接,scope-授权模式,state-重定向将会带上的state参数 + var fn = new GoWeChat("wx581e3447c6cad0d6", str); + fn.gocontract() + // } else { + + // } + } + } +}; +</script> diff --git a/src/views/user/login.vue b/src/views/user/login.vue new file mode 100644 index 0000000..735ffa8 --- /dev/null +++ b/src/views/user/login.vue @@ -0,0 +1,359 @@ +<!-- + * @Author: 小明丶 + * @Date: 2019-08-15 10:20:56 + * @LastEditors: zxq + * @LastEditTime: 2022-06-16 11:34:10 + * @Description: 登录页面 + --> +<template> + <div class="login-page"> + <div class="logo-box"> + <div class="logo-img-box"> + <img src="../../../static/img/logo.png" alt="logo" class="logo-pic" /> + </div> + <p>小纷助学</p> + </div> + <h-ipt + icon="iconxingming" + :maxlength="11" + type="text" + :getClose="true" + v-model="mblNo" + placeholder="请输入手机号" + class="myipt" + ></h-ipt> + <h-ipt icon="iconmima" :maxlength="6" v-model="verCode" placeholder="请输入短信验证码" class="myiptTwo"> + <template slot="right"> + <div> + <button + class="getcode" + :disabled="btnDis" + :style="btnDis?'color:#E6E6E6':'color:#62A0FF'" + @click="sendCode" + >{{btnText}}</button> + </div> + </template> + </h-ipt> + <div class="text-box"> + <van-checkbox v-model="checked" shape="round" icon-size="16px"> + <template #default> + <p class="xieyi"> + <span>我已阅读并同意</span> + <span @click.stop="showAgree(1)">《隐私政策》</span> + <span @click.stop="showAgree(2)">《用户注册服务协议》</span> + </p> + </template> + </van-checkbox> + </div> + <div class="btn-box"> + <button @click="loginBut">登录</button> + </div> + <!-- <div class="idcard-box"> + <upLoadIdCard :cardBack="idCardMation.idBackUrl" :cardFont="idCardMation.idFrontUrl"></upLoadIdCard> + </div> --> + </div> +</template> + +<script> +import { mapActions } from "vuex"; +import Vue from "vue"; +import { RadioGroup, Radio } from "vant"; +import { Checkbox, CheckboxGroup } from "vant"; +import { Popup } from "vant"; +import { Icon } from "vant"; +Vue.use(Icon); +Vue.use(Popup); +Vue.use(Checkbox); +Vue.use(CheckboxGroup); +Vue.use(Radio); +Vue.use(RadioGroup); + +export default { + data() { + return { + checked: false, //协议勾选 + radio: "", + //数据 + // 18108048791 1234qwer + mblNo: "", //用户手机号 + verCode: "", //验证码 + openId: 456, //微信openId + //点击显示密码为明文,眼睛的样式也是根据这个来判断的 + pwdType: "password", + test: false, + loginImg: "static/img/logo.png", + timer: "", + showSend: true, + btnText: "发送验证码", + btnDis: false, + miao: 60, + code: "", + ShowAgreen: false, //协议展示框 + Agreend: "", //协议 + }; + }, + created() { + // 存储倒计时 + if(this.$route.query.whichPage && sessionStorage.beforeDate){ + this.miao = Math.round(new Date().getTime()/1000 - sessionStorage.beforeDate/1000) + if(this.miao < 60){ + this.getSecond(60 - this.miao) + }else{ + this.miao = 60 + } + } + if(sessionStorage.mblNo){ + this.mblNo = sessionStorage.mblNo + } + if(sessionStorage.verCode){ + this.verCode = sessionStorage.verCode + } + + this.code = this.getUrlCode("code"); + console.log('this.code:',this.code) + console.log('this.$route.query.whichPage:',this.$route.query.whichPage) + if (this.code && !this.$route.query.whichPage) { + this.$api.wechatUserInfo({ code: this.code}).then(res => { + console.log('res.body.openid:',res.body.openid) + localStorage.edu_ins_client_openId = res.body.openid; + localStorage.edu_ins_client_userMation = JSON.stringify(res.body); + }); + } + }, + methods: { + ...mapActions(["login", "getVercode", "openIdLogin"]), + //截取code值 + getUrlCode(name) { + return ( + decodeURIComponent( + (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec( + location.href + ) || [, ""])[1].replace(/\+/g, "%20") + ) || null + ); + }, + //登录验证 + loginBut() { + let v = this.$tool; + if (v.checkValEmpty(this.mblNo)) { + v.toast("请输入手机号"); + return; + } + if (!v.checkPhone(this.mblNo)) { + v.toast("请输入正确手机号"); + return; + } + if (v.checkValEmpty(this.verCode)) { + v.toast("请输入验证码"); + return; + } + if (!this.checked) { + v.toast("请确认并勾选用户协议"); + return; + } + this.login({ + vm: this, + mblNo: this.mblNo, + verCode: this.verCode, + openId: localStorage.edu_ins_client_openId + }); + }, + sendCode() { + let v = this.$tool; + if (v.checkValEmpty(this.mblNo)) { + v.toast("请输入手机号"); + return; + } + if (!v.checkPhone(this.mblNo)) { + v.toast("请输入正确手机号"); + return; + } + this.$api.getVerCode({ + mblNo: this.mblNo, + verCodeType: 1 + }).then(res=>{ + sessionStorage.beforeDate = new Date().getTime() + this.getSecond(60); + }) + // this.$store.dispatch("getVercode", { + // vm: this, + // mblNo: this.mblNo, + // verCodeType: 1 + // }); + + }, + //发送验证码计时函数 + getSecond(wait) { + let _this = this; + let _wait = wait; + if (wait == 0) { + this.btnText = "获取验证码"; + wait = _wait; + this.btnDis = false; + clearTimeout(this.timer) + } else { + this.btnDis = true; + this.btnText = "验证码(" + wait + "s)"; + wait--; + this.timer = setTimeout(function() { + _this.getSecond(wait); + }, 1000); + } + }, + // 展示协议 + showAgree(which) { + sessionStorage.mblNo = this.mblNo + sessionStorage.verCode = this.verCode + if(which == 1){ + this.$router.push({ + path:'/agreement', + query:{ + from:'login', + tit:'隐私协议', + agrUrl:'./static/ys.pdf' + } + }) + } + if(which == 2){ + this.$router.push({ + path:'/agreement', + query:{ + from:'login', + tit:'用户注册服务协议', + agrUrl:'./static/zc.pdf' + } + }) + } + }, + }, + + beforeRouteLeave (to, from, next) { + // ... + + clearTimeout(this.timer) + next() + } +}; +</script> +<style lang="less" scoped> +.login-page { + padding-top: 42px; + box-sizing: border-box; + .logo-box { + & { + text-align: center; + font-size: 18px; + margin-bottom: 30px; + } + img { + width: 55px; + height: 83px; + } + .logo-img-box { + display: inline-block; + width: 100px; + height: 100px; + background: rgba(255, 255, 255, 1); + box-shadow: 0px 0px 12px 0px rgba(34, 105, 209, 0.2); + border-radius: 15px; + box-sizing: border-box; + padding-top: 11px; + } + p { + margin-top: 16px; + font-size: 17px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + } + .myipt { + margin-top: 51px; + } + .myiptTwo { + margin-top: 20px; + margin-bottom: 17px; + } + .getcode { + font-size: 13px; + font-family: PingFang SC; + font-weight: 500; + text-decoration: underline; + color: rgba(98, 160, 255, 1); + outline: none; + height: 30px; + border: 0; + background: #fff; + } + .text-box { + & { + width: 100%; + padding: 0 10%; + box-sizing: border-box; + } + .xieyi { + span:nth-of-type(1) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); + } + span:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: #5194fe; + } + span:nth-of-type(3) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: #5194fe; + } + } + } + .btn-box { + & { + width: 100%; + text-align: center; + margin-top: 37px; + } + button { + width: 80%; + height: 44px; + background: linear-gradient( + 90deg, + rgba(82, 142, 255, 1), + rgba(105, 167, 255, 1) + ); + box-shadow: 0px 8px 15px 0px rgba(91, 152, 255, 0.28); + border-radius: 22px; + outline: none; + border: 0; + color: #fff; + } + } + .agreenBox { + width: 80vw; + height: 70vh; + padding: 60px 20px 30px 20px; + position: relative; + } + + .agreen-html { + width: 100%; + height: 100%; + overflow: scroll; + box-sizing: border-box; + } + + .close-agreen { + .lh(30px); + .flex(center, center); + + .van-icon { + font-size: @font-16; + } + } +} +</style> \ No newline at end of file diff --git a/static/LICENSE b/static/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/static/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/static/bankPdf/ABC.pdf b/static/bankPdf/ABC.pdf new file mode 100644 index 0000000..23b5408 --- /dev/null +++ b/static/bankPdf/ABC.pdf Binary files differ diff --git a/static/bankPdf/ADC.pdf b/static/bankPdf/ADC.pdf new file mode 100644 index 0000000..23b5408 --- /dev/null +++ b/static/bankPdf/ADC.pdf Binary files differ diff --git a/static/bankPdf/BOC.pdf b/static/bankPdf/BOC.pdf new file mode 100644 index 0000000..e44f6e4 --- /dev/null +++ b/static/bankPdf/BOC.pdf Binary files differ diff --git a/static/bankPdf/CCB.pdf b/static/bankPdf/CCB.pdf new file mode 100644 index 0000000..9344934 --- /dev/null +++ b/static/bankPdf/CCB.pdf Binary files differ diff --git a/static/bankPdf/CEB.pdf b/static/bankPdf/CEB.pdf new file mode 100644 index 0000000..4cd0ef3 --- /dev/null +++ b/static/bankPdf/CEB.pdf Binary files differ diff --git a/static/bankPdf/CITIC.pdf b/static/bankPdf/CITIC.pdf new file mode 100644 index 0000000..c822932 --- /dev/null +++ b/static/bankPdf/CITIC.pdf Binary files differ diff --git a/static/bankPdf/CMB.pdf b/static/bankPdf/CMB.pdf new file mode 100644 index 0000000..2c3d97c --- /dev/null +++ b/static/bankPdf/CMB.pdf Binary files differ diff --git a/static/bankPdf/CMBC.pdf b/static/bankPdf/CMBC.pdf new file mode 100644 index 0000000..1b5ad6a --- /dev/null +++ b/static/bankPdf/CMBC.pdf Binary files differ diff --git a/static/bankPdf/GDB.pdf b/static/bankPdf/GDB.pdf new file mode 100644 index 0000000..fd3bee1 --- /dev/null +++ b/static/bankPdf/GDB.pdf Binary files differ diff --git a/static/bankPdf/ICBC.pdf b/static/bankPdf/ICBC.pdf new file mode 100644 index 0000000..0e13995 --- /dev/null +++ b/static/bankPdf/ICBC.pdf Binary files differ diff --git a/static/bankPdf/PAB.pdf b/static/bankPdf/PAB.pdf new file mode 100644 index 0000000..8e73599 --- /dev/null +++ b/static/bankPdf/PAB.pdf Binary files differ diff --git a/static/bankPdf/PSBC.pdf b/static/bankPdf/PSBC.pdf new file mode 100644 index 0000000..a69637a --- /dev/null +++ b/static/bankPdf/PSBC.pdf Binary files differ diff --git a/static/bankPdf/SHB.pdf b/static/bankPdf/SHB.pdf new file mode 100644 index 0000000..5bcb930 --- /dev/null +++ b/static/bankPdf/SHB.pdf Binary files differ diff --git a/static/bankPdf/SPDB.pdf b/static/bankPdf/SPDB.pdf new file mode 100644 index 0000000..0eb014f --- /dev/null +++ b/static/bankPdf/SPDB.pdf Binary files differ diff --git a/static/bl.pdf b/static/bl.pdf new file mode 100644 index 0000000..971a9e6 --- /dev/null +++ b/static/bl.pdf Binary files differ diff --git a/static/dk.pdf b/static/dk.pdf new file mode 100644 index 0000000..a9aa65c --- /dev/null +++ b/static/dk.pdf Binary files differ diff --git a/static/img/bankCard.png b/static/img/bankCard.png new file mode 100644 index 0000000..a2fda2f --- /dev/null +++ b/static/img/bankCard.png Binary files differ diff --git a/static/img/bg.png b/static/img/bg.png new file mode 100644 index 0000000..f35878c --- /dev/null +++ b/static/img/bg.png Binary files differ diff --git a/static/img/bgwd.png b/static/img/bgwd.png new file mode 100644 index 0000000..6fcacf9 --- /dev/null +++ b/static/img/bgwd.png Binary files differ diff --git a/static/img/faile.png b/static/img/faile.png new file mode 100644 index 0000000..4f2ddea --- /dev/null +++ b/static/img/faile.png Binary files differ diff --git a/static/img/homeBack.png b/static/img/homeBack.png new file mode 100644 index 0000000..559d548 --- /dev/null +++ b/static/img/homeBack.png Binary files differ diff --git a/static/img/idcardf.png b/static/img/idcardf.png new file mode 100644 index 0000000..7022574 --- /dev/null +++ b/static/img/idcardf.png Binary files differ diff --git a/static/img/idcardz.png b/static/img/idcardz.png new file mode 100644 index 0000000..f3b56be --- /dev/null +++ b/static/img/idcardz.png Binary files differ diff --git a/static/img/ing.png b/static/img/ing.png new file mode 100644 index 0000000..855286e --- /dev/null +++ b/static/img/ing.png Binary files differ diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000..9b320b1 --- /dev/null +++ b/static/img/logo.png Binary files differ diff --git a/static/img/logout.png b/static/img/logout.png new file mode 100644 index 0000000..de9f1eb --- /dev/null +++ b/static/img/logout.png Binary files differ diff --git a/static/img/noinfo.png b/static/img/noinfo.png new file mode 100644 index 0000000..10ebf14 --- /dev/null +++ b/static/img/noinfo.png Binary files differ diff --git a/static/img/order.png b/static/img/order.png new file mode 100644 index 0000000..75b6446 --- /dev/null +++ b/static/img/order.png Binary files differ diff --git a/static/img/pic.png b/static/img/pic.png new file mode 100644 index 0000000..f038457 --- /dev/null +++ b/static/img/pic.png Binary files differ diff --git a/static/img/rlsbsb.png b/static/img/rlsbsb.png new file mode 100644 index 0000000..f06a35d --- /dev/null +++ b/static/img/rlsbsb.png Binary files differ diff --git a/static/img/rlsbz.png b/static/img/rlsbz.png new file mode 100644 index 0000000..aad1c7b --- /dev/null +++ b/static/img/rlsbz.png Binary files differ diff --git a/static/img/shcg.png b/static/img/shcg.png new file mode 100644 index 0000000..a2b935b --- /dev/null +++ b/static/img/shcg.png Binary files differ diff --git a/static/img/shsb.png b/static/img/shsb.png new file mode 100644 index 0000000..30aafa9 --- /dev/null +++ b/static/img/shsb.png Binary files differ diff --git a/static/img/shz.png b/static/img/shz.png new file mode 100644 index 0000000..a31c93f --- /dev/null +++ b/static/img/shz.png Binary files differ diff --git a/static/img/success.png b/static/img/success.png new file mode 100644 index 0000000..ed40d81 --- /dev/null +++ b/static/img/success.png Binary files differ diff --git a/static/img/touxiang.png b/static/img/touxiang.png new file mode 100644 index 0000000..d7c6a5b --- /dev/null +++ b/static/img/touxiang.png Binary files differ diff --git a/static/img/zlcc.png b/static/img/zlcc.png new file mode 100644 index 0000000..f9e710a --- /dev/null +++ b/static/img/zlcc.png Binary files differ diff --git a/static/jquery/jquery.js b/static/jquery/jquery.js new file mode 100644 index 0000000..f627c05 --- /dev/null +++ b/static/jquery/jquery.js @@ -0,0 +1,719 @@ +/*! +* jQuery JavaScript Library v3.5.1 +* https://jquery.com/ +* +* Includes Sizzle.js +* https://sizzlejs.com/ +* +* Copyright JS Foundation and other contributors +* Released under the MIT license +* https://jquery.org/license +* +* Date: 2020-05-04T22:49Z +*/(function(global,factory){"use strict";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document");} +return factory(w);};}else{factory(global);}})(typeof window!=="undefined"?window:this,function(window,noGlobal){"use strict";var arr=[];var getProto=Object.getPrototypeOf;var slice=arr.slice;var flat=arr.flat?function(array){return arr.flat.call(array);}:function(array){return arr.concat.apply([],array);};var push=arr.push;var indexOf=arr.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var fnToString=hasOwn.toString;var ObjectFunctionString=fnToString.call(Object);var support={};var isFunction=function isFunction(obj){return typeof obj==="function"&&typeof obj.nodeType!=="number";};var isWindow=function isWindow(obj){return obj!=null&&obj===obj.window;};var document=window.document;var preservedScriptAttributes={type:true,src:true,nonce:true,noModule:true};function DOMEval(code,node,doc){doc=doc||document;var i,val,script=doc.createElement("script");script.text=code;if(node){for(i in preservedScriptAttributes){val=node[i]||node.getAttribute&&node.getAttribute(i);if(val){script.setAttribute(i,val);}}} +doc.head.appendChild(script).parentNode.removeChild(script);} +function toType(obj){if(obj==null){return obj+"";} +return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;} +var +version="3.5.1",jQuery=function(selector,context){return new jQuery.fn.init(selector,context);};jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,length:0,toArray:function(){return slice.call(this);},get:function(num){if(num==null){return slice.call(this);} +return num<0?this[num+this.length]:this[num];},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);ret.prevObject=this;return ret;},each:function(callback){return jQuery.each(this,callback);},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},slice:function(){return this.pushStack(slice.apply(this,arguments));},first:function(){return this.eq(0);},last:function(){return this.eq(-1);},even:function(){return this.pushStack(jQuery.grep(this,function(_elem,i){return(i+1)%2;}));},odd:function(){return this.pushStack(jQuery.grep(this,function(_elem,i){return i%2;}));},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[]);},end:function(){return this.prevObject||this.constructor();},push:push,sort:arr.sort,splice:arr.splice};jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++;} +if(typeof target!=="object"&&!isFunction(target)){target={};} +if(i===length){target=this;i--;} +for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){copy=options[name];if(name==="__proto__"||target===copy){continue;} +if(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))){src=target[name];if(copyIsArray&&!Array.isArray(src)){clone=[];}else if(!copyIsArray&&!jQuery.isPlainObject(src)){clone={};}else{clone=src;} +copyIsArray=false;target[name]=jQuery.extend(deep,clone,copy);}else if(copy!==undefined){target[name]=copy;}}}} +return target;};jQuery.extend({expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),isReady:true,error:function(msg){throw new Error(msg);},noop:function(){},isPlainObject:function(obj){var proto,Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false;} +proto=getProto(obj);if(!proto){return true;} +Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;},isEmptyObject:function(obj){var name;for(name in obj){return false;} +return true;},globalEval:function(code,options,doc){DOMEval(code,{nonce:options&&options.nonce},doc);},each:function(obj,callback){var length,i=0;if(isArrayLike(obj)){length=obj.length;for(;i<length;i++){if(callback.call(obj[i],i,obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i],i,obj[i])===false){break;}}} +return obj;},makeArray:function(arr,results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr);}else{push.call(ret,arr);}} +return ret;},inArray:function(elem,arr,i){return arr==null?-1:indexOf.call(arr,elem,i);},merge:function(first,second){var len=+second.length,j=0,i=first.length;for(;j<len;j++){first[i++]=second[j];} +first.length=i;return first;},grep:function(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}} +return matches;},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems)){length=elems.length;for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}} +return flat(ret);},guid:1,support:support});if(typeof Symbol==="function"){jQuery.fn[Symbol.iterator]=arr[Symbol.iterator];} +jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(_i,name){class2type["[object "+name+"]"]=name.toLowerCase();});function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);if(isFunction(obj)||isWindow(obj)){return false;} +return type==="array"||length===0||typeof length==="number"&&length>0&&(length-1)in obj;} +var Sizzle=/*! +* Sizzle CSS Selector Engine v2.3.5 +* https://sizzlejs.com/ +* +* Copyright JS Foundation and other contributors +* Released under the MIT license +* https://js.foundation/ +* +* Date: 2020-03-14 +*/(function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date(),preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),nonnativeSelectorCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true;} +return 0;},hasOwn=({}).hasOwnProperty,arr=[],pop=arr.pop,pushNative=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){var i=0,len=list.length;for(;i<len;i++){if(list[i]===elem){return i;}} +return-1;},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|"+ +"ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\[\\da-fA-F]{1,6}"+whitespace+ +"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+ +"*([*^$|!~]?=)"+whitespace+ +"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+ +whitespace+"*\\]",pseudos=":("+identifier+")(?:\\(("+ +"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+ +"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+ +".*"+ +")\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ +whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+ +"*"),rdescend=new RegExp(whitespace+"|>"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={"ID":new RegExp("^#("+identifier+")"),"CLASS":new RegExp("^\\.("+identifier+")"),"TAG":new RegExp("^("+identifier+"|[*])"),"ATTR":new RegExp("^"+attributes),"PSEUDO":new RegExp("^"+pseudos),"CHILD":new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ +whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+ +whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),"bool":new RegExp("^(?:"+booleans+")$","i"),"needsContext":new RegExp("^"+whitespace+ +"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+ +"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rhtml=/HTML$/i,rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\[\\da-fA-F]{1,6}"+whitespace+"?|\\\\([^\\r\\n\\f])","g"),funescape=function(escape,nonHex){var high="0x"+escape.slice(1)-0x10000;return nonHex?nonHex:high<0?String.fromCharCode(high+0x10000):String.fromCharCode(high>>10|0xD800,high&0x3FF|0xDC00);},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){if(asCodePoint){if(ch==="\0"){return "\uFFFD";} +return ch.slice(0,-1)+"\\"+ +ch.charCodeAt(ch.length-1).toString(16)+" ";} +return "\\"+ch;},unloadHandler=function(){setDocument();},inDisabledFieldset=addCombinator(function(elem){return elem.disabled===true&&elem.nodeName.toLowerCase()==="fieldset";},{dir:"parentNode",next:"legend"});try{push.apply((arr=slice.call(preferredDoc.childNodes)),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType;}catch(e){push={apply:arr.length?function(target,els){pushNative.apply(target,slice.call(els));}:function(target,els){var j=target.length,i=0;while((target[j++]=els[i++])){} +target.length=j-1;}};} +function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;results=results||[];if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results;} +if(!seed){setDocument(context);context=context||document;if(documentIsHTML){if(nodeType!==11&&(match=rquickExpr.exec(selector))){if((m=match[1])){if(nodeType===9){if((elem=context.getElementById(m))){if(elem.id===m){results.push(elem);return results;}}else{return results;}}else{if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results;}}}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results;}else if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results;}} +if(support.qsa&&!nonnativeSelectorCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))&&(nodeType!==1||context.nodeName.toLowerCase()!=="object")){newSelector=selector;newContext=context;if(nodeType===1&&(rdescend.test(selector)||rcombinators.test(selector))){newContext=rsibling.test(selector)&&testContext(context.parentNode)||context;if(newContext!==context||!support.scope){if((nid=context.getAttribute("id"))){nid=nid.replace(rcssescape,fcssescape);}else{context.setAttribute("id",(nid=expando));}} +groups=tokenize(selector);i=groups.length;while(i--){groups[i]=(nid?"#"+nid:":scope")+" "+ +toSelector(groups[i]);} +newSelector=groups.join(",");} +try{push.apply(results,newContext.querySelectorAll(newSelector));return results;}catch(qsaError){nonnativeSelectorCache(selector,true);}finally{if(nid===expando){context.removeAttribute("id");}}}}} +return select(selector.replace(rtrim,"$1"),context,results,seed);} +function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()];} +return(cache[key+" "]=value);} +return cache;} +function markFunction(fn){fn[expando]=true;return fn;} +function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el);}catch(e){return false;}finally{if(el.parentNode){el.parentNode.removeChild(el);} +el=null;}} +function addHandle(attrs,handler){var arr=attrs.split("|"),i=arr.length;while(i--){Expr.attrHandle[arr[i]]=handler;}} +function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&a.sourceIndex-b.sourceIndex;if(diff){return diff;} +if(cur){while((cur=cur.nextSibling)){if(cur===b){return-1;}}} +return a?1:-1;} +function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type===type;};} +function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type;};} +function createDisabledPseudo(disabled){return function(elem){if("form"in elem){if(elem.parentNode&&elem.disabled===false){if("label"in elem){if("label"in elem.parentNode){return elem.parentNode.disabled===disabled;}else{return elem.disabled===disabled;}} +return elem.isDisabled===disabled||elem.isDisabled!==!disabled&&inDisabledFieldset(elem)===disabled;} +return elem.disabled===disabled;}else if("label"in elem){return elem.disabled===disabled;} +return false;};} +function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[(j=matchIndexes[i])]){seed[j]=!(matches[j]=seed[j]);}}});});} +function testContext(context){return context&&typeof context.getElementsByTagName!=="undefined"&&context;} +support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var namespace=elem.namespaceURI,docElem=(elem.ownerDocument||elem).documentElement;return!rhtml.test(namespace||docElem&&docElem.nodeName||"HTML");};setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;if(doc==document||doc.nodeType!==9||!doc.documentElement){return document;} +document=doc;docElem=document.documentElement;documentIsHTML=!isXML(document);if(preferredDoc!=document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow){if(subWindow.addEventListener){subWindow.addEventListener("unload",unloadHandler,false);}else if(subWindow.attachEvent){subWindow.attachEvent("onunload",unloadHandler);}} +support.scope=assert(function(el){docElem.appendChild(el).appendChild(document.createElement("div"));return typeof el.querySelectorAll!=="undefined"&&!el.querySelectorAll(":scope fieldset div").length;});support.attributes=assert(function(el){el.className="i";return!el.getAttribute("className");});support.getElementsByTagName=assert(function(el){el.appendChild(document.createComment(""));return!el.getElementsByTagName("*").length;});support.getElementsByClassName=rnative.test(document.getElementsByClassName);support.getById=assert(function(el){docElem.appendChild(el).id=expando;return!document.getElementsByName||!document.getElementsByName(expando).length;});if(support.getById){Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId;};};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[];}};}else{Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId;};};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];} +elems=context.getElementsByName(id);i=0;while((elem=elems[i++])){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];}}} +return[];}};} +Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag);}else if(support.qsa){return context.querySelectorAll(tag);}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while((elem=results[i++])){if(elem.nodeType===1){tmp.push(elem);}} +return tmp;} +return results;};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){return context.getElementsByClassName(className);}};rbuggyMatches=[];rbuggyQSA=[];if((support.qsa=rnative.test(document.querySelectorAll))){assert(function(el){var input;docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a>"+ +"<select id='"+expando+"-\r\\' msallowcapture=''>"+ +"<option selected=''></option></select>";if(el.querySelectorAll("[msallowcapture^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")");} +if(!el.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")");} +if(!el.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=");} +input=document.createElement("input");input.setAttribute("name","");el.appendChild(input);if(!el.querySelectorAll("[name='']").length){rbuggyQSA.push("\\["+whitespace+"*name"+whitespace+"*="+ +whitespace+"*(?:''|\"\")");} +if(!el.querySelectorAll(":checked").length){rbuggyQSA.push(":checked");} +if(!el.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]");} +el.querySelectorAll("\\\f");rbuggyQSA.push("[\\r\\n\\f]");});assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a>"+ +"<select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden");el.appendChild(input).setAttribute("name","D");if(el.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=");} +if(el.querySelectorAll(":enabled").length!==2){rbuggyQSA.push(":enabled",":disabled");} +docElem.appendChild(el).disabled=true;if(el.querySelectorAll(":disabled").length!==2){rbuggyQSA.push(":enabled",":disabled");} +el.querySelectorAll("*,:x");rbuggyQSA.push(",.*:");});} +if((support.matchesSelector=rnative.test((matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)))){assert(function(el){support.disconnectedMatch=matches.call(el,"*");matches.call(el,"[s!='']:x");rbuggyMatches.push("!=",pseudos);});} +rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));}:function(a,b){if(b){while((b=b.parentNode)){if(b===a){return true;}}} +return false;};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0;} +var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare;} +compare=(a.ownerDocument||a)==(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||(!support.sortDetached&&b.compareDocumentPosition(a)===compare)){if(a==document||a.ownerDocument==preferredDoc&&contains(preferredDoc,a)){return-1;} +if(b==document||b.ownerDocument==preferredDoc&&contains(preferredDoc,b)){return 1;} +return sortInput?(indexOf(sortInput,a)-indexOf(sortInput,b)):0;} +return compare&4?-1:1;}:function(a,b){if(a===b){hasDuplicate=true;return 0;} +var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a==document?-1:b==document?1:aup?-1:bup?1:sortInput?(indexOf(sortInput,a)-indexOf(sortInput,b)):0;}else if(aup===bup){return siblingCheck(a,b);} +cur=a;while((cur=cur.parentNode)){ap.unshift(cur);} +cur=b;while((cur=cur.parentNode)){bp.unshift(cur);} +while(ap[i]===bp[i]){i++;} +return i?siblingCheck(ap[i],bp[i]):ap[i]==preferredDoc?-1:bp[i]==preferredDoc?1:0;};return document;};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements);};Sizzle.matchesSelector=function(elem,expr){setDocument(elem);if(support.matchesSelector&&documentIsHTML&&!nonnativeSelectorCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret;}}catch(e){nonnativeSelectorCache(expr,true);}} +return Sizzle(expr,document,null,[elem]).length>0;};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!=document){setDocument(context);} +return contains(context,elem);};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!=document){setDocument(elem);} +var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null;};Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape);};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg);};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while((elem=results[i++])){if(elem===results[i]){j=duplicates.push(i);}} +while(j--){results.splice(duplicates[j],1);}} +sortInput=null;return results;};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while((node=elem[i++])){ret+=getText(node);}}else if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent;}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem);}}}else if(nodeType===3||nodeType===4){return elem.nodeValue;} +return ret;};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{"ATTR":function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" ";} +return match.slice(0,4);},"CHILD":function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0]);} +match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+((match[7]+match[8])||match[3]==="odd");}else if(match[3]){Sizzle.error(match[0]);} +return match;},"PSEUDO":function(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr["CHILD"].test(match[0])){return null;} +if(match[3]){match[2]=match[4]||match[5]||"";}else if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess);} +return match.slice(0,3);}},filter:{"TAG":function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true;}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName;};},"CLASS":function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+ +")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"");});},"ATTR":function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!=";} +if(!operator){return true;} +result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false;};},"CHILD":function(type,what,_argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?function(elem){return!!elem.parentNode;}:function(elem,_context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){if(simple){while(dir){node=elem;while((node=node[dir])){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false;}} +start=dir=type==="only"&&!start&&"nextSibling";} +return true;} +start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){node=parent;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if(node.nodeType===1&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break;}}}else{if(useCache){node=elem;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex;} +if(diff===false){while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});uniqueCache[type]=[dirruns,diff];} +if(node===elem){break;}}}}} +diff-=last;return diff===first||(diff%first===0&&diff/first>=0);}};},"PSEUDO":function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument);} +if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i]);}}):function(elem){return fn(elem,0,args);};} +return fn;}},pseudos:{"not":markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,_context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if((elem=unmatched[i])){seed[i]=!(matches[i]=elem);}}}):function(elem,_context,xml){input[0]=elem;matcher(input,null,xml,results);input[0]=null;return!results.pop();};}),"has":markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0;};}),"contains":markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||getText(elem)).indexOf(text)>-1;};}),"lang":markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error("unsupported lang: "+lang);} +lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if((elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0;}}while((elem=elem.parentNode)&&elem.nodeType===1);return false;};}),"target":function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id;},"root":function(elem){return elem===docElem;},"focus":function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex);},"enabled":createDisabledPseudo(false),"disabled":createDisabledPseudo(true),"checked":function(elem){var nodeName=elem.nodeName.toLowerCase();return(nodeName==="input"&&!!elem.checked)||(nodeName==="option"&&!!elem.selected);},"selected":function(elem){if(elem.parentNode){elem.parentNode.selectedIndex;} +return elem.selected===true;},"empty":function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false;}} +return true;},"parent":function(elem){return!Expr.pseudos["empty"](elem);},"header":function(elem){return rheader.test(elem.nodeName);},"input":function(elem){return rinputs.test(elem.nodeName);},"button":function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button";},"text":function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text");},"first":createPositionalPseudo(function(){return[0];}),"last":createPositionalPseudo(function(_matchIndexes,length){return[length-1];}),"eq":createPositionalPseudo(function(_matchIndexes,length,argument){return[argument<0?argument+length:argument];}),"even":createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i);} +return matchIndexes;}),"odd":createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i);} +return matchIndexes;}),"lt":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument>length?length:argument;for(;--i>=0;){matchIndexes.push(i);} +return matchIndexes;}),"gt":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i);} +return matchIndexes;})}};Expr.pseudos["nth"]=Expr.pseudos["eq"];for(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i);} +for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i);} +function setFilters(){} +setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters();tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached){return parseOnly?0:cached.slice(0);} +soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){if(!matched||(match=rcomma.exec(soFar))){if(match){soFar=soFar.slice(match[0].length)||soFar;} +groups.push((tokens=[]));} +matched=false;if((match=rcombinators.exec(soFar))){matched=match.shift();tokens.push({value:matched,type:match[0].replace(rtrim," ")});soFar=soFar.slice(matched.length);} +for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length);}} +if(!matched){break;}} +return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0);};function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value;} +return selector;} +function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&key==="parentNode",doneName=done++;return combinator.first?function(elem,context,xml){while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml);}} +return false;}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true;}}}}else{while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});uniqueCache=outerCache[elem.uniqueID]||(outerCache[elem.uniqueID]={});if(skip&&skip===elem.nodeName.toLowerCase()){elem=elem[dir]||elem;}else if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName){return(newCache[2]=oldCache[2]);}else{uniqueCache[key]=newCache;if((newCache[2]=matcher(elem,context,xml))){return true;}}}}} +return false;};} +function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false;}} +return true;}:matchers[0];} +function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results);} +return results;} +function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if((elem=unmatched[i])){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i);}}}} +return newUnmatched;} +function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter);} +if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector);} +return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher){matcher(matcherIn,matcherOut,context,xml);} +if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);i=temp.length;while(i--){if((elem=temp[i])){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem);}}} +if(seed){if(postFinder||preFilter){if(postFinder){temp=[];i=matcherOut.length;while(i--){if((elem=matcherOut[i])){temp.push((matcherIn[i]=elem));}} +postFinder(null,(matcherOut=[]),temp,xml);} +i=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem);}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml);}else{push.apply(results,matcherOut);}}});} +function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext;},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1;},implicitRelative,true),matchers=[function(elem,context,xml){var ret=(!leadingRelative&&(xml||context!==outermostContext))||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));checkContext=null;return ret;}];for(;i<len;i++){if((matcher=Expr.relative[tokens[i].type])){matchers=[addCombinator(elementMatcher(matchers),matcher)];}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);if(matcher[expando]){j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break;}} +return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens((tokens=tokens.slice(j))),j<len&&toSelector(tokens));} +matchers.push(matcher);}} +return elementMatcher(matchers);} +function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=(dirruns+=contextBackup==null?1:Math.random()||0.1),len=elems.length;if(outermost){outermostContext=context==document||context||outermost;} +for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;if(!context&&elem.ownerDocument!=document){setDocument(elem);xml=!documentIsHTML;} +while((matcher=elementMatchers[j++])){if(matcher(elem,context||document,xml)){results.push(elem);break;}} +if(outermost){dirruns=dirrunsUnique;}} +if(bySet){if((elem=!matcher&&elem)){matchedCount--;} +if(seed){unmatched.push(elem);}}} +matchedCount+=i;if(bySet&&i!==matchedCount){j=0;while((matcher=setMatchers[j++])){matcher(unmatched,setMatched,context,xml);} +if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results);}}} +setMatched=condense(setMatched);} +push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&(matchedCount+setMatchers.length)>1){Sizzle.uniqueSort(results);}} +if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup;} +return unmatched;};return bySet?markFunction(superMatcher):superMatcher;} +compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector);} +i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached);}else{elementMatchers.push(cached);}} +cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector;} +return cached;};select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize((selector=compiled.selector||selector));results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results;}else if(compiled){context=context.parentNode;} +selector=selector.slice(tokens.shift().value.length);} +i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[(type=token.type)]){break;} +if((find=Expr.find[type])){if((seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results;} +break;}}}} +(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results;};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(el){return el.compareDocumentPosition(document.createElement("fieldset"))&1;});if(!assert(function(el){el.innerHTML="<a href='#'></a>";return el.firstChild.getAttribute("href")==="#";})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2);}});} +if(!support.attributes||!assert(function(el){el.innerHTML="<input/>";el.firstChild.setAttribute("value","");return el.firstChild.getAttribute("value")==="";})){addHandle("value",function(elem,_name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue;}});} +if(!assert(function(el){return el.getAttribute("disabled")==null;})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null;}});} +return Sizzle;})(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break;} +matched.push(elem);}} +return matched;};var siblings=function(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n);}} +return matched;};var rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();};var rsingleTag=(/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i);function winnow(elements,qualifier,not){if(isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not;});} +if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return(elem===qualifier)!==not;});} +if(typeof qualifier!=="string"){return jQuery.grep(elements,function(elem){return(indexOf.call(qualifier,elem)>-1)!==not;});} +return jQuery.filter(qualifier,elements,not);} +jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")";} +if(elems.length===1&&elem.nodeType===1){return jQuery.find.matchesSelector(elem,expr)?[elem]:[];} +return jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1;}));};jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true;}}}));} +ret=this.pushStack([]);for(i=0;i<len;i++){jQuery.find(selector,self[i],ret);} +return len>1?jQuery.uniqueSort(ret):ret;},filter:function(selector){return this.pushStack(winnow(this,selector||[],false));},not:function(selector){return this.pushStack(winnow(this,selector||[],true));},is:function(selector){return!!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length;}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector){return this;} +root=root||rootjQuery;if(typeof selector==="string"){if(selector[0]==="<"&&selector[selector.length-1]===">"&&selector.length>=3){match=[null,selector,null];}else{match=rquickExpr.exec(selector);} +if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(isFunction(this[match])){this[match](context[match]);}else{this.attr(match,context[match]);}}} +return this;}else{elem=document.getElementById(match[2]);if(elem){this[0]=elem;this.length=1;} +return this;}}else if(!context||context.jquery){return(context||root).find(selector);}else{return this.constructor(context).find(selector);}}else if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(isFunction(selector)){return root.ready!==undefined?root.ready(selector):selector(jQuery);} +return jQuery.makeArray(selector,this);};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){var i=0;for(;i<l;i++){if(jQuery.contains(this,targets[i])){return true;}}});},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets=typeof selectors!=="string"&&jQuery(selectors);if(!rneedsContext.test(selectors)){for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){if(cur.nodeType<11&&(targets?targets.index(cur)>-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break;}}}} +return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched);},index:function(elem){if(!elem){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1;} +if(typeof elem==="string"){return indexOf.call(jQuery(elem),this[0]);} +return indexOf.call(this,elem.jquery?elem[0]:elem);},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))));},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector));}});function sibling(cur,dir){while((cur=cur[dir])&&cur.nodeType!==1){} +return cur;} +jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function(elem){return dir(elem,"parentNode");},parentsUntil:function(elem,_i,until){return dir(elem,"parentNode",until);},next:function(elem){return sibling(elem,"nextSibling");},prev:function(elem){return sibling(elem,"previousSibling");},nextAll:function(elem){return dir(elem,"nextSibling");},prevAll:function(elem){return dir(elem,"previousSibling");},nextUntil:function(elem,_i,until){return dir(elem,"nextSibling",until);},prevUntil:function(elem,_i,until){return dir(elem,"previousSibling",until);},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem);},children:function(elem){return siblings(elem.firstChild);},contents:function(elem){if(elem.contentDocument!=null&&getProto(elem.contentDocument)){return elem.contentDocument;} +if(nodeName(elem,"template")){elem=elem.content||elem;} +return jQuery.merge([],elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until;} +if(selector&&typeof selector==="string"){matched=jQuery.filter(selector,matched);} +if(this.length>1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);} +if(rparentsprev.test(name)){matched.reverse();}} +return this.pushStack(matched);};});var rnothtmlwhite=(/[^\x20\t\r\n\f]+/g);function createOptions(options){var object={};jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=true;});return object;} +jQuery.Callbacks=function(options){options=typeof options==="string"?createOptions(options):jQuery.extend({},options);var +firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){locked=locked||options.once;fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex<list.length){if(list[firingIndex].apply(memory[0],memory[1])===false&&options.stopOnFalse){firingIndex=list.length;memory=false;}}} +if(!options.memory){memory=false;} +firing=false;if(locked){if(memory){list=[];}else{list="";}}},self={add:function(){if(list){if(memory&&!firing){firingIndex=list.length-1;queue.push(memory);} +(function add(args){jQuery.each(args,function(_,arg){if(isFunction(arg)){if(!options.unique||!self.has(arg)){list.push(arg);}}else if(arg&&arg.length&&toType(arg)!=="string"){add(arg);}});})(arguments);if(memory&&!firing){fire();}} +return this;},remove:function(){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);if(index<=firingIndex){firingIndex--;}}});return this;},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0;},empty:function(){if(list){list=[];} +return this;},disable:function(){locked=queue=[];list=memory="";return this;},disabled:function(){return!list;},lock:function(){locked=queue=[];if(!memory&&!firing){list=memory="";} +return this;},locked:function(){return!!locked;},fireWith:function(context,args){if(!locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire();}} +return this;},fire:function(){self.fireWith(this,arguments);return this;},fired:function(){return!!fired;}};return self;};function Identity(v){return v;} +function Thrower(ex){throw ex;} +function adoptValue(value,resolve,reject,noValue){var method;try{if(value&&isFunction((method=value.promise))){method.call(value).done(resolve).fail(reject);}else if(value&&isFunction((method=value.then))){method.call(value,resolve,reject);}else{resolve.apply(undefined,[value].slice(noValue));}}catch(value){reject.apply(undefined,[value]);}} +jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state;},always:function(){deferred.done(arguments).fail(arguments);return this;},"catch":function(fn){return promise.then(null,fn);},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(_i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);}else{newDefer[tuple[0]+"With"](this,fn?[returned]:arguments);}});});fns=null;}).promise();},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(depth<maxDepth){return;} +returned=handler.apply(that,args);if(returned===deferred.promise()){throw new TypeError("Thenable self-resolution");} +then=returned&&(typeof returned==="object"||typeof returned==="function")&&returned.then;if(isFunction(then)){if(special){then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special));}else{maxDepth++;then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith));}}else{if(handler!==Identity){that=undefined;args=[returned];} +(special||deferred.resolveWith)(that,args);}},process=special?mightThrow:function(){try{mightThrow();}catch(e){if(jQuery.Deferred.exceptionHook){jQuery.Deferred.exceptionHook(e,process.stackTrace);} +if(depth+1>=maxDepth){if(handler!==Thrower){that=undefined;args=[e];} +deferred.rejectWith(that,args);}}};if(depth){process();}else{if(jQuery.Deferred.getStackHook){process.stackTrace=jQuery.Deferred.getStackHook();} +window.setTimeout(process);}};} +return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith));tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity));tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower));}).promise();},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise;}},deferred={};jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString;},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock);} +list.add(tuple[3].fire);deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?undefined:this,arguments);return this;};deferred[tuple[0]+"With"]=list.fireWith;});promise.promise(deferred);if(func){func.call(deferred,deferred);} +return deferred;},when:function(singleValue){var +remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this;resolveValues[i]=arguments.length>1?slice.call(arguments):value;if(!(--remaining)){master.resolveWith(resolveContexts,resolveValues);}};};if(remaining<=1){adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining);if(master.state()==="pending"||isFunction(resolveValues[i]&&resolveValues[i].then)){return master.then();}} +while(i--){adoptValue(resolveValues[i],updateFunc(i),master.reject);} +return master.promise();}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){if(window.console&&window.console.warn&&error&&rerrorNames.test(error.name)){window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack);}};jQuery.readyException=function(error){window.setTimeout(function(){throw error;});};var readyList=jQuery.Deferred();jQuery.fn.ready=function(fn){readyList.then(fn).catch(function(error){jQuery.readyException(error);});return this;};jQuery.extend({isReady:false,readyWait:1,ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return;} +jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return;} +readyList.resolveWith(document,[jQuery]);}});jQuery.ready.then=readyList.then;function completed(){document.removeEventListener("DOMContentLoaded",completed);window.removeEventListener("load",completed);jQuery.ready();} +if(document.readyState==="complete"||(document.readyState!=="loading"&&!document.documentElement.doScroll)){window.setTimeout(jQuery.ready);}else{document.addEventListener("DOMContentLoaded",completed);window.addEventListener("load",completed);} +var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=key==null;if(toType(key)==="object"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw);}}else if(value!==undefined){chainable=true;if(!isFunction(value)){raw=true;} +if(bulk){if(raw){fn.call(elems,value);fn=null;}else{bulk=fn;fn=function(elem,_key,value){return bulk.call(jQuery(elem),value);};}} +if(fn){for(;i<len;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));}}} +if(chainable){return elems;} +if(bulk){return fn.call(elems);} +return len?fn(elems[0],key):emptyGet;};var rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(_all,letter){return letter.toUpperCase();} +function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase);} +var acceptData=function(owner){return owner.nodeType===1||owner.nodeType===9||!(+owner.nodeType);};function Data(){this.expando=jQuery.expando+Data.uid++;} +Data.uid=1;Data.prototype={cache:function(owner){var value=owner[this.expando];if(!value){value={};if(acceptData(owner)){if(owner.nodeType){owner[this.expando]=value;}else{Object.defineProperty(owner,this.expando,{value:value,configurable:true});}}} +return value;},set:function(owner,data,value){var prop,cache=this.cache(owner);if(typeof data==="string"){cache[camelCase(data)]=value;}else{for(prop in data){cache[camelCase(prop)]=data[prop];}} +return cache;},get:function(owner,key){return key===undefined?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)];},access:function(owner,key,value){if(key===undefined||((key&&typeof key==="string")&&value===undefined)){return this.get(owner,key);} +this.set(owner,key,value);return value!==undefined?value:key;},remove:function(owner,key){var i,cache=owner[this.expando];if(cache===undefined){return;} +if(key!==undefined){if(Array.isArray(key)){key=key.map(camelCase);}else{key=camelCase(key);key=key in cache?[key]:(key.match(rnothtmlwhite)||[]);} +i=key.length;while(i--){delete cache[key[i]];}} +if(key===undefined||jQuery.isEmptyObject(cache)){if(owner.nodeType){owner[this.expando]=undefined;}else{delete owner[this.expando];}}},hasData:function(owner){var cache=owner[this.expando];return cache!==undefined&&!jQuery.isEmptyObject(cache);}};var dataPriv=new Data();var dataUser=new Data();var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function getData(data){if(data==="true"){return true;} +if(data==="false"){return false;} +if(data==="null"){return null;} +if(data===+data+""){return+data;} +if(rbrace.test(data)){return JSON.parse(data);} +return data;} +function dataAttr(elem,key,data){var name;if(data===undefined&&elem.nodeType===1){name="data-"+key.replace(rmultiDash,"-$&").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=getData(data);}catch(e){} +dataUser.set(elem,key,data);}else{data=undefined;}} +return data;} +jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem);},data:function(elem,name,data){return dataUser.access(elem,name,data);},removeData:function(elem,name){dataUser.remove(elem,name);},_data:function(elem,name,data){return dataPriv.access(elem,name,data);},_removeData:function(elem,name){dataPriv.remove(elem,name);}});jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length){data=dataUser.get(elem);if(elem.nodeType===1&&!dataPriv.get(elem,"hasDataAttrs")){i=attrs.length;while(i--){if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=camelCase(name.slice(5));dataAttr(elem,name,data[name]);}}} +dataPriv.set(elem,"hasDataAttrs",true);}} +return data;} +if(typeof key==="object"){return this.each(function(){dataUser.set(this,key);});} +return access(this,function(value){var data;if(elem&&value===undefined){data=dataUser.get(elem,key);if(data!==undefined){return data;} +data=dataAttr(elem,key);if(data!==undefined){return data;} +return;} +this.each(function(){dataUser.set(this,key,value);});},null,value,arguments.length>1,null,true);},removeData:function(key){return this.each(function(){dataUser.remove(this,key);});}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=dataPriv.get(elem,type);if(data){if(!queue||Array.isArray(data)){queue=dataPriv.access(elem,type,jQuery.makeArray(data));}else{queue.push(data);}} +return queue||[];}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type);};if(fn==="inprogress"){fn=queue.shift();startLength--;} +if(fn){if(type==="fx"){queue.unshift("inprogress");} +delete hooks.stop;fn.call(elem,next,hooks);} +if(!startLength&&hooks){hooks.empty.fire();}},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key]);})});}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--;} +if(arguments.length<setter){return jQuery.queue(this[0],type);} +return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type);}});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});},clearQueue:function(type){return this.queue(type||"fx",[]);},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){if(!(--count)){defer.resolveWith(elements,[elements]);}};if(typeof type!=="string"){obj=type;type=undefined;} +type=type||"fx";while(i--){tmp=dataPriv.get(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve);}} +resolve();return defer.promise(obj);}});var pnum=(/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;var rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i");var cssExpand=["Top","Right","Bottom","Left"];var documentElement=document.documentElement;var isAttached=function(elem){return jQuery.contains(elem.ownerDocument,elem);},composed={composed:true};if(documentElement.getRootNode){isAttached=function(elem){return jQuery.contains(elem.ownerDocument,elem)||elem.getRootNode(composed)===elem.ownerDocument;};} +var isHiddenWithinTree=function(elem,el){elem=el||elem;return elem.style.display==="none"||elem.style.display===""&&isAttached(elem)&&jQuery.css(elem,"display")==="none";};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur();}:function(){return jQuery.css(elem,prop,"");},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=elem.nodeType&&(jQuery.cssNumber[prop]||unit!=="px"&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){initial=initial/2;unit=unit||initialInUnit[3];initialInUnit=+initial||1;while(maxIterations--){jQuery.style(elem,prop,initialInUnit+unit);if((1-scale)*(1-(scale=currentValue()/initial||0.5))<=0){maxIterations=0;} +initialInUnit=initialInUnit/scale;} +initialInUnit=initialInUnit*2;jQuery.style(elem,prop,initialInUnit+unit);valueParts=valueParts||[];} +if(valueParts){initialInUnit=+initialInUnit||+initial||0;adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2];if(tween){tween.unit=unit;tween.start=initialInUnit;tween.end=adjusted;}} +return adjusted;} +var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];if(display){return display;} +temp=doc.body.appendChild(doc.createElement(nodeName));display=jQuery.css(temp,"display");temp.parentNode.removeChild(temp);if(display==="none"){display="block";} +defaultDisplayMap[nodeName]=display;return display;} +function showHide(elements,show){var display,elem,values=[],index=0,length=elements.length;for(;index<length;index++){elem=elements[index];if(!elem.style){continue;} +display=elem.style.display;if(show){if(display==="none"){values[index]=dataPriv.get(elem,"display")||null;if(!values[index]){elem.style.display="";}} +if(elem.style.display===""&&isHiddenWithinTree(elem)){values[index]=getDefaultDisplay(elem);}}else{if(display!=="none"){values[index]="none";dataPriv.set(elem,"display",display);}}} +for(index=0;index<length;index++){if(values[index]!=null){elements[index].style.display=values[index];}} +return elements;} +jQuery.fn.extend({show:function(){return showHide(this,true);},hide:function(){return showHide(this);},toggle:function(state){if(typeof state==="boolean"){return state?this.show():this.hide();} +return this.each(function(){if(isHiddenWithinTree(this)){jQuery(this).show();}else{jQuery(this).hide();}});}});var rcheckableType=(/^(?:checkbox|radio)$/i);var rtagName=(/<([a-z][^\/\0>\x20\t\r\n\f]*)/i);var rscriptType=(/^$|^module$|\/(?:java|ecma)script/i);(function(){var fragment=document.createDocumentFragment(),div=fragment.appendChild(document.createElement("div")),input=document.createElement("input");input.setAttribute("type","radio");input.setAttribute("checked","checked");input.setAttribute("name","t");div.appendChild(input);support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;div.innerHTML="<option></option>";support.option=!!div.lastChild;})();var wrapMap={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;if(!support.option){wrapMap.optgroup=wrapMap.option=[1,"<select multiple='multiple'>","</select>"];} +function getAll(context,tag){var ret;if(typeof context.getElementsByTagName!=="undefined"){ret=context.getElementsByTagName(tag||"*");}else if(typeof context.querySelectorAll!=="undefined"){ret=context.querySelectorAll(tag||"*");}else{ret=[];} +if(tag===undefined||tag&&nodeName(context,tag)){return jQuery.merge([context],ret);} +return ret;} +function setGlobalEval(elems,refElements){var i=0,l=elems.length;for(;i<l;i++){dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"));}} +var rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){var elem,tmp,tag,wrap,attached,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;for(;i<l;i++){elem=elems[i];if(elem||elem===0){if(toType(elem)==="object"){jQuery.merge(nodes,elem.nodeType?[elem]:elem);}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem));}else{tmp=tmp||fragment.appendChild(context.createElement("div"));tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2];j=wrap[0];while(j--){tmp=tmp.lastChild;} +jQuery.merge(nodes,tmp.childNodes);tmp=fragment.firstChild;tmp.textContent="";}}} +fragment.textContent="";i=0;while((elem=nodes[i++])){if(selection&&jQuery.inArray(elem,selection)>-1){if(ignored){ignored.push(elem);} +continue;} +attached=isAttached(elem);tmp=getAll(fragment.appendChild(elem),"script");if(attached){setGlobalEval(tmp);} +if(scripts){j=0;while((elem=tmp[j++])){if(rscriptType.test(elem.type||"")){scripts.push(elem);}}}} +return fragment;} +var +rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return true;} +function returnFalse(){return false;} +function expectSync(elem,type){return(elem===safeActiveElement())===(type==="focus");} +function safeActiveElement(){try{return document.activeElement;}catch(err){}} +function on(elem,types,selector,data,fn,one){var origFn,type;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined;} +for(type in types){on(elem,type,selector,data,types[type],one);} +return elem;} +if(data==null&&fn==null){fn=selector;data=selector=undefined;}else if(fn==null){if(typeof selector==="string"){fn=data;data=undefined;}else{fn=data;data=selector;selector=undefined;}} +if(fn===false){fn=returnFalse;}else if(!fn){return elem;} +if(one===1){origFn=fn;fn=function(event){jQuery().off(event);return origFn.apply(this,arguments);};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++);} +return elem.each(function(){jQuery.event.add(this,types,fn,data,selector);});} +jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(!acceptData(elem)){return;} +if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector;} +if(selector){jQuery.find.matchesSelector(documentElement,selector);} +if(!handler.guid){handler.guid=jQuery.guid++;} +if(!(events=elemData.events)){events=elemData.events=Object.create(null);} +if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!=="undefined"&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):undefined;};} +types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue;} +special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle);}}} +if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}} +if(selector){handlers.splice(handlers.delegateCount++,0,handleObj);}else{handlers.push(handleObj);} +jQuery.event.global[type]=true;}},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(!elemData||!(events=elemData.events)){return;} +types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true);} +continue;} +special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--;} +if(special.remove){special.remove.call(elem,handleObj);}}} +if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle);} +delete events[type];}} +if(jQuery.isEmptyObject(events)){dataPriv.remove(elem,"handle events");}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,args=new Array(arguments.length),event=jQuery.event.fix(nativeEvent),handlers=(dataPriv.get(this,"events")||Object.create(null))[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;for(i=1;i<arguments.length;i++){args[i]=arguments[i];} +event.delegateTarget=this;if(special.preDispatch&&special.preDispatch.call(this,event)===false){return;} +handlerQueue=jQuery.event.handlers.call(this,event,handlers);i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){if(!event.rnamespace||handleObj.namespace===false||event.rnamespace.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation();}}}}} +if(special.postDispatch){special.postDispatch.call(this,event);} +return event.result;},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!(event.type==="click"&&event.button>=1)){for(;cur!==this;cur=cur.parentNode||this){if(cur.nodeType===1&&!(event.type==="click"&&cur.disabled===true)){matchedHandlers=[];matchedSelectors={};for(i=0;i<delegateCount;i++){handleObj=handlers[i];sel=handleObj.selector+" ";if(matchedSelectors[sel]===undefined){matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length;} +if(matchedSelectors[sel]){matchedHandlers.push(handleObj);}} +if(matchedHandlers.length){handlerQueue.push({elem:cur,handlers:matchedHandlers});}}}} +cur=this;if(delegateCount<handlers.length){handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)});} +return handlerQueue;},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:true,configurable:true,get:isFunction(hook)?function(){if(this.originalEvent){return hook(this.originalEvent);}}:function(){if(this.originalEvent){return this.originalEvent[name];}},set:function(value){Object.defineProperty(this,name,{enumerable:true,configurable:true,writable:true,value:value});}});},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent);},special:{load:{noBubble:true},click:{setup:function(data){var el=this||data;if(rcheckableType.test(el.type)&&el.click&&nodeName(el,"input")){leverageNative(el,"click",returnTrue);} +return false;},trigger:function(data){var el=this||data;if(rcheckableType.test(el.type)&&el.click&&nodeName(el,"input")){leverageNative(el,"click");} +return true;},_default:function(event){var target=event.target;return rcheckableType.test(target.type)&&target.click&&nodeName(target,"input")&&dataPriv.get(target,"click")||nodeName(target,"a");}},beforeunload:{postDispatch:function(event){if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result;}}}}};function leverageNative(el,type,expectSync){if(!expectSync){if(dataPriv.get(el,type)===undefined){jQuery.event.add(el,type,returnTrue);} +return;} +dataPriv.set(el,type,false);jQuery.event.add(el,type,{namespace:false,handler:function(event){var notAsync,result,saved=dataPriv.get(this,type);if((event.isTrigger&1)&&this[type]){if(!saved.length){saved=slice.call(arguments);dataPriv.set(this,type,saved);notAsync=expectSync(this,type);this[type]();result=dataPriv.get(this,type);if(saved!==result||notAsync){dataPriv.set(this,type,false);}else{result={};} +if(saved!==result){event.stopImmediatePropagation();event.preventDefault();return result.value;}}else if((jQuery.event.special[type]||{}).delegateType){event.stopPropagation();}}else if(saved.length){dataPriv.set(this,type,{value:jQuery.event.trigger(jQuery.extend(saved[0],jQuery.Event.prototype),saved.slice(1),this)});event.stopImmediatePropagation();}}});} +jQuery.removeEvent=function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle);}};jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props);} +if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&src.returnValue===false?returnTrue:returnFalse;this.target=(src.target&&src.target.nodeType===3)?src.target.parentNode:src.target;this.currentTarget=src.currentTarget;this.relatedTarget=src.relatedTarget;}else{this.type=src;} +if(props){jQuery.extend(this,props);} +this.timeStamp=src&&src.timeStamp||Date.now();this[jQuery.expando]=true;};jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:false,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(e&&!this.isSimulated){e.preventDefault();}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopPropagation();}},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopImmediatePropagation();} +this.stopPropagation();}};jQuery.each({altKey:true,bubbles:true,cancelable:true,changedTouches:true,ctrlKey:true,detail:true,eventPhase:true,metaKey:true,pageX:true,pageY:true,shiftKey:true,view:true,"char":true,code:true,charCode:true,key:true,keyCode:true,button:true,buttons:true,clientX:true,clientY:true,offsetX:true,offsetY:true,pointerId:true,pointerType:true,screenX:true,screenY:true,targetTouches:true,toElement:true,touches:true,which:function(event){var button=event.button;if(event.which==null&&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;} +if(!event.which&&button!==undefined&&rmouseEvent.test(event.type)){if(button&1){return 1;} +if(button&2){return 3;} +if(button&4){return 2;} +return 0;} +return event.which;}},jQuery.event.addProp);jQuery.each({focus:"focusin",blur:"focusout"},function(type,delegateType){jQuery.event.special[type]={setup:function(){leverageNative(this,type,expectSync);return false;},trigger:function(){leverageNative(this,type);return true;},delegateType:delegateType};});jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;if(!related||(related!==target&&!jQuery.contains(target,related))){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix;} +return ret;}};});jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn);},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1);},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this;} +if(typeof types==="object"){for(type in types){this.off(type,selector,types[type]);} +return this;} +if(selector===false||typeof selector==="function"){fn=selector;selector=undefined;} +if(fn===false){fn=returnFalse;} +return this.each(function(){jQuery.event.remove(this,types,fn,selector);});}});var +rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){if(nodeName(elem,"table")&&nodeName(content.nodeType!==11?content:content.firstChild,"tr")){return jQuery(elem).children("tbody")[0]||elem;} +return elem;} +function disableScript(elem){elem.type=(elem.getAttribute("type")!==null)+"/"+elem.type;return elem;} +function restoreScript(elem){if((elem.type||"").slice(0,5)==="true/"){elem.type=elem.type.slice(5);}else{elem.removeAttribute("type");} +return elem;} +function cloneCopyEvent(src,dest){var i,l,type,pdataOld,udataOld,udataCur,events;if(dest.nodeType!==1){return;} +if(dataPriv.hasData(src)){pdataOld=dataPriv.get(src);events=pdataOld.events;if(events){dataPriv.remove(dest,"handle events");for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i]);}}}} +if(dataUser.hasData(src)){udataOld=dataUser.access(src);udataCur=jQuery.extend({},udataOld);dataUser.set(dest,udataCur);}} +function fixInput(src,dest){var nodeName=dest.nodeName.toLowerCase();if(nodeName==="input"&&rcheckableType.test(src.type)){dest.checked=src.checked;}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue;}} +function domManip(collection,args,callback,ignored){args=flat(args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||(l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value))){return collection.each(function(index){var self=collection.eq(index);if(valueIsFunction){args[0]=value.call(this,index,self.html());} +domManip(self,args,callback,ignored);});} +if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first;} +if(first||ignored){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);if(hasScripts){jQuery.merge(scripts,getAll(node,"script"));}} +callback.call(collection[i],node,i);} +if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;jQuery.map(scripts,restoreScript);for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src&&(node.type||"").toLowerCase()!=="module"){if(jQuery._evalUrl&&!node.noModule){jQuery._evalUrl(node.src,{nonce:node.nonce||node.getAttribute("nonce")},doc);}}else{DOMEval(node.textContent.replace(rcleanScript,""),node,doc);}}}}}} +return collection;} +function remove(elem,selector,keepData){var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;for(;(node=nodes[i])!=null;i++){if(!keepData&&node.nodeType===1){jQuery.cleanData(getAll(node));} +if(node.parentNode){if(keepData&&isAttached(node)){setGlobalEval(getAll(node,"script"));} +node.parentNode.removeChild(node);}} +return elem;} +jQuery.extend({htmlPrefilter:function(html){return html;},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,clone=elem.cloneNode(true),inPage=isAttached(elem);if(!support.noCloneChecked&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){destElements=getAll(clone);srcElements=getAll(elem);for(i=0,l=srcElements.length;i<l;i++){fixInput(srcElements[i],destElements[i]);}} +if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0,l=srcElements.length;i<l;i++){cloneCopyEvent(srcElements[i],destElements[i]);}}else{cloneCopyEvent(elem,clone);}} +destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"));} +return clone;},cleanData:function(elems){var data,elem,type,special=jQuery.event.special,i=0;for(;(elem=elems[i])!==undefined;i++){if(acceptData(elem)){if((data=elem[dataPriv.expando])){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type);}else{jQuery.removeEvent(elem,type,data.handle);}}} +elem[dataPriv.expando]=undefined;} +if(elem[dataUser.expando]){elem[dataUser.expando]=undefined;}}}}});jQuery.fn.extend({detach:function(selector){return remove(this,selector,true);},remove:function(selector){return remove(this,selector);},text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=value;}});},null,value,arguments.length);},append:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem);}});},prepend:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild);}});},before:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this);}});},after:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling);}});},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.textContent="";}} +return this;},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined&&elem.nodeType===1){return elem.innerHTML;} +if(typeof value==="string"&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++){elem=this[i]||{};if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value;}} +elem=0;}catch(e){}} +if(elem){this.empty().append(value);}},null,value,arguments.length);},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;if(jQuery.inArray(this,ignored)<0){jQuery.cleanData(getAll(this));if(parent){parent.replaceChild(elem,this);}}},ignored);}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);push.apply(ret,elems.get());} +return this.pushStack(ret);};});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var getStyles=function(elem){var view=elem.ownerDocument.defaultView;if(!view||!view.opener){view=window;} +return view.getComputedStyle(elem);};var swap=function(elem,options,callback){var ret,name,old={};for(name in options){old[name]=elem.style[name];elem.style[name]=options[name];} +ret=callback.call(elem);for(name in options){elem.style[name]=old[name];} +return ret;};var rboxStyle=new RegExp(cssExpand.join("|"),"i");(function(){function computeStyleTests(){if(!div){return;} +container.style.cssText="position:absolute;left:-11111px;width:60px;"+ +"margin-top:1px;padding:0;border:0";div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;"+ +"margin:auto;border:1px;padding:1px;"+ +"width:60%;top:1%";documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal=divStyle.top!=="1%";reliableMarginLeftVal=roundPixelMeasures(divStyle.marginLeft)===12;div.style.right="60%";pixelBoxStylesVal=roundPixelMeasures(divStyle.right)===36;boxSizingReliableVal=roundPixelMeasures(divStyle.width)===36;div.style.position="absolute";scrollboxSizeVal=roundPixelMeasures(div.offsetWidth/3)===12;documentElement.removeChild(container);div=null;} +function roundPixelMeasures(measure){return Math.round(parseFloat(measure));} +var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableTrDimensionsVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");if(!div.style){return;} +div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";jQuery.extend(support,{boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal;},pixelBoxStyles:function(){computeStyleTests();return pixelBoxStylesVal;},pixelPosition:function(){computeStyleTests();return pixelPositionVal;},reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal;},scrollboxSize:function(){computeStyleTests();return scrollboxSizeVal;},reliableTrDimensions:function(){var table,tr,trChild,trStyle;if(reliableTrDimensionsVal==null){table=document.createElement("table");tr=document.createElement("tr");trChild=document.createElement("div");table.style.cssText="position:absolute;left:-11111px";tr.style.height="1px";trChild.style.height="9px";documentElement.appendChild(table).appendChild(tr).appendChild(trChild);trStyle=window.getComputedStyle(tr);reliableTrDimensionsVal=parseInt(trStyle.height)>3;documentElement.removeChild(table);} +return reliableTrDimensionsVal;}});})();function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);if(computed){ret=computed.getPropertyValue(name)||computed[name];if(ret===""&&!isAttached(elem)){ret=jQuery.style(elem,name);} +if(!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)){width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth;}} +return ret!==undefined?ret+"":ret;} +function addGetHookIf(conditionFn,hookFn){return{get:function(){if(conditionFn()){delete this.get;return;} +return(this.get=hookFn).apply(this,arguments);}};} +var cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style,vendorProps={};function vendorPropName(name){var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in emptyStyle){return name;}}} +function finalPropName(name){var final=jQuery.cssProps[name]||vendorProps[name];if(final){return final;} +if(name in emptyStyle){return name;} +return vendorProps[name]=vendorPropName(name)||name;} +var +rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"};function setPositiveNumber(_elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value;} +function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i=dimension==="width"?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content")){return 0;} +for(;i<4;i+=2){if(box==="margin"){delta+=jQuery.css(elem,box+cssExpand[i],true,styles);} +if(!isBorderBox){delta+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);if(box!=="padding"){delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}else{extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}}else{if(box==="content"){delta-=jQuery.css(elem,"padding"+cssExpand[i],true,styles);} +if(box!=="margin"){delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}}} +if(!isBorderBox&&computedVal>=0){delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]- +computedVal- +delta- +extra- +0.5))||0;} +return delta;} +function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),boxSizingNeeded=!support.boxSizingReliable()||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",valueIsBorderBox=isBorderBox,val=curCSS(elem,dimension,styles),offsetProp="offset"+dimension[0].toUpperCase()+dimension.slice(1);if(rnumnonpx.test(val)){if(!extra){return val;} +val="auto";} +if((!support.boxSizingReliable()&&isBorderBox||!support.reliableTrDimensions()&&nodeName(elem,"tr")||val==="auto"||!parseFloat(val)&&jQuery.css(elem,"display",false,styles)==="inline")&&elem.getClientRects().length){isBorderBox=jQuery.css(elem,"boxSizing",false,styles)==="border-box";valueIsBorderBox=offsetProp in elem;if(valueIsBorderBox){val=elem[offsetProp];}} +val=parseFloat(val)||0;return(val+ +boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val))+"px";} +jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret;}}}},cssNumber:{"animationIterationCount":true,"columnCount":true,"fillOpacity":true,"flexGrow":true,"flexShrink":true,"fontWeight":true,"gridArea":true,"gridColumn":true,"gridColumnEnd":true,"gridColumnStart":true,"gridRow":true,"gridRowEnd":true,"gridRowStart":true,"lineHeight":true,"opacity":true,"order":true,"orphans":true,"widows":true,"zIndex":true,"zoom":true},cssProps:{},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;} +var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(!isCustomProp){name=finalPropName(origName);} +hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);type="number";} +if(value==null||value!==value){return;} +if(type==="number"&&!isCustomProp){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px");} +if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit";} +if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){if(isCustomProp){style.setProperty(name,value);}else{style[name]=value;}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;} +return style[name];}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name);if(!isCustomProp){name=finalPropName(origName);} +hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra);} +if(val===undefined){val=curCSS(elem,name,styles);} +if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name];} +if(extra===""||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val;} +return val;}});jQuery.each(["height","width"],function(_i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra);}):getWidthOrHeight(elem,dimension,extra);}},set:function(elem,value,extra){var matches,styles=getStyles(elem),scrollboxSizeBuggy=!support.scrollboxSize()&&styles.position==="absolute",boxSizingNeeded=scrollboxSizeBuggy||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",subtract=extra?boxModelAdjustment(elem,dimension,extra,isBorderBox,styles):0;if(isBorderBox&&scrollboxSizeBuggy){subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]- +parseFloat(styles[dimension])- +boxModelAdjustment(elem,dimension,"border",false,styles)- +0.5);} +if(subtract&&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[dimension]=value;value=jQuery.css(elem,dimension);} +return setPositiveNumber(elem,value,subtract);}};});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left- +swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left;}))+"px";}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];} +return expanded;}};if(prefix!=="margin"){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber;}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles);} +return map;} +return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name);},name,value,arguments.length>1);}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing);} +jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px");},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this);},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration);}else{this.pos=eased=percent;} +this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this);} +if(hooks&&hooks.set){hooks.set(this);}else{Tween.propHooks._default.set(this);} +return this;}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop];} +result=jQuery.css(tween.elem,tween.prop,"");return!result||result==="auto"?0:result;},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween);}else if(tween.elem.nodeType===1&&(jQuery.cssHooks[tween.prop]||tween.elem.style[finalPropName(tween.prop)]!=null)){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit);}else{tween.elem[tween.prop]=tween.now;}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now;}}};jQuery.easing={linear:function(p){return p;},swing:function(p){return 0.5-Math.cos(p*Math.PI)/2;},_default:"swing"};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var +fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){if(inProgress){if(document.hidden===false&&window.requestAnimationFrame){window.requestAnimationFrame(schedule);}else{window.setTimeout(schedule,jQuery.fx.interval);} +jQuery.fx.tick();}} +function createFxNow(){window.setTimeout(function(){fxNow=undefined;});return(fxNow=Date.now());} +function genFx(type,includeWidth){var which,i=0,attrs={height:type};includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type;} +if(includeWidth){attrs.opacity=attrs.width=type;} +return attrs;} +function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if((tween=collection[index].call(animation,prop,value))){return tween;}}} +function defaultPrefilter(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire();}};} +hooks.unqueued++;anim.always(function(){anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire();}});});} +for(prop in props){value=props[prop];if(rfxtypes.test(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true;}else{continue;}} +orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop);}} +propTween=!jQuery.isEmptyObject(props);if(!propTween&&jQuery.isEmptyObject(orig)){return;} +if(isBox&&elem.nodeType===1){opts.overflow=[style.overflow,style.overflowX,style.overflowY];restoreDisplay=dataShow&&dataShow.display;if(restoreDisplay==null){restoreDisplay=dataPriv.get(elem,"display");} +display=jQuery.css(elem,"display");if(display==="none"){if(restoreDisplay){display=restoreDisplay;}else{showHide([elem],true);restoreDisplay=elem.style.display||restoreDisplay;display=jQuery.css(elem,"display");showHide([elem]);}} +if(display==="inline"||display==="inline-block"&&restoreDisplay!=null){if(jQuery.css(elem,"float")==="none"){if(!propTween){anim.done(function(){style.display=restoreDisplay;});if(restoreDisplay==null){display=style.display;restoreDisplay=display==="none"?"":display;}} +style.display="inline-block";}}} +if(opts.overflow){style.overflow="hidden";anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2];});} +propTween=false;for(prop in orig){if(!propTween){if(dataShow){if("hidden"in dataShow){hidden=dataShow.hidden;}}else{dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay});} +if(toggle){dataShow.hidden=!hidden;} +if(hidden){showHide([elem],true);} +anim.done(function(){if(!hidden){showHide([elem]);} +dataPriv.remove(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop]);}});} +propTween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=propTween.start;if(hidden){propTween.end=propTween.start;propTween.start=0;}}}} +function propFilter(props,specialEasing){var index,name,easing,value,hooks;for(index in props){name=camelCase(index);easing=specialEasing[name];value=props[index];if(Array.isArray(value)){easing=value[1];value=props[index]=value[0];} +if(index!==name){props[name]=value;delete props[index];} +hooks=jQuery.cssHooks[name];if(hooks&&"expand"in hooks){value=hooks.expand(value);delete props[name];for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing;}}}else{specialEasing[name]=easing;}}} +function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem;}),tick=function(){if(stopped){return false;} +var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent);} +deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining;} +if(!length){deferred.notifyWith(elem,[animation,1,0]);} +deferred.resolveWith(elem,[animation]);return false;},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween;},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped){return this;} +stopped=true;for(;index<length;index++){animation.tweens[index].run(1);} +if(gotoEnd){deferred.notifyWith(elem,[animation,1,0]);deferred.resolveWith(elem,[animation,gotoEnd]);}else{deferred.rejectWith(elem,[animation,gotoEnd]);} +return this;}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=Animation.prefilters[index].call(animation,elem,props,animation.opts);if(result){if(isFunction(result.stop)){jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result);} +return result;}} +jQuery.map(props,createTween,animation);if(isFunction(animation.opts.start)){animation.opts.start.call(elem,animation);} +animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));return animation;} +jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);adjustCSS(tween.elem,prop,rcssNum.exec(value),tween);return tween;}]},tweener:function(props,callback){if(isFunction(props)){callback=props;props=["*"];}else{props=props.match(rnothtmlwhite);} +var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];Animation.tweeners[prop]=Animation.tweeners[prop]||[];Animation.tweeners[prop].unshift(callback);}},prefilters:[defaultPrefilter],prefilter:function(callback,prepend){if(prepend){Animation.prefilters.unshift(callback);}else{Animation.prefilters.push(callback);}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};if(jQuery.fx.off){opt.duration=0;}else{if(typeof opt.duration!=="number"){if(opt.duration in jQuery.fx.speeds){opt.duration=jQuery.fx.speeds[opt.duration];}else{opt.duration=jQuery.fx.speeds._default;}}} +if(opt.queue==null||opt.queue===true){opt.queue="fx";} +opt.old=opt.complete;opt.complete=function(){if(isFunction(opt.old)){opt.old.call(this);} +if(opt.queue){jQuery.dequeue(this,opt.queue);}};return opt;};jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback);},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);if(empty||dataPriv.get(this,"finish")){anim.stop(true);}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation);},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd);};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;type=undefined;} +if(clearQueue){this.queue(type||"fx",[]);} +return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index]);}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index]);}}} +for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1);}} +if(dequeue||!gotoEnd){jQuery.dequeue(this,type);}});},finish:function(type){if(type!==false){type=type||"fx";} +return this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;data.finish=true;jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true);} +for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1);}} +for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this);}} +delete data.finish;});}});jQuery.each(["toggle","show","hide"],function(_i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback);};});jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback);};});jQuery.timers=[];jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;fxNow=Date.now();for(;i<timers.length;i++){timer=timers[i];if(!timer()&&timers[i]===timer){timers.splice(i--,1);}} +if(!timers.length){jQuery.fx.stop();} +fxNow=undefined;};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);jQuery.fx.start();};jQuery.fx.interval=13;jQuery.fx.start=function(){if(inProgress){return;} +inProgress=true;schedule();};jQuery.fx.stop=function(){inProgress=null;};jQuery.fx.speeds={slow:600,fast:200,_default:400};jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout);};});};(function(){var input=document.createElement("input"),select=document.createElement("select"),opt=select.appendChild(document.createElement("option"));input.type="checkbox";support.checkOn=input.value!=="";support.optSelected=opt.selected;input=document.createElement("input");input.value="t";input.type="radio";support.radioValue=input.value==="t";})();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1);},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name);});}});jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return;} +if(typeof elem.getAttribute==="undefined"){return jQuery.prop(elem,name,value);} +if(nType!==1||!jQuery.isXMLDoc(elem)){hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:undefined);} +if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return;} +if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;} +elem.setAttribute(name,value+"");return value;} +if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;} +ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret;},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&value==="radio"&&nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val;} +return value;}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&elem.nodeType===1){while((name=attrNames[i++])){elem.removeAttribute(name);}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name);}else{elem.setAttribute(name,name);} +return name;}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(_i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem,name,isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;} +return ret;};});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1);},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name];});}});jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return;} +if(nType!==1||!jQuery.isXMLDoc(elem)){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name];} +if(value!==undefined){if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;} +return(elem[name]=value);} +if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;} +return elem[name];},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");if(tabindex){return parseInt(tabindex,10);} +if(rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href){return 0;} +return-1;}}},propFix:{"for":"htmlFor","class":"className"}});if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent&&parent.parentNode){parent.parentNode.selectedIndex;} +return null;},set:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}};} +jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this;});function stripAndCollapse(value){var tokens=value.match(rnothtmlwhite)||[];return tokens.join(" ");} +function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||"";} +function classesToArray(value){if(Array.isArray(value)){return value;} +if(typeof value==="string"){return value.match(rnothtmlwhite)||[];} +return[];} +jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)));});} +classes=classesToArray(value);if(classes.length){while((elem=this[i++])){curValue=getClass(elem);cur=elem.nodeType===1&&(" "+stripAndCollapse(curValue)+" ");if(cur){j=0;while((clazz=classes[j++])){if(cur.indexOf(" "+clazz+" ")<0){cur+=clazz+" ";}} +finalValue=stripAndCollapse(cur);if(curValue!==finalValue){elem.setAttribute("class",finalValue);}}}} +return this;},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)));});} +if(!arguments.length){return this.attr("class","");} +classes=classesToArray(value);if(classes.length){while((elem=this[i++])){curValue=getClass(elem);cur=elem.nodeType===1&&(" "+stripAndCollapse(curValue)+" ");if(cur){j=0;while((clazz=classes[j++])){while(cur.indexOf(" "+clazz+" ")>-1){cur=cur.replace(" "+clazz+" "," ");}} +finalValue=stripAndCollapse(cur);if(curValue!==finalValue){elem.setAttribute("class",finalValue);}}}} +return this;},toggleClass:function(value,stateVal){var type=typeof value,isValidValue=type==="string"||Array.isArray(value);if(typeof stateVal==="boolean"&&isValidValue){return stateVal?this.addClass(value):this.removeClass(value);} +if(isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal);});} +return this.each(function(){var className,i,self,classNames;if(isValidValue){i=0;self=jQuery(this);classNames=classesToArray(value);while((className=classNames[i++])){if(self.hasClass(className)){self.removeClass(className);}else{self.addClass(className);}}}else if(value===undefined||type==="boolean"){className=getClass(this);if(className){dataPriv.set(this,"__className__",className);} +if(this.setAttribute){this.setAttribute("class",className||value===false?"":dataPriv.get(this,"__className__")||"");}}});},hasClass:function(selector){var className,elem,i=0;className=" "+selector+" ";while((elem=this[i++])){if(elem.nodeType===1&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1){return true;}} +return false;}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret;} +ret=elem.value;if(typeof ret==="string"){return ret.replace(rreturn,"");} +return ret==null?"":ret;} +return;} +valueIsFunction=isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return;} +if(valueIsFunction){val=value.call(this,i,jQuery(this).val());}else{val=value;} +if(val==null){val="";}else if(typeof val==="number"){val+="";}else if(Array.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+"";});} +hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val;}});}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:stripAndCollapse(jQuery.text(elem));}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one",values=one?null:[],max=one?index+1:options.length;if(index<0){i=max;}else{i=one?index:0;} +for(;i<max;i++){option=options[i];if((option.selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value;} +values.push(value);}} +return values;},set:function(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(option.selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1){optionSet=true;}} +if(!optionSet){elem.selectedIndex=-1;} +return values;}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value)){return(elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1);}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value;};}});support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation();};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=lastElement=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;} +if(rfocusMorph.test(type+jQuery.event.triggered)){return;} +if(type.indexOf(".")>-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();} +ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;} +data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return;} +if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;} +for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;} +if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}} +i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){lastElement=cur;event.type=i>1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||Object.create(null))[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur,data);} +handle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault();}}} +event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){if(ontype&&isFunction(elem[type])&&!isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;} +jQuery.event.triggered=type;if(event.isPropagationStopped()){lastElement.addEventListener(type,stopPropagationCallback);} +elem[type]();if(event.isPropagationStopped()){lastElement.removeEventListener(type,stopPropagationCallback);} +jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}} +return event.result;},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event(),event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem);}});jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true);}}});if(!support.focusin){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event));};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this.document||this,attaches=dataPriv.access(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true);} +dataPriv.access(doc,fix,(attaches||0)+1);},teardown:function(){var doc=this.ownerDocument||this.document||this,attaches=dataPriv.access(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);dataPriv.remove(doc,fix);}else{dataPriv.access(doc,fix,attaches);}}};});} +var location=window.location;var nonce={guid:Date.now()};var rquery=(/\?/);jQuery.parseXML=function(data){var xml;if(!data||typeof data!=="string"){return null;} +try{xml=(new window.DOMParser()).parseFromString(data,"text/xml");}catch(e){xml=undefined;} +if(!xml||xml.getElementsByTagName("parsererror").length){jQuery.error("Invalid XML: "+data);} +return xml;};var +rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v);}else{buildParams(prefix+"["+(typeof v==="object"&&v!=null?i:"")+"]",v,traditional,add);}});}else if(!traditional&&toType(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add);}}else{add(prefix,obj);}} +jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+ +encodeURIComponent(value==null?"":value);};if(a==null){return "";} +if(Array.isArray(a)||(a.jquery&&!jQuery.isPlainObject(a))){jQuery.each(a,function(){add(this.name,this.value);});}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add);}} +return s.join("&");};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this;}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type));}).map(function(_i,elem){var val=jQuery(this).val();if(val==null){return null;} +if(Array.isArray(val)){return jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")};});} +return{name:elem.name,value:val.replace(rCRLF,"\r\n")};}).get();}});var +r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/mg,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");originAnchor.href=location.href;function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*";} +var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func)){while((dataType=dataTypes[i++])){if(dataType[0]==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func);}else{(structure[dataType]=structure[dataType]||[]).push(func);}}}};} +function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=(structure===transports);function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false;}else if(seekingTransport){return!(selected=dataTypeOrTransport);}});return selected;} +return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*");} +function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:(deep||(deep={})))[key]=src[key];}} +if(deep){jQuery.extend(true,target,deep);} +return target;} +function ajaxHandleResponses(s,jqXHR,responses){var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type");}} +if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}} +if(dataTypes[0]in responses){finalDataType=dataTypes[0];}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break;} +if(!firstDataType){firstDataType=type;}} +finalDataType=finalDataType||firstDataType;} +if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);} +return responses[finalDataType];}} +function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv];}} +current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response;} +if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType);} +prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev;}else if(prev!=="*"&&prev!==current){conv=converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2];}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1]);} +break;}}}} +if(conv!==true){if(conv&&s.throws){response=conv(response);}else{try{response=conv(response);}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current};}}}}}} +return{state:"success",data:response};} +jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:rlocalProtocol.test(location.protocol),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target);},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined;} +options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders){responseHeaders={};while((match=rheaders.exec(responseHeadersString))){responseHeaders[match[1].toLowerCase()+" "]=(responseHeaders[match[1].toLowerCase()+" "]||[]).concat(match[2]);}} +match=responseHeaders[key.toLowerCase()+" "];} +return match==null?null:match.join(", ");},getAllResponseHeaders:function(){return completed?responseHeadersString:null;},setRequestHeader:function(name,value){if(completed==null){name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name;requestHeaders[name]=value;} +return this;},overrideMimeType:function(type){if(completed==null){s.mimeType=type;} +return this;},statusCode:function(map){var code;if(map){if(completed){jqXHR.always(map[jqXHR.status]);}else{for(code in map){statusCode[code]=[statusCode[code],map[code]];}}} +return this;},abort:function(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText);} +done(0,finalText);return this;}};deferred.promise(jqXHR);s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""];if(s.crossDomain==null){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url;urlAnchor.href=urlAnchor.href;s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!==urlAnchor.protocol+"//"+urlAnchor.host;}catch(e){s.crossDomain=true;}} +if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);} +inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(completed){return jqXHR;} +fireGlobals=jQuery.event&&s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart");} +s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url.replace(rhash,"");if(!s.hasContent){uncached=s.url.slice(cacheURL.length);if(s.data&&(s.processData||typeof s.data==="string")){cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data;delete s.data;} +if(s.cache===false){cacheURL=cacheURL.replace(rantiCache,"$1");uncached=(rquery.test(cacheURL)?"&":"?")+"_="+(nonce.guid++)+ +uncached;} +s.url=cacheURL+uncached;}else if(s.data&&s.processData&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0){s.data=s.data.replace(r20,"+");} +if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]);} +if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL]);}} +if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType);} +jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+ +(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);} +if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||completed)){return jqXHR.abort();} +strAbort="abort";completeDeferred.add(s.complete);jqXHR.done(s.success);jqXHR.fail(s.error);transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport");}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s]);} +if(completed){return jqXHR;} +if(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout");},s.timeout);} +try{completed=false;transport.send(requestHeaders,done);}catch(e){if(completed){throw e;} +done(-1,e);}} +function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(completed){return;} +completed=true;if(timeoutTimer){window.clearTimeout(timeoutTimer);} +transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR,responses);} +if(!isSuccess&&jQuery.inArray("script",s.dataTypes)>-1){s.converters["text script"]=function(){};} +response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified;} +modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified;}} +if(status===204||s.type==="HEAD"){statusText="nocontent";}else if(status===304){statusText="notmodified";}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error;}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0;}}} +jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);} +jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]);} +completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!(--jQuery.active)){jQuery.event.trigger("ajaxStop");}}} +return jqXHR;},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script");}});jQuery.each(["get","post"],function(_i,method){jQuery[method]=function(url,data,callback,type){if(isFunction(data)){type=type||callback;callback=data;data=undefined;} +return jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url));};});jQuery.ajaxPrefilter(function(s){var i;for(i in s.headers){if(i.toLowerCase()==="content-type"){s.contentType=s.headers[i]||"";}}});jQuery._evalUrl=function(url,options,doc){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:true,async:false,global:false,converters:{"text script":function(){}},dataFilter:function(response){jQuery.globalEval(response,options,doc);}});};jQuery.fn.extend({wrapAll:function(html){var wrap;if(this[0]){if(isFunction(html)){html=html.call(this[0]);} +wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);} +wrap.map(function(){var elem=this;while(elem.firstElementChild){elem=elem.firstElementChild;} +return elem;}).append(this);} +return this;},wrapInner:function(html){if(isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});} +return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html);});},unwrap:function(selector){this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes);});return this;}});jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem);};jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);};jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest();}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&("withCredentials"in xhrSupported);support.ajax=xhrSupported=!!xhrSupported;jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain){return{send:function(headers,complete){var i,xhr=options.xhr();xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}} +if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);} +if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";} +for(i in headers){xhr.setRequestHeader(i,headers[i]);} +callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status,xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=xhr.ontimeout=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};} +callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null);}catch(e){if(callback){throw e;}}},abort:function(){if(callback){callback();}}};}});jQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}});jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+ +"application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){jQuery.globalEval(text);return text;}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false;} +if(s.crossDomain){s.type="GET";}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain||s.scriptAttrs){var script,callback;return{send:function(_,complete){script=jQuery("<script>").attr(s.scriptAttrs||{}).prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200,evt.type);}});document.head.appendChild(script[0]);},abort:function(){if(callback){callback();}}};}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||(jQuery.expando+"_"+(nonce.guid++));this[callback]=true;return callback;}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&rjsonp.test(s.data)&&"data");if(jsonProp||s.dataTypes[0]==="jsonp"){callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName);}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName;} +s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called");} +return responseContainer[0];};s.dataTypes[0]="json";overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments;};jqXHR.always(function(){if(overwritten===undefined){jQuery(window).removeProp(callbackName);}else{window[callbackName]=overwritten;} +if(s[callbackName]){s.jsonpCallback=originalSettings.jsonpCallback;oldCallbacks.push(callbackName);} +if(responseContainer&&isFunction(overwritten)){overwritten(responseContainer[0]);} +responseContainer=overwritten=undefined;});return "script";}});support.createHTMLDocument=(function(){var body=document.implementation.createHTMLDocument("").body;body.innerHTML="<form></form><form></form>";return body.childNodes.length===2;})();jQuery.parseHTML=function(data,context,keepScripts){if(typeof data!=="string"){return[];} +if(typeof context==="boolean"){keepScripts=context;context=false;} +var base,parsed,scripts;if(!context){if(support.createHTMLDocument){context=document.implementation.createHTMLDocument("");base=context.createElement("base");base.href=document.location.href;context.head.appendChild(base);}else{context=document;}} +parsed=rsingleTag.exec(data);scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])];} +parsed=buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove();} +return jQuery.merge([],parsed.childNodes);};jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");if(off>-1){selector=stripAndCollapse(url.slice(off));url=url.slice(0,off);} +if(isFunction(params)){callback=params;params=undefined;}else if(params&&typeof params==="object"){type="POST";} +if(self.length>0){jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments;self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText);}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR]);});});} +return this;};jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};if(position==="static"){elem.style.position="relative";} +curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&(curCSSTop+curCSSLeft).indexOf("auto")>-1;if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left;}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0;} +if(isFunction(options)){options=options.call(elem,i,jQuery.extend({},curOffset));} +if(options.top!=null){props.top=(options.top-curOffset.top)+curTop;} +if(options.left!=null){props.left=(options.left-curOffset.left)+curLeft;} +if("using"in options){options.using.call(elem,props);}else{if(typeof props.top==="number"){props.top+="px";} +if(typeof props.left==="number"){props.left+="px";} +curElem.css(props);}}};jQuery.fn.extend({offset:function(options){if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i);});} +var rect,win,elem=this[0];if(!elem){return;} +if(!elem.getClientRects().length){return{top:0,left:0};} +rect=elem.getBoundingClientRect();win=elem.ownerDocument.defaultView;return{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset};},position:function(){if(!this[0]){return;} +var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if(jQuery.css(elem,"position")==="fixed"){offset=elem.getBoundingClientRect();}else{offset=this.offset();doc=elem.ownerDocument;offsetParent=elem.offsetParent||doc.documentElement;while(offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.parentNode;} +if(offsetParent&&offsetParent!==elem&&offsetParent.nodeType===1){parentOffset=jQuery(offsetParent).offset();parentOffset.top+=jQuery.css(offsetParent,"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",true);}} +return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)};},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent;while(offsetParent&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.offsetParent;} +return offsetParent||documentElement;});}});jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)){win=elem;}else if(elem.nodeType===9){win=elem.defaultView;} +if(val===undefined){return win?win[prop]:elem[method];} +if(win){win.scrollTo(!top?val:win.pageXOffset,top?val:win.pageYOffset);}else{elem[method]=val;}},method,val,arguments.length);};});jQuery.each(["top","left"],function(_i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed;}});});jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(isWindow(elem)){return funcName.indexOf("outer")===0?elem["inner"+name]:elem.document.documentElement["client"+name];} +if(elem.nodeType===9){doc=elem.documentElement;return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name]);} +return value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra);},type,chainable?margin:undefined,chainable);};});});jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(_i,type){jQuery.fn[type]=function(fn){return this.on(type,fn);};});jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn);},unbind:function(types,fn){return this.off(types,null,fn);},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn);},undelegate:function(selector,types,fn){return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn);},hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver);}});jQuery.each(("blur focus focusin focusout resize scroll click dblclick "+ +"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+ +"change select submit keydown keypress keyup contextmenu").split(" "),function(_i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name);};});var rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;jQuery.proxy=function(fn,context){var tmp,args,proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;} +if(!isFunction(fn)){return undefined;} +args=slice.call(arguments,2);proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;};jQuery.holdReady=function(hold){if(hold){jQuery.readyWait++;}else{jQuery.ready(true);}};jQuery.isArray=Array.isArray;jQuery.parseJSON=JSON.parse;jQuery.nodeName=nodeName;jQuery.isFunction=isFunction;jQuery.isWindow=isWindow;jQuery.camelCase=camelCase;jQuery.type=toType;jQuery.now=Date.now;jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj));};jQuery.trim=function(text){return text==null?"":(text+"").replace(rtrim,"");};if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery;});} +var +_jQuery=window.jQuery,_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$;} +if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery;} +return jQuery;};if(typeof noGlobal==="undefined"){window.jQuery=window.$=jQuery;} +return jQuery;}); \ No newline at end of file diff --git a/static/rzfwxy.pdf b/static/rzfwxy.pdf new file mode 100644 index 0000000..411de62 --- /dev/null +++ b/static/rzfwxy.pdf Binary files differ diff --git a/static/xx.pdf b/static/xx.pdf new file mode 100644 index 0000000..d116240 --- /dev/null +++ b/static/xx.pdf Binary files differ diff --git a/static/yhyszc.pdf b/static/yhyszc.pdf new file mode 100644 index 0000000..4853ee8 --- /dev/null +++ b/static/yhyszc.pdf Binary files differ diff --git a/static/ys.pdf b/static/ys.pdf new file mode 100644 index 0000000..e73736e --- /dev/null +++ b/static/ys.pdf Binary files differ diff --git a/static/zc.pdf b/static/zc.pdf new file mode 100644 index 0000000..789e096 --- /dev/null +++ b/static/zc.pdf Binary files differ diff --git a/static/zy.pdf b/static/zy.pdf new file mode 100644 index 0000000..cca5ff1 --- /dev/null +++ b/static/zy.pdf Binary files differ diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..8c63047 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,15 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-30 09:19:08 + * @LastEditors: 小明丶 + * @LastEditTime: 2019-08-30 09:47:47 + * @Description: + */ +module.exports = { + configureWebpack: config => { + require('vux-loader').merge(config, { + options: {}, + plugins: ['vux-ui'] + }) + } +} diff --git a/webpack.common.js b/webpack.common.js new file mode 100644 index 0000000..a7678e2 --- /dev/null +++ b/webpack.common.js @@ -0,0 +1,135 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-19 15:23:18 + * @LastEditors: zxq + * @LastEditTime: 2022-08-02 17:22:31 + * @Description: + */ +// webpack通用配置 +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const VueLoaderPlugin = require('vue-loader/lib/plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const CopyPlugin = require('copy-webpack-plugin'); +const vuxLoader = require('vux-loader'); +let env = process.env.NODE_ENV; + +//打包地址 +let srcUrl = '/aic_cus/' +module.exports = { + entry: { + index: "./src/index.js", + }, + output: { + filename: 'js/[name].js', + globalObject:'this', + path: path.resolve(__dirname, 'dist'), + publicPath: env ? srcUrl : '/' //根据线上项目路径更改 /projectpath + }, + /**防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖, + * 简而言之:就是使用cdn~不打包这些变量引用的文件,生成环境时需要在index.html中手动引入cdn + */ + externals: { + vue: "Vue", + axios: "axios", + vuex: "Vuex", + router: "VueRouter", + }, + resolve: { + extensions: ['.vue', '.js', '.less'], + alias: { //别名配置 + "@": path.resolve(__dirname, 'src') + } + }, + module: { + rules: [{ + test: /\.(svg|ttf|eot|woff)\??.*$/, + loader: "url-loader?limit=10000" + }, + { + test: /\.css$/, + use: [ + env ? MiniCssExtractPlugin.loader : "vue-style-loader", + 'css-loader', + "postcss-loader", + ], + }, + { + test: /\.less$/, + use: [ + env ? MiniCssExtractPlugin.loader : "vue-style-loader", + 'css-loader', + "postcss-loader", //posscss-loader顺序一定要在less-loader前面~不然无法解析 + 'less-loader', + // 全局注入less变量,在所有vue组件中可使用 + // 不能写不接受变量的死类名在这些文件里,不然每个vue文件都会注入这些css类,打包后增加css体积! + { + loader: 'style-resources-loader', + options: { + patterns: [ + path.resolve(__dirname, 'src/style/mixins.less'), + ] + } + } + ] + }, + { + test: /\.(png|svg|jpg|gif)/, //处理图片 + use: [{ + loader: 'url-loader', + options: { + limit: 1000000, + outputPath: 'img/', + publicPath: `${srcUrl}img` + //publicPath: './img' + } + }] + }, + { + test: /\.vue$/, + loader: 'vue-loader' + }, + { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + // @vue/babel-preset-jsx vue jsx语法支持 + presets: ['@babel/preset-env', '@vue/babel-preset-jsx'], + plugins: ["dynamic-import-webpack"] //import 函数支持,需要安装 + } + } + }, + ] + }, + plugins: [ + // 静态目录 + new CopyPlugin([{ + from: path.resolve(__dirname, 'static'), + to: 'static', + }, ]), + new VueLoaderPlugin(), + new HtmlWebpackPlugin({ + template: './public/index.html', //以这个文件作为模板 + filename: 'index.html', //打包后的文件名 + title: 'Vue_webpack', + hash: true, + chunksSortMode :'auto', + minify: { + removeComments: true, //移除注释 + collapseWhitespace: true, + removeEmptyAttributes: true, //移除空属性 + removeAttributeQuotes: true //移除属性html标签属性的引号 "" + }, + }), + ], +} + + +// module.exports = vuxLoader.merge(webpackConfig, { +// plugins: [{ +// name: 'vux-ui' +// }] +// } +// ); diff --git a/webpack.dev.js b/webpack.dev.js new file mode 100644 index 0000000..393105d --- /dev/null +++ b/webpack.dev.js @@ -0,0 +1,58 @@ +/* + * @Author: 小明丶 + * @Date: 2019-08-19 15:23:18 + * @LastEditors: Please set LastEditors + * @LastEditTime: 2021-11-11 12:21:29 + * @Description: + */ +// webpack开发环境配置 +const webpack = require('webpack'); +const merge = require('webpack-merge'); +const common = require('./webpack.common.js'); + +module.exports = merge(common, { + mode: 'development', + // 如果大型项目可以使用source-map,如果是中小型项目使用eval-source-map就可以了(方便debug) + devtool: 'source-map', + watch: true, + devServer: { + contentBase: './dist', + inline: true, + hot: true, + host: '127.0.0.1', + //服务端压缩是否开启 + compress: true, + //配置服务端口号 + port: 8020, + // 代理配置 + proxy:{ + "/eic": { + target: 'https://t.finlean.com', + ws: true, + changeOrigin: true + }, + "/image": { + target: 'https://t.finlean.com', + ws: true, + changeOrigin: true + }, + '/jttech': { + target: 'https://t.finlean.com', + secure: false, + changeOrigin: true + } + + } + }, + plugins: [ + new webpack.HotModuleReplacementPlugin(), + ], + watchOptions: { + //不监听的目录 + ignored: /node_modules/, + //当第一个文件更改,会在重新构建前增加延迟。这个选项允许 webpack 将这段时间内进行的任何其他更改都聚合到一次重新构建里。 + aggregateTimeout:800, + // 通过传递 true 开启 polling,或者指定毫秒为单位进行轮询。 + // poll:1000, + } +}); diff --git a/webpack.prod.js b/webpack.prod.js new file mode 100644 index 0000000..cffc0e2 --- /dev/null +++ b/webpack.prod.js @@ -0,0 +1,38 @@ +// webpack生产环境配置 +process.env.NODE_ENV = 'production'; +const webpack = require('webpack'); +const merge = require('webpack-merge'); +const common = require('./webpack.common.js'); +// 每次build之前删除dist文件夹 +const CleanWebpackPlugin = require('clean-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +// css压缩插件 +var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); +// js 压缩插件 +// const Uglify = require('uglifyjs-webpack-plugin'); + +module.exports = merge(common, { + mode:"production", + plugins: [ + // new Uglify(), + // 把vue组件的css文件提取出来 + new MiniCssExtractPlugin({ + filename: './css/[name].[hash].css' + }), + // css压缩(cssnano、OptimizeCssAssetsPlugin) 需要install + new OptimizeCssAssetsPlugin({ + assetNameRegExp: /\.css$/g, + cssProcessor: require('cssnano'), + cssProcessorPluginOptions: { + preset: ['default', { discardComments: { removeAll: true } }], + }, + canPrint: true + }), + // 指定环境 + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + // 清理/dist 文件夹 + new CleanWebpackPlugin(['dist']), + ], +}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..99b3c58 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8827 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@antv/adjust@~0.1.1": + version "0.1.1" + resolved "https://registry.npmmirror.com/@antv/adjust/-/adjust-0.1.1.tgz#e263ab0e1a1941a648842fc086cf65a7e3b75e98" + integrity sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/f2@^3.1.4-beta.2": + version "3.8.11" + resolved "https://registry.npmmirror.com/@antv/f2/-/f2-3.8.11.tgz#e60756372d9a002a2232020c39be29877ca344d5" + integrity sha512-MqLTBZWuK2MKSo5w5GOebyVIcJYc+eT9isNdjiVnt1zr3CqvppcRLgsTmyh8y98I7oxzHUV8RjjGmF8LMr4ejA== + dependencies: + "@antv/adjust" "~0.1.1" + "@antv/scale" "~0.3.3" + "@antv/util" "~2.0.6" + "@babel/runtime" "^7.7.7" + "@types/hammerjs" "^2.0.36" + hammerjs "^2.0.8" + type-fest "^0.15.1" + +"@antv/gl-matrix@^2.7.1": + version "2.7.1" + resolved "https://registry.npmmirror.com/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz#acb8e37f7ab3df01345aba4372d7942be42eba14" + integrity sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== + +"@antv/scale@~0.3.3": + version "0.3.18" + resolved "https://registry.npmmirror.com/@antv/scale/-/scale-0.3.18.tgz#b911f431b3e0b9547b6a65f66d0d3fa295b5ef32" + integrity sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w== + dependencies: + "@antv/util" "~2.0.3" + fecha "~4.2.0" + tslib "^2.0.0" + +"@antv/util@~1.3.1": + version "1.3.1" + resolved "https://registry.npmmirror.com/@antv/util/-/util-1.3.1.tgz#30a34b201ff9126ec0d58c72c8166a9c3e644ccd" + integrity sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA== + dependencies: + "@antv/gl-matrix" "^2.7.1" + +"@antv/util@~2.0.3", "@antv/util@~2.0.6": + version "2.0.17" + resolved "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz#e8ef42aca7892815b229269f3dd10c6b3c7597a9" + integrity sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== + dependencies: + csstype "^3.0.8" + tslib "^2.0.3" + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + +"@babel/core@^7.3.4": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== + dependencies: + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.17.12" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-new-target@^7.17.12": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.3.4": + version "7.18.2" + resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@7.x", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4": + version "7.18.3" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5": + version "7.18.5" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.4.4": + version "7.18.4" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@popperjs/core@^2.9.2": + version "2.11.5" + resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" + integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/hammerjs@^2.0.36": + version "2.0.41" + resolved "https://registry.npmmirror.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa" + integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== + +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": + version "7.0.11" + resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": + version "17.0.43" + resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.43.tgz#7f16898cdd791c9d64069000ad448b47b3ca8353" + integrity sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@vant/icons@^1.7.1": + version "1.8.0" + resolved "https://registry.npmmirror.com/@vant/icons/-/icons-1.8.0.tgz#36b13f2e628b533f6523a93a168cf02f07056674" + integrity sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg== + +"@vant/popperjs@^1.1.0": + version "1.2.1" + resolved "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.2.1.tgz#1300c7c98573df577c21d3000712435edb8a877e" + integrity sha512-qzQlrPE4aOsBzfrktDVwzQy/QICCTKifmjrruhY58+Q2fobUYp/T9QINluIafzsD3VJwgP8+HFVLBsyDmy3VZQ== + dependencies: + "@popperjs/core" "^2.9.2" + +"@videojs/http-streaming@2.14.2": + version "2.14.2" + resolved "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.14.2.tgz#c083c106b13c7cc59ee441fdb46a94169e19a50b" + integrity sha512-K1raSfO/pq5r8iUas3OSYni0kXOj91n8ealIpV02khghzGv9LQ6O3YUqYd/eAhJ1HIrmZWOnrYpK/P+mhUExXQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "3.0.5" + aes-decrypter "3.1.3" + global "^4.4.0" + m3u8-parser "4.7.1" + mpd-parser "0.21.1" + mux.js "6.0.1" + video.js "^6 || ^7" + +"@videojs/vhs-utils@3.0.5", "@videojs/vhs-utils@^3.0.4", "@videojs/vhs-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c" + integrity sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/xhr@2.6.0": + version "2.6.0" + resolved "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80" + integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q== + dependencies: + "@babel/runtime" "^7.5.5" + global "~4.4.0" + is-function "^1.0.1" + +"@vue/babel-helper-vue-jsx-merge-props@^1.0.0", "@vue/babel-helper-vue-jsx-merge-props@^1.0.0-beta.3", "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" + integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== + +"@vue/babel-plugin-transform-vue-jsx@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7" + integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-jsx@^1.0.0-beta.3": + version "1.2.4" + resolved "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" + integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + "@vue/babel-sugar-composition-api-inject-h" "^1.2.1" + "@vue/babel-sugar-composition-api-render-instance" "^1.2.4" + "@vue/babel-sugar-functional-vue" "^1.2.2" + "@vue/babel-sugar-inject-h" "^1.2.2" + "@vue/babel-sugar-v-model" "^1.2.3" + "@vue/babel-sugar-v-on" "^1.2.3" + +"@vue/babel-sugar-composition-api-inject-h@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz#05d6e0c432710e37582b2be9a6049b689b6f03eb" + integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-composition-api-render-instance@^1.2.4": + version "1.2.4" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz#e4cbc6997c344fac271785ad7a29325c51d68d19" + integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-functional-vue@^1.2.2": + version "1.2.2" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658" + integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.2.2": + version "1.2.2" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa" + integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.2.3": + version "1.2.3" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz#fa1f29ba51ebf0aa1a6c35fa66d539bc459a18f2" + integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.2.3": + version "1.2.3" + resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz#342367178586a69f392f04bfba32021d02913ada" + integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + camelcase "^5.0.0" + +"@vue/component-compiler-utils@^3.1.0": + version "3.3.0" + resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" + integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.36" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xmldom/xmldom@^0.7.2": + version "0.7.5" + resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" + integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^5.1.2: + version "5.7.4" + resolved "https://registry.npmmirror.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +aes-decrypter@1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-1.0.3.tgz#9c06b8a5435a5ad09db933f8a014afcf184cc34e" + integrity sha512-rsx8pfx7wJsn+ziYbpJ8XA5c93hKAtBCrfydxJqJCMT+qfjipd/B5wC2xHtBcoxyvlqJcpeAo3K55t0lXOn9yQ== + dependencies: + pkcs7 "^0.2.3" + +aes-decrypter@3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz#65ff5f2175324d80c41083b0e135d1464b12ac35" + integrity sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + pkcs7 "^1.0.4" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.npmmirror.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ== + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-html-community@0.0.8: + version "0.0.8" + resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha512-Ene1hbrinPZ1qPoZp7NSx4jQnh4nr7MtY78pHNb+yr8yHbxmTS7ChGW0a55JKA7TkRDeoQxK4GcJaCvBYplSKA== + +array-find@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" + integrity sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-map@^0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha512-123XMszMB01QKVptpDQ7x1m1pP5NmJIG1kbl0JSPPRezvwQChxAN0Gvzo7rvR1IZ2tOL2tmiy7kY/KKgnpVVpg== + +array-shuffle@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/array-shuffle/-/array-shuffle-1.0.1.tgz#7ea4882a356b4bca5f545e0b6e52eaf6d971557a" + integrity sha512-PBqgo1Y2XWSksBzq3GFPEb798ZrW2snAcmr4drbVeF/6MT/5aBlkGJEvu5A/CzXHf4EjbHOj/ZowatjlIiVidA== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + integrity sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw== + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-validator@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== + +async-validator@~1.8.1: + version "1.8.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0" + integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA== + dependencies: + babel-runtime "6.x" + +async@^2.6.2: + version "2.6.4" + resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + integrity sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ== + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +autoprefixer@^9.4.10: + version "9.8.8" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + 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" + +autosize@^3.0.20: + version "3.0.21" + resolved "https://registry.npmmirror.com/autosize/-/autosize-3.0.21.tgz#f182f40d17757d978a139a4c9ca40c4c0e448603" + integrity sha512-xGFj5jTV4up6+fxRwtnAWiCIx/5N0tEnFn5rdhAkK1Lq2mliLMuGJgP5Bf4phck3sHGYrVKpYwugfJ61MSz9nA== + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + integrity sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw== + +aws4@^1.2.1: + version "1.11.0" + resolved "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axios@^0.15.3: + version "0.15.3" + resolved "https://registry.npmmirror.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + integrity sha512-w3/VNaraEcDri16lbemQWQGKfaFk9O0IZkzKlLeF5r6WWDv9TkcXkP+MWkRK8FbxwfozY/liI+qtvhV295t3HQ== + dependencies: + follow-redirects "1.0.0" + +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.npmmirror.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +babel-helper-vue-jsx-merge-props@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" + integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== + +babel-loader@^8.0.0-beta.0: + version "8.2.5" + resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-dynamic-import-webpack@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-webpack/-/babel-plugin-dynamic-import-webpack-1.1.0.tgz#955306608cdae6191cd1d3f50cf93826ff69f4e1" + integrity sha512-Q/Vxl3zRwC5/DMyg97Ey2UD/f7ApvO+0zXgzwT3G2N7oajGFroqcUEmXZ23QXJsr0Y+DBVNK57saaUnQhCpllA== + +babel-plugin-import@^1.12.0: + version "1.13.5" + resolved "https://registry.npmmirror.com/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz#42eed1c5afd9a35ee1b1f8fe922b07c44077d753" + integrity sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.npmmirror.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + integrity sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA== + +babel-runtime@6.x, babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + integrity sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-arraybuffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.1.1, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +blueimp-md5@^2.11.1, blueimp-md5@^2.6.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" + integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.npmmirror.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + integrity sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q== + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw== + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.20.2, browserslist@^4.20.4: + version "4.20.4" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== + dependencies: + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" + escalade "^3.1.1" + node-releases "^2.0.5" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^12.0.2, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^5.0.0, camelcase@^5.2.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + integrity sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q== + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30001354" + resolved "https://registry.npmmirror.com/caniuse-db/-/caniuse-db-1.0.30001354.tgz#d9448bfbc2a670e920d7a34926d639173b3a5bdb" + integrity sha512-vBZEjO2tk5NM2tT3fGLjfwfhZIRRXtaWm9E6lnmOt2IIRK6IVsqHwOSZCr2QCOQ0KTbaIP+dYI5Xh+IC53ra9g== + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001349: + version "1.0.30001354" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001354.tgz#95c5efdb64148bb4870771749b9a619304755ce5" + integrity sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.npmmirror.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== + dependencies: + chalk "^1.1.3" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.4" + resolved "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +clean-webpack-plugin@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/clean-webpack-plugin/-/clean-webpack-plugin-1.0.1.tgz#b16ee2f1386aea403010236e632447c7d3505f5a" + integrity sha512-gvwfMsqu3HBgTVvaBa1H3AZKO03CHpr5uP92SPIktP3827EovAitwW+1xoqXyTxCuXnLYpMHG5ytS4AoukHDWA== + dependencies: + rimraf "^2.6.1" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + integrity sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ== + dependencies: + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + integrity sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA== + dependencies: + color-name "^1.0.0" + +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.npmmirror.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + integrity sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA== + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +color@^3.0.0: + version "3.2.1" + resolved "https://registry.npmmirror.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.npmmirror.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + integrity sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ== + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w== + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compare-versions@^3.1.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +copy-webpack-plugin@^5.0.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" + integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== + dependencies: + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" + globby "^7.1.1" + is-glob "^4.0.1" + loader-utils "^1.2.3" + minimatch "^3.0.4" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + webpack-log "^2.0.0" + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.1" + resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" + integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== + dependencies: + browserslist "^4.20.4" + semver "7.0.0" + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +countup.js@^1.8.1: + version "1.9.3" + resolved "https://registry.npmmirror.com/countup.js/-/countup.js-1.9.3.tgz#ce3e50cd7160441e478f07da31895edcc0f1c9dd" + integrity sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.npmmirror.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + integrity sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog== + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-line-break@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0" + integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w== + dependencies: + utrie "^1.0.2" + +css-loader@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" + integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== + dependencies: + camelcase "^5.2.0" + icss-utils "^4.1.0" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.14" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^2.0.6" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^2.0.0" + postcss-value-parser "^3.3.0" + schema-utils "^1.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^3.7.4: + version "3.10.0" + resolved "https://registry.npmmirror.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + integrity sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg== + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.npmmirror.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + integrity sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w== + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +csstype@^3.0.8: + version "3.1.0" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^1.2.0: + version "1.5.2" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dijkstrajs@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" + integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== + +dir-glob@^2.0.0: + version "2.2.2" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +draftlog@^1.0.10: + version "1.0.13" + resolved "https://registry.npmmirror.com/draftlog/-/draftlog-1.0.13.tgz#2a415783955dbc6e2bb3b51a93c3d559f26b453d" + integrity sha512-GeMWOpXERBpfVDK6v7m0x1hPg8+g8ZsZWqJl2T17wHqrm4h8fnjiZmXcnCrmwogAc6R3YTxFXax15wezfuyCUw== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.4.147: + version "1.4.155" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.155.tgz#9c7190bf5e8608c5a5e4953b1ccf0facf3d1b49d" + integrity sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA== + +element-ui@^2.13.0: + version "2.15.9" + resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.9.tgz#b03548e007b7ab7496c49a282db92a0fffd7efc7" + integrity sha512-dx45nQLt4Hn87/Z9eRr3ex6KFZbxlFAwEU3QoW3wA5EsYftvHTyL9Pq7VnXXD7hu1Eiaup2jcs6kp+/VSFmXuA== + dependencies: + async-validator "~1.8.1" + babel-helper-vue-jsx-merge-props "^2.0.0" + deepmerge "^1.2.0" + normalize-wheel "^1.0.1" + resize-observer-polyfill "^1.5.0" + throttle-debounce "^1.0.1" + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: + version "1.20.1" + resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + 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.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + 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.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-shim@^4.5.1: + version "4.6.7" + resolved "https://registry.npmmirror.com/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" + integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escodegen@^1.9.0: + version "1.14.3" + resolved "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima-extract-comments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/esprima-extract-comments/-/esprima-extract-comments-0.2.1.tgz#9018d8df37ffd95dd615015a8c5f0475ed743423" + integrity sha512-QYSrHDynXWkC4F/yu6qivFvRh/Zaz9N2j1iX2MqTg2t2YFyk6Ev7h8SSI3ELDWCxhwM7sgJOu/JwAFb0QfEljg== + dependencies: + esprima "^2.7.1" + +esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.npmmirror.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" + integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exif-js@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814" + integrity sha512-1Og9pAzG2FZRVlaavH8bB8BTeHcjMdJhKmeQITkX+uLRCD0xPtKAdZ2clZmQdJ56p9adXtJ8+jwrGp/4505lYg== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== + dependencies: + homedir-polyfill "^1.0.1" + +express@^4.17.1: + version "4.18.1" + resolved "https://registry.npmmirror.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.0" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.10.3" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-comments@^0.10.1: + version "0.10.1" + resolved "https://registry.npmmirror.com/extract-comments/-/extract-comments-0.10.1.tgz#8b6031808a2f5fde1cd67bf8317b918204304408" + integrity sha512-74o4hC+zULVaWX+kqDoZZBUTrfK10GMUyjK2GuiQTPlkqivXOSpA9DkrebXaZP4d95yxS+7uLVdxrKG5ghv+hg== + dependencies: + define-property "^0.2.5" + esprima-extract-comments "^0.2.1" + extend-shallow "^2.0.1" + parse-code-context "^0.2.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastclick@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/fastclick/-/fastclick-1.0.6.tgz#161625b27b1a5806405936bda9a2c1926d06be6a" + integrity sha512-cXyDBT4g0uWl/Xe75QspBDAgAWQ0lkPi/zgp6YFEUHj6WV6VIZl7R6TiDZhdOVU3W4ehp/8tG61Jev1jit+ztQ== + +faye-websocket@^0.11.3, faye-websocket@^0.11.4: + version "0.11.4" + resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fecha@~4.2.0: + version "4.2.3" + resolved "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + integrity sha512-7s+wBk4z5xTwVJuozRBAyRofWKjD3uG2CUjZfZTrw9f+f+z8ZSxOjAqfIDLtc0Hnz+wGK2Y8qd93nGGjXBYKsQ== + dependencies: + debug "^2.2.0" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: + version "1.15.1" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.npmmirror.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + integrity sha512-8HWGSLAPr+AG0hBpsqi5Ob8HrLStN/LWeqhpFl14d7FJgHK48TmgLoALPz69XSUR65YJzDfLUX/BM8+MLJLghQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + 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" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@4.3.2, global@~4.3.0: + version "4.3.2" + resolved "https://registry.npmmirror.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha512-/4AybdwIDU4HkCUbJkZdWpe4P6vuw/CUtu+0I1YlLIPe7OlUO7KNJ+q/rO70CW2/NW6Jc6I62++Hzsf5Alu6rQ== + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +global@^4.3.0, global@^4.3.1, global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.10" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +hammerjs@^2.0.8: + version "2.0.8" + resolved "https://registry.npmmirror.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + integrity sha512-f8xf2GOR6Rgwc9FPTLNzgwB+JQ2/zMauYXSWmX5YV5acex6VomT0ocSuwR7BfXo5MpHi+jL+saaux2fwsGJDKQ== + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + integrity sha512-5Gbp6RAftMYYV3UEI4c4Vv3+a4dQ7taVyvHt+/L6kRt+f4HX1GweAk5UDWN0SvdVnRBzGQ6OG89pGaD9uSFnVw== + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + integrity sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg== + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.npmmirror.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + integrity sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ== + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg== + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +html2canvas@^1.0.0-rc.3: + version "1.4.1" + resolved "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543" + integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA== + dependencies: + css-line-break "^2.1.0" + text-segmentation "^1.0.3" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.6" + resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + integrity sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg== + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== + +icss-utils@^4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== + +individual@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" + integrity sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g== + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.4, ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-manifest-webpack-plugin@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/inline-manifest-webpack-plugin/-/inline-manifest-webpack-plugin-3.0.1.tgz#ca2151063115298e2fd94b669ab76c7dd63e44ad" + integrity sha512-GexpCdYDZlBYE+NKiZQDWupUvfOpIqeCZ7TiVy8/5lhogPuH4GdCNRxnyBUW1DHa3cn1jV0To8nyge2LGbQYrg== + dependencies: + source-map-url "0.4.0" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + +ip@^1.1.0, ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.2: + version "2.0.5" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + integrity sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-base64@^2.1.9: + version "2.6.4" + resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1, js-yaml@^3.6.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + integrity sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ== + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keycode@^2.2.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff" + integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg== + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +less-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^3.0.0" + +less@^2.7.1: + version "2.7.3" + resolved "https://registry.npmmirror.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + integrity sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ== + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + +less@^3.9.0: + version "3.13.1" + resolved "https://registry.npmmirror.com/less/-/less-3.13.1.tgz#0ebc91d2a0e9c0c6735b83d496b0ab0583077909" + integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== + dependencies: + copy-anything "^2.0.1" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + native-request "^1.0.5" + source-map "~0.6.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^0.2.15, loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug== + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.differencewith@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz#bafafbc918b55154e179176a00bb0aefaac854b7" + integrity sha512-/8JFjydAS+4bQuo3CpLMBv7WxGFyk7/etOAsrQUCu0a9QVDemxv0YQ0rFyeZvqlUD314SERfNlgnlqqHmaQ0Cg== + +lodash.isequal@^4.4.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.8: + version "3.0.9" + resolved "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.mergewith@^4.6.0: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash.unionwith@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/lodash.unionwith/-/lodash.unionwith-4.6.0.tgz#74d140b5ca8146e6c643c3724f5152538d9ac1f0" + integrity sha512-Hk8otPCkVM4UxRoft3E5dAREwExyXci6iVPCibHIEiG7neb9KAdWHYS75MYpVTvxDrnpp7WCJNZ84vAk7j7tVA== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== + +lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +m3u8-parser@2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-2.1.0.tgz#c8170329ec1cd515d0d58bb8b762da9896cb0368" + integrity sha512-WbEpQ2FUaNGbJ0YanSeyj9D9ruu4FUvz+ZvebIzI2bSME+PUwcPXO1kKXZkjcPUAFruDikoOI5fWQNIA6JCCOQ== + +m3u8-parser@4.7.1: + version "4.7.1" + resolved "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.7.1.tgz#d6df2c940bb19a01112a04ccc4ff44886a945305" + integrity sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +math-expression-evaluator@^1.2.14: + version "1.3.14" + resolved "https://registry.npmmirror.com/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" + integrity sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.7: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0, mime@^1.2.11, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +mini-css-extract-plugin@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" + integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +mpd-parser@0.21.1: + version "0.21.1" + resolved "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.21.1.tgz#4f4834074ed0a8e265d8b04a5d2d7b5045a4fa55" + integrity sha512-BxlSXWbKE1n7eyEPBnTEkrzhS3PdmkkKdM1pgKbPnPOH0WFZIc0sPOWi7m0Uo3Wd2a4Or8Qf4ZbS7+ASqQ49fw== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + "@xmldom/xmldom" "^0.7.2" + global "^4.4.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mux.js@4.3.2: + version "4.3.2" + resolved "https://registry.npmmirror.com/mux.js/-/mux.js-4.3.2.tgz#576d537df037dc5ec35ec1316b948d815d35c210" + integrity sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ== + +mux.js@6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz#65ce0f7a961d56c006829d024d772902d28c7755" + integrity sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w== + dependencies: + "@babel/runtime" "^7.11.2" + global "^4.4.0" + +nan@^2.12.1: + version "2.16.0" + resolved "https://registry.npmmirror.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-request@^1.0.5: + version "1.1.0" + resolved "https://registry.npmmirror.com/native-request/-/native-request-1.1.0.tgz#acdb30fe2eefa3e1bc8c54b3a6852e9c5c0d3cb0" + integrity sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-cli-config@^0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/node-cli-config/-/node-cli-config-0.0.1.tgz#af7774d85402a6b7cb96c1f91bb24fdd58d7c0b0" + integrity sha512-KYrWes6N0bjCEUicBXqEFdG+wrrrvBZAug4UrU+n6JVxnGKnlVYKZdpoJF1qFkPxcAM81d24lDbSZHRE88FZHw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.npmmirror.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== + dependencies: + abbrev "1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-wheel@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45" + integrity sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.1, object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.4" + resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + dependencies: + array.prototype.reduce "^1.0.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.5" + resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^5.0.1: + version "5.0.8" + resolved "https://registry.npmmirror.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" + integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: + version "2.3.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-code-context@^0.2.1: + version "0.2.2" + resolved "https://registry.npmmirror.com/parse-code-context/-/parse-code-context-0.2.2.tgz#144b8afb7219482d7e88c1eb6a765596f3a6ac0d" + integrity sha512-KXuyOOvLSjubf5bzmYOaK09qUVJSGzAbN1AR/KtkIcP7U5j0BmNun9vOMxrCvkxiRVKoVXTm2YrgIYM4Vfw8tw== + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + +parse5@^3.0.2: + version "3.0.3" + resolved "https://registry.npmmirror.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pdfjs-dist@2.6.347: + version "2.6.347" + resolved "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-2.6.347.tgz#f257ed66e83be900cd0fd28524a2187fb9e25cd5" + integrity sha512-QC+h7hG2su9v/nU1wEI3SnpPIrqJODL7GTDFvR74ANKGq1AFJW16PH8VWnhpiTi9YcLSFV9xLeWSgq+ckHLdVQ== + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pkcs7@^0.2.3: + version "0.2.3" + resolved "https://registry.npmmirror.com/pkcs7/-/pkcs7-0.2.3.tgz#22d60666d01065c5f24439098e4a4830452273be" + integrity sha512-kJRwmADEQUg+qJyRgWLtpEL9q9cFjZschejTEK3GRjKvnsU9G5WWoe/wKqRgbBoqWdVSeTUKP6vIA3Y72M3rWA== + +pkcs7@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb" + integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ== + dependencies: + "@babel/runtime" "^7.5.5" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + integrity sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q== + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + integrity sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w== + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + integrity sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA== + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + integrity sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg== + dependencies: + postcss "^5.0.14" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + integrity sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA== + dependencies: + postcss "^5.0.4" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + integrity sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og== + dependencies: + postcss "^5.0.14" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + integrity sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA== + dependencies: + postcss "^5.0.16" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.npmmirror.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + integrity sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg== + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" + integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== + dependencies: + postcss "^5.0.4" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.npmmirror.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + integrity sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA== + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + integrity sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg== + dependencies: + postcss "^5.0.4" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + integrity sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q== + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + integrity sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA== + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + integrity sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ== + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + integrity sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q== + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + integrity sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow== + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + integrity sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA== + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" + integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-value-parser "^3.3.1" + +postcss-modules-scope@^2.1.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^7.0.6" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + integrity sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ== + dependencies: + postcss "^5.0.5" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + integrity sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + integrity sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg== + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-pxtorem@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-pxtorem/-/postcss-pxtorem-4.0.1.tgz#9c64d0efe4885473cc1cb0305c6ffc3ebb45b1cd" + integrity sha512-oxlU1r19IMBNxmj4yP2h2dLzaFvZeR3rR9Km6+ECA+S0A/IXsOXjd/byH2i/DPGWWBsDVJrRQiRYjLApKkHu0A== + dependencies: + object-assign "^4.1.0" + postcss "^5.2.10" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.npmmirror.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + integrity sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w== + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + integrity sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA== + dependencies: + postcss "^5.0.4" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + integrity sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ== + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + integrity sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.10" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + integrity sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ== + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + integrity sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g== + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + integrity sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w== + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.10, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +"prettier@^1.18.2 || ^2.0.0": + version "2.7.0" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.7.0.tgz#a4fdae07e5596c51c9857ea676cd41a0163879d6" + integrity sha512-nwoX4GMFgxoPC6diHvSwmK/4yU8FFH3V8XWtLQrbj4IBsK2pkYhG4kf/ljF/haaZ/aii+wNJqISrCDPgxGWDVQ== + +pretty-error@^2.0.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.npmmirror.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA== + +progress-bar-webpack-plugin@^1.9.3: + version "1.12.1" + resolved "https://registry.npmmirror.com/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.12.1.tgz#bbf3b1137a4ba2474eeb111377d6c1a580c57dd1" + integrity sha512-tVbPB5xBbqNwdH3mwcxzjL1r1Vrm/xGu93OsqVSAbCaXGoKFvfWIh0gpMDpn2kYsPVRSAIK0pBkP9Vfs+JJibQ== + dependencies: + chalk "^1.1.1" + object.assign "^4.0.1" + progress "^1.1.8" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.npmmirror.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + integrity sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmmirror.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qr.js@0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" + integrity sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ== + +qrcode@^1.4.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b" + integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@6.10.3: + version "6.10.3" + resolved "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + +qs@~6.4.0: + version "6.4.1" + resolved "https://registry.npmmirror.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" + integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.npmmirror.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + integrity sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA== + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" + integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== + dependencies: + balanced-match "^1.0.0" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +request@2.81.0: + version "2.81.0" + resolved "https://registry.npmmirror.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + integrity sha512-IZnsR7voF0miGSu29EXPRgPTuEsI/+aibNSBbN1pplrfartF5wDYGADz3iD9vmBVf2r00rckWZf8BtS5kk7Niw== + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.14.2: + version "1.22.0" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + +rust-result@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" + integrity sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA== + dependencies: + individual "^2.0.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-json-parse@4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" + integrity sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ== + dependencies: + rust-result "^1.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@~1.2.1, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^0.4.0: + version "0.4.7" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^1.10.8: + version "1.10.14" + resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^1.7.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" + integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shake.js@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/shake.js/-/shake.js-1.2.2.tgz#b2ac560a82abe68d78a029623a7088e1b30bacff" + integrity sha512-2onqnUWjVMsW8zFIlJ0gBGIzt33WkExKMToc5qgOX7HuHD1lBu52FQwlk763iZAlVE+ihiT1fHFMabzlVw/xIQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shvl@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz#eb4bd37644f5684bba1fc52c3010c96fb5e6afd1" + integrity sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.npmmirror.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + integrity sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A== + dependencies: + hoek "2.x.x" + +sockjs-client@^1.5.0: + version "1.6.1" + resolved "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" + integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw== + dependencies: + debug "^3.2.7" + eventsource "^2.0.2" + faye-websocket "^0.11.4" + inherits "^2.0.4" + url-parse "^1.5.10" + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + integrity sha512-cabwdhnSNf/tTDMh/DXZXlkeQLvdYT5xfGYBohqHG7wb3bBQrQlHQNWM9NWSOboXXK1zgwz6JzS5e4hZq9vxMw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.21" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha512-liJwHPI9x9d9w5WSIjM58MqGmmb7XzNqwdUA3kSBQ4lmDngexlKwawGzK3J1mKXi6+sysoMDlpVyZh9sv5vRfw== + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.npmmirror.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-comments@^0.4.4: + version "0.4.4" + resolved "https://registry.npmmirror.com/strip-comments/-/strip-comments-0.4.4.tgz#b9caafc4fe905f96c091df89f9a7215f2aa629c6" + integrity sha512-PKuQvshMx4tlA9rWe6zfaWukQtj3Smq1dpJpZsmXE7FL4sl1hHu0L1QP5BYlFF60N76hPiSLT2q3KTDh8XSTHg== + dependencies: + extend-shallow "^2.0.1" + extract-comments "^0.10.1" + +strip-css-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/strip-css-comments/-/strip-css-comments-3.0.0.tgz#7a5625eff8a2b226cf8947a11254da96e13dae89" + integrity sha512-xJwk2yMZ6j+0Clj7ETUfqQ6frsaCIqNGg3zjTVswIt3SbiOsCQgRI1E93hdt/JgGfh5De/sTwxrnrBhhWzMwcg== + dependencies: + is-regexp "^1.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +style-loader@^0.23.1: + version "0.23.1" + resolved "https://registry.npmmirror.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +style-resources-loader@^1.2.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/style-resources-loader/-/style-resources-loader-1.5.0.tgz#6e0585ca475b9dac45387c308be90d74c814f41f" + integrity sha512-fIfyvQ+uvXaCBGGAgfh+9v46ARQB1AWdaop2RpQw0PBVuROsTBqGvx8dj0kxwjGOAyq3vepe4AOK3M6+Q/q2jw== + dependencies: + glob "^7.2.0" + loader-utils "^2.0.0" + schema-utils "^2.7.0" + tslib "^2.3.1" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.npmmirror.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + integrity sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA== + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-segmentation@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" + integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw== + dependencies: + utrie "^1.0.2" + +throttle-debounce@^1.0.1: + version "1.1.0" + resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd" + integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg== + +touch@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" + integrity sha512-7PLLVW4cfMVYXtMgX0ynJvyZDiupF2rzGzzf0yATTzgCgNK98DHjRSTm5zU1bFUtRjFdXNrEynn9+vhflVpC0A== + dependencies: + nopt "~1.0.10" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== + dependencies: + punycode "^1.4.1" + +tslib@^1.10.0: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: + version "2.4.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsml@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/tsml/-/tsml-1.0.1.tgz#89f8218b9d9e257f47d7f6b56d01c5a4d2c68fc3" + integrity sha512-3KmepnH9SUsoOVtg013CRrL7c+AK7ECaquAsJdvu4288EDJuraqBlP4PDXT/rLEJ9YDn4jqLAzRJsnFPx+V6lg== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.15.1: + version "0.15.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" + integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^3.6.0: + version "3.16.0" + resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.16.0.tgz#b778ba0831ca102c1d8ecbdec2d2bdfcc7353190" + integrity sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw== + +uglifyjs-webpack-plugin@^2.1.2: + version "2.2.0" + resolved "https://registry.npmmirror.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz#e75bc80e7f1937f725954c9b4c5a1e967ea9d0d7" + integrity sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + uglify-js "^3.6.0" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + 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" + +underscore@^1.8.3: + version "1.13.4" + resolved "https://registry.npmmirror.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" + integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse@^1.5.10: + version "1.5.10" + resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-toolkit@^2.1.3, url-toolkit@^2.2.1: + version "2.2.5" + resolved "https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607" + integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg== + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmmirror.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmmirror.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +utrie@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645" + integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw== + dependencies: + base64-arraybuffer "^1.0.2" + +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.1.1: + version "2.3.0" + resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validator@^9.3.0: + version "9.4.1" + resolved "https://registry.npmmirror.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663" + integrity sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA== + +vanilla-masker@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/vanilla-masker/-/vanilla-masker-1.2.0.tgz#c2830e9d994a5fecd2261506477c2707fe589756" + integrity sha512-5SQeksiWaRYfbTaLVcqDPlvINGRt7ODbmWqqMMdT4GuZEC01KJm7FxaytscI5GZ9mlkTNQDwqllSHbv1ENxQEA== + +vant@^2.8.7: + version "2.12.47" + resolved "https://registry.npmmirror.com/vant/-/vant-2.12.47.tgz#7179f6120c4224b08431c31ba3928271a5ce4e39" + integrity sha512-D9QgxirzWuSJbLqU+TGgXRZ88OTmGDEtwxDrBr2JuLCZyijrYzc5KIrErd4c1MJoZsmYupqydyLqotoBkbQDjQ== + dependencies: + "@babel/runtime" "7.x" + "@vant/icons" "^1.7.1" + "@vant/popperjs" "^1.1.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + vue-lazyload "1.2.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +"video.js@^5.17.0 || ^6.2.0", "video.js@^5.19.1 || ^6.2.0", video.js@^6.6.0: + version "6.13.0" + resolved "https://registry.npmmirror.com/video.js/-/video.js-6.13.0.tgz#f9487d46327340fa48ecd51372a2981dbb6cde4c" + integrity sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg== + dependencies: + babel-runtime "^6.9.2" + global "4.3.2" + safe-json-parse "4.0.0" + tsml "1.0.1" + videojs-font "2.1.0" + videojs-ie8 "1.1.2" + videojs-vtt.js "0.12.6" + xhr "2.4.0" + +"video.js@^6 || ^7": + version "7.19.2" + resolved "https://registry.npmmirror.com/video.js/-/video.js-7.19.2.tgz#83396db819b61e25328c020c0191dbe7a2187403" + integrity sha512-+rV/lJ1bDoMW3SbYlRp0eC9//RgvfBpEQ0USOyx44tHVxVyMjq+G9jZoiulsDXaIp4BX9q5+/y87TbZUysXBHA== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/http-streaming" "2.14.2" + "@videojs/vhs-utils" "^3.0.4" + "@videojs/xhr" "2.6.0" + aes-decrypter "3.1.3" + global "^4.4.0" + keycode "^2.2.0" + m3u8-parser "4.7.1" + mpd-parser "0.21.1" + mux.js "6.0.1" + safe-json-parse "4.0.0" + videojs-font "3.2.0" + videojs-vtt.js "^0.15.3" + +videojs-contrib-hls@^5.12.2: + version "5.15.0" + resolved "https://registry.npmmirror.com/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz#fe4957367e5d68b7d23f78ed32e37a9dd892a0a8" + integrity sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw== + dependencies: + aes-decrypter "1.0.3" + global "^4.3.0" + m3u8-parser "2.1.0" + mux.js "4.3.2" + url-toolkit "^2.1.3" + video.js "^5.19.1 || ^6.2.0" + videojs-contrib-media-sources "4.7.2" + webwackify "0.1.6" + +videojs-contrib-media-sources@4.7.2: + version "4.7.2" + resolved "https://registry.npmmirror.com/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz#0adf929107d5b74cf2c8abb2824c82177e43858e" + integrity sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ== + dependencies: + global "^4.3.0" + mux.js "4.3.2" + video.js "^5.17.0 || ^6.2.0" + webwackify "0.1.6" + +videojs-flash@^2.1.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/videojs-flash/-/videojs-flash-2.2.1.tgz#1a225dbb1ced200ae9bbf15e01fe4a61086d90f1" + integrity sha512-mHu6TD12EKkxMvr8tg4AcfV/DuVLff427nneoZom3N9Dd2bv0sJOWwdLPQH1v5BCuAuXAVuAOba56ovTl+G3tQ== + dependencies: + global "^4.4.0" + video.js "^6 || ^7" + videojs-swf "5.4.2" + +videojs-font@2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/videojs-font/-/videojs-font-2.1.0.tgz#a25930a67f6c9cfbf2bb88dacb8c6b451f093379" + integrity sha512-zFqWpLrXf1q8NtYx5qtZhMC6SLUFScDmR6j+UGPogobxR21lvXShhnzcNNMdOxJUuFLiToJ/BPpFUQwX4xhpvA== + +videojs-font@3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232" + integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA== + +videojs-hotkeys@^0.2.20: + version "0.2.27" + resolved "https://registry.npmmirror.com/videojs-hotkeys/-/videojs-hotkeys-0.2.27.tgz#0df97952b9dff0e6cc1cf8a439fed7eac9c73f01" + integrity sha512-pwtm1QocRmzJy1PWQsmFVHyeldYHHpLdeATK3FsFHVMmNpz6CROkAn8TFy2UILr8Ghgq134K8jEKNue8HWpudQ== + +videojs-ie8@1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/videojs-ie8/-/videojs-ie8-1.1.2.tgz#a23d3d8608ad7192b69c6077fc4eb848998d35d9" + integrity sha512-0Zb2T4MLkpfZbeGMK/Z93b8Lrepr+rLFoHgQV1CoDeFqXvH7b+Vsd/VHoILGxQrgCSHFQ7mAODR6oyMjuiD4/g== + dependencies: + es5-shim "^4.5.1" + +videojs-swf@5.4.2: + version "5.4.2" + resolved "https://registry.npmmirror.com/videojs-swf/-/videojs-swf-5.4.2.tgz#6964a9bff903b732f3e465314ae478a02a17e8ab" + integrity sha512-FGg+Csioa8/A/EacvFefBdb9Z0rSiMlheHDunZnN3xXfUF43jvjawcWFQnZvrv1Cs1nE1LBrHyUZjF7j2mKOLw== + +videojs-vtt.js@0.12.6: + version "0.12.6" + resolved "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz#e078600bda899eaa6f9c3307134cd0c811947b8e" + integrity sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ== + dependencies: + global "^4.3.1" + +videojs-vtt.js@^0.15.3: + version "0.15.3" + resolved "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz#84260393b79487fcf195d9372f812d7fab83a993" + integrity sha512-5FvVsICuMRx6Hd7H/Y9s9GDeEtYcXQWzGMS+sl4UX3t/zoHp3y+isSfIPRochnTH7h+Bh1ILyC639xy9Z6kPag== + dependencies: + global "^4.3.1" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vue-hot-reload-api@^2.3.0: + version "2.3.4" + resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" + integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== + +vue-i18n@^8.14.0: + version "8.27.1" + resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.27.1.tgz#fe660f6c14793ae404d6a715875d772594a3324f" + integrity sha512-lWrGm4F25qReJ7XxSnFVb2h3PfW54ldnM4C+YLBGGJ75+Myt/kj4hHSTKqsyDLamvNYpvINMicSOdW+7yuqgIQ== + +vue-lazyload@1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/vue-lazyload/-/vue-lazyload-1.2.3.tgz#901f9ec15c7e6ca78781a2bae4a343686bdedb2c" + integrity sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g== + +vue-loader@^15.7.0: + version "15.9.8" + resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz#4b0f602afaf66a996be1e534fb9609dc4ab10e61" + integrity sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog== + dependencies: + "@vue/component-compiler-utils" "^3.1.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +vue-pdf@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/vue-pdf/-/vue-pdf-4.3.0.tgz#d5f790ee7967e7b7aa9089b97b11ab168e19dbd0" + integrity sha512-zd3lJj6CbtrawgaaDDciTDjkJMUKiLWtbEmBg5CvFn9Noe9oAO/GNy/fc5c59qGuFCJ14ibIV1baw4S07e5bSQ== + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + loader-utils "^1.4.0" + pdfjs-dist "2.6.347" + raw-loader "^4.0.2" + vue-resize-sensor "^2.0.0" + worker-loader "^2.0.0" + +vue-resize-sensor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz#3a587fd6802e1688709cf2c5aadae7a0075952bf" + integrity sha512-W+y2EAI/BxS4Vlcca9scQv8ifeBFck56DRtSwWJ2H4Cw1GLNUYxiZxUHHkuzuI5JPW/cYtL1bPO5xPyEXx4LmQ== + +vue-router@^3.0.2: + version "3.5.4" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.5.4.tgz#c453c0b36bc75554de066fefc3f2a9c3212aca70" + integrity sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ== + +vue-style-loader@^4.1.0: + version "4.1.3" + resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" + integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.6.10: + version "2.6.14" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" + integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vue-video-player@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/vue-video-player/-/vue-video-player-5.0.2.tgz#34a42239ff304efc7698da20a4165051d766c1e6" + integrity sha512-IZXeRGGSX4YIp54G0Q5cB7iqh6Ok6Dpa2jRkjdyvMWw7MShJuh54/d5QNb1CZ+CvZUzX/TH7osnpir7mBNcFvQ== + dependencies: + object-assign "^4.1.1" + video.js "^6.6.0" + videojs-contrib-hls "^5.12.2" + videojs-flash "^2.1.0" + videojs-hotkeys "^0.2.20" + +vue@^2.6.10: + version "2.6.14" + resolved "https://registry.npmmirror.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" + integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== + +vuex-persistedstate@^2.5.4: + version "2.7.1" + resolved "https://registry.npmmirror.com/vuex-persistedstate/-/vuex-persistedstate-2.7.1.tgz#25ced829ea5789a2ed7d71a1ba057eb01a5235ad" + integrity sha512-Ktvp6Bt6ApYj35MuxTClu+9Lpukcgl3Z/0o4PU12+Z4jU6lyOMzos0k6zGT5xrukAkGM1VV3EYNwz1TnHPhgFA== + dependencies: + deepmerge "^4.2.2" + shvl "^2.0.0" + +vuex@^3.1.0: + version "3.6.2" + resolved "https://registry.npmmirror.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" + integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== + +vux-blazy@^1.6.4: + version "1.6.4" + resolved "https://registry.npmmirror.com/vux-blazy/-/vux-blazy-1.6.4.tgz#e33073d902e0a3844ef1a463cce3ca2e0aab47bf" + integrity sha512-U86iNVEBXs5RykeAUw9Bku79QDwB+AexpK6txBp/UGs57xLunLzNQaYxxfhJjJ9ObOsTb/M+QIL3IJd1ISrOPA== + +vux-loader@^1.2.9: + version "1.2.9" + resolved "https://registry.npmmirror.com/vux-loader/-/vux-loader-1.2.9.tgz#51de423753332ce102eae1551a28b2b1155142b3" + integrity sha512-AjaD08eyeflQgGwAVJjcwA245h2hTJgXR5pRfLajgmIeEXpbzXs41FnuKLig5U2EQpYyMJ7/f/2Rdlr7cYrIOA== + dependencies: + acorn "^5.1.2" + compare-versions "^3.1.0" + cssnano "^3.7.4" + draftlog "^1.0.10" + escodegen "^1.9.0" + inline-manifest-webpack-plugin "^3.0.1" + js-yaml "^3.6.1" + less "^2.7.1" + loader-utils "^0.2.15" + node-cli-config "^0.0.1" + parse5 "^3.0.2" + progress-bar-webpack-plugin "^1.9.3" + strip-comments "^0.4.4" + strip-css-comments "^3.0.0" + touch "^1.0.0" + underscore "^1.8.3" + uuid "^3.0.1" + webpack-merge "^1.1.2" + webpack-sources "^0.1.2" + +vux-xscroll@^3.1.10: + version "3.1.12" + resolved "https://registry.npmmirror.com/vux-xscroll/-/vux-xscroll-3.1.12.tgz#e352e7f9dc5f9fee9253db331c967dd56b3bc950" + integrity sha512-7GujTTHTyVO61BIU3jMe1c2sGwDasZv0hRkaexiNPBtzhV7eufG0jfJD7vBZ1/9VIox4B5cc2r0tYVEYozSh5g== + +vux@^2.9.2: + version "2.11.1" + resolved "https://registry.npmmirror.com/vux/-/vux-2.11.1.tgz#2aa45eaa6c55fd1a75b0cfa3a09b5bf263967f95" + integrity sha512-OKI6Jc7ZdiQA/Eldjd8kcKQbZEHqSOsxGEX0VdpqrgIg6fHyILuxHWEO0wEhZhmhmdjGr24lhKXsyKufpluJpg== + dependencies: + "@antv/f2" "^3.1.4-beta.2" + array-filter "^1.0.0" + array-find "^1.0.0" + array-map "^0.0.0" + array-shuffle "^1.0.1" + async-validator "^3.5.2" + autosize "^3.0.20" + axios "^0.15.3" + big.js "^3.1.3" + blueimp-md5 "^2.6.0" + countup.js "^1.8.1" + exif-js "^2.3.0" + fastclick "^1.0.6" + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + object-assign "^4.1.0" + qr.js "0.0.0" + shake.js "^1.2.2" + validator "^9.3.0" + vanilla-masker "^1.2.0" + vux-blazy "^1.6.4" + vux-xscroll "^3.1.10" + x-photoswipe "^4.1.3-rc.1" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@^3.2.3: + version "3.3.12" + resolved "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.2.1: + version "3.11.3" + resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#8c86b9d2812bf135d3c9bce6f07b718e30f7c3d3" + integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA== + dependencies: + ansi-html-community "0.0.8" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-1.1.2.tgz#49f2a68ba5fd34bb13c338c184c7028d93843432" + integrity sha512-q6wVGizxrJtw+5olUFwuKGcrKPECrbhuykVeouewqHFbZS5pf02ItvHJhKwFXq92RyVY8s5Yx6mDOk+B7fkPAw== + dependencies: + lodash.clonedeep "^4.5.0" + lodash.differencewith "^4.5.0" + lodash.isequal "^4.4.0" + lodash.isfunction "^3.0.8" + lodash.isplainobject "^4.0.6" + lodash.mergewith "^4.6.0" + lodash.unionwith "^4.6.0" + +webpack-merge@^4.2.1: + version "4.2.2" + resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^0.1.2: + version "0.1.5" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" + integrity sha512-8CXYfPZkWvY0VWadHDQ3q2hUBqk2IJKTTdDPYb5hwnGVVma8bzqTJEerUDrpWwXnuY9vxZ0mGEnjYD0XLhRHeQ== + dependencies: + source-list-map "~0.1.7" + source-map "~0.5.3" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.29.6: + version "4.46.0" + resolved "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +webwackify@0.1.6: + version "0.1.6" + resolved "https://registry.npmmirror.com/webwackify/-/webwackify-0.1.6.tgz#1d42a12ac61823d7e345abde084eaaa62a4a95eb" + integrity sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA== + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.npmmirror.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + integrity sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + 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" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac" + integrity sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw== + dependencies: + loader-utils "^1.0.0" + schema-utils "^0.4.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^6.2.1: + version "6.2.2" + resolved "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +x-photoswipe@^4.1.3-rc.1: + version "4.1.3-rc.1" + resolved "https://registry.npmmirror.com/x-photoswipe/-/x-photoswipe-4.1.3-rc.1.tgz#e761901752dd3dd1f718e538514b609b5df5f7db" + integrity sha512-ok+x+1ufLuBT9dfM5P2FcRefwNniQoVwwfBhGa5gLn8NrSTzNah2p4IElMLwzXuKLtyH4yb+z3IsdDef3FOL5A== + +xhr@2.4.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" + integrity sha512-TUbBsdAuJbX8olk9hsDwGK8P1ri1XlV+PdEWkYw+HQQbpkiBR8PLgD1F3kQDPBs9l4Px34hP9rCYAZOCCAENbw== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" -- Gitblit v1.8.0