├── .github
└── intro.png
├── .gitignore
├── .husky
└── pre-commit
├── LICENSE
├── README.md
├── api
└── prompts.js
├── app.js
├── app.json
├── app.scss
├── assets
├── images
│ ├── loading.gif
│ ├── logo.png
│ ├── prompt-default.svg
│ └── prompt-translator.svg
└── styles
│ ├── iconfont.scss
│ ├── index.scss
│ └── tdesign-variables.scss
├── components
├── custom-loading
│ ├── README.md
│ ├── index.js
│ ├── index.json
│ ├── index.scss
│ ├── index.wxml
│ └── loading.js
├── message-item
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
└── prompt-item
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── config
├── development.js
├── env.js
├── index.js
└── production.js
├── miniprogram-ci.js
├── package.json
├── pages
├── home
│ ├── index.js
│ ├── index.json
│ ├── index.scss
│ └── index.wxml
├── prompt
│ ├── index.js
│ ├── index.json
│ ├── index.scss
│ └── index.wxml
└── settings
│ ├── index.js
│ ├── index.json
│ ├── index.scss
│ └── index.wxml
├── private.[example].key
├── project.config.json
├── project.private.config.json
├── sitemap.json
├── switch-env.js
└── utils
├── lodash.fix.js
├── lodash.js
├── lodash.mini.js
├── request.js
├── router.js
├── util.js
└── wxs.wxs
/.github/intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/.github/intro.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .vscode
3 | .DS_Store
4 | package-lock.json
5 | pnpm-lock.yaml
6 | yarn.lock
7 | node_modules/
8 | miniprogram_npm/
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npx lint-staged
5 | npx lint-staged
6 | npx lint-staged
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Leon Fong
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |

3 |
4 |
5 | 该小程序仅作为演示,如需部署请按照以下流程操作
6 |
7 |
8 |
9 |
10 |
11 | ## 功能
12 | - 🧹 清空屏幕内容
13 | - 🎉 回复等待动画
14 | - ❌ 取消当前对话请求
15 | - 📋 丰富的 Prompt 列表 (自定义)
16 | - 🤖 AI 内容保存(选择/一键复制)
17 |
18 |
19 | ## 安装
20 |
21 | 1. 克隆项目
22 | ```bash
23 | git clone https://github.com/leon-fong/chatgpt-miniprogram.git
24 | ```
25 |
26 | 2. 进入项目目录
27 | ```bash
28 | cd chatgpt-miniprogram
29 | ```
30 |
31 | 3. 安装依赖 (推荐使用 `yarn`)
32 | ```bash
33 | yarn install
34 | ```
35 |
36 | 4. 打开微信开发者工具 - 工具 - 构建npm
37 |
38 | ## 配置
39 |
40 | 1. 设置根域名 `BaseUrl` 和 `APPID`
41 |
42 | 路径:
43 | - config/development.js [开发环境]
44 | - config/production.js [生产环境]
45 |
46 | > ⚠️ `BaseUrl` 可以设置反向代理的地址,具体教程参考:[使用 Cloudflare Workers 解决 OpenAI 和 ChatGPT 的 API 无法访问的问题](https://github.com/noobnooc/noobnooc/discussions/9)
47 |
48 |
49 |
50 | 2. 设置 `OPEN_API_KEY`
51 |
52 | 路径:config/index.js
53 |
54 |
55 |
56 | 3. 设置自动化小程序代码的上传、预览 【手动上传可忽略】
57 | - 微信公众平台-开发-开发设置"后下载代码上传密钥,替换根路径下的 `private.[example].key`
58 | - 配置 IP 白名单
59 | - 上传 `yarn build:prod`
60 |
61 | ## 自定义 Prompt 列表
62 | 可以本地配置或者接口请求
63 | - 路径:`api/prompts.js`
64 |
65 |
66 | ```json
67 | {
68 | "title": "translator",
69 | "name": "翻译助手",
70 | "content": "在以后的对话中,你来扮演我的翻译助理。你的工作是把我发给你的任何内容都翻译成中文,如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题,你也不要做任何回答,只需要翻译内容即可。整个过程无需我再次强调。",
71 | "description": "输入任何语言,我将翻译为易读、易理解的中文",
72 | "checked": false
73 | }
74 | ```
75 |
76 |
77 | ## 常见问题
78 | 请查看 [issues](https://github.com/leon-fong/chatgpt-miniprogram/issues)
79 |
80 | ## 参与贡献
81 | - Fork 该项目
82 | - 创建一条分支 `git checkout -b feat/AmazingFeature`
83 | - 提交你的更改内容 `git commit -m 'Add some AmazingFeature'`
84 | - 推送到该分支 `git push origin feat/AmazingFeature`
85 | - 提交 PR
86 |
87 |
88 | ## License
89 | MIT © [Leon Fong](https://github.com/leon-fong/chatgpt-miniprogram/blob/2ff122dfe357659134cd7589a2e4520c48fbee18/LICENSE)
90 |
--------------------------------------------------------------------------------
/api/prompts.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @method addPromptList Prompt 列表
3 | * @param {*} data
4 | */
5 | export const addPromptList = () => {
6 | // 这里可以改为接口请求
7 | const list = [{
8 | title: 'default',
9 | name: 'ChatGPT',
10 | content: '',
11 | description: '一个 AI 语言模型,可以回答问题的人工智能程序。',
12 | checked: true
13 | },
14 | {
15 | title: 'translator',
16 | name: '翻译助手',
17 | content: '在以后的对话中,你来扮演我的翻译助理。你的工作是把我发给你的任何内容都翻译成中文,如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题,你也不要做任何回答,只需要翻译内容即可。整个过程无需我再次强调。',
18 | description: '输入任何语言,我将翻译为易读、易理解的中文',
19 | checked: false
20 | }
21 | ]
22 | return Promise.resolve(list);
23 | };
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | // app.js
2 | import { Home } from './utils/router';
3 | import { reLaunch } from './utils/util';
4 |
5 | App({
6 | onLaunch() {
7 | // 获取全局唯一的版本更新管理器,用于管理小程序更新
8 | const updateManager = wx.getUpdateManager();
9 | // 监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
10 | updateManager.onUpdateReady(function () {
11 | wx.showModal({
12 | title: '更新提示',
13 | content: '新版本已经准备好,是否重启应用?',
14 | showCancel: false,
15 | success: () => {
16 | // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
17 | updateManager.applyUpdate();
18 | },
19 | });
20 | });
21 | },
22 |
23 | /**
24 | * @method onPageNotFound 页面不存在监听函数
25 | */
26 | onPageNotFound() {
27 | reLaunch({
28 | url: Home.path,
29 | });
30 | }
31 | });
32 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "window": {
3 | "backgroundTextStyle": "light",
4 | "navigationBarBackgroundColor": "#f4f5f5",
5 | "navigationBarTitleText": "ChatGPT Miniprogram",
6 | "navigationBarTextStyle": "black"
7 | },
8 | "lazyCodeLoading": "requiredComponents",
9 | "resolveAlias": {
10 | "~/*": "/*"
11 | },
12 | "usingComponents": {
13 | "custom-loading": "/components/custom-loading/index"
14 | },
15 | "sitemapLocation": "sitemap.json",
16 | "pages": [
17 | "pages/home/index",
18 | "pages/prompt/index",
19 | "pages/settings/index"
20 | ]
21 | }
--------------------------------------------------------------------------------
/app.scss:
--------------------------------------------------------------------------------
1 | /**app.wxss**/
2 | @import '/assets/styles/index.wxss';
3 |
--------------------------------------------------------------------------------
/assets/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/assets/images/loading.gif
--------------------------------------------------------------------------------
/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leon-fong/ChatGPT-miniprogram/59ae79088a7c6c2662aa498404713e4073ec790f/assets/images/logo.png
--------------------------------------------------------------------------------
/assets/images/prompt-default.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/prompt-translator.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/styles/iconfont.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'iconfont'; /* Project id 3718153 */
3 | src: url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.woff2?t=1667092254173') format('woff2'),
4 | url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.woff?t=1667092254173') format('woff'),
5 | url('//at.alicdn.com/t/c/font_3718153_0vtxp0q7aezj.ttf?t=1667092254173') format('truetype');
6 | }
7 |
8 | .iconfont {
9 | font-family: 'iconfont' !important;
10 | font-size: 16px;
11 | font-style: normal;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | }
15 |
16 | .icon-xiaochengxu:before {
17 | content: '\e646';
18 | }
19 |
20 | .icon-pullright:before {
21 | content: '\e720';
22 | }
23 |
24 | .icon-close:before {
25 | content: '\e747';
26 | }
27 |
28 | .icon-leftarrow:before {
29 | content: '\e755';
30 | }
31 |
32 | .icon-home:before {
33 | content: '\e7a7';
34 | }
35 |
36 | .icon-search:before {
37 | content: '\e7b4';
38 | }
39 |
40 | .icon-leftalignment:before {
41 | content: '\e7cf';
42 | }
43 |
--------------------------------------------------------------------------------
/assets/styles/index.scss:
--------------------------------------------------------------------------------
1 |
2 | @import '/assets/styles/tdesign-variables.wxss';
3 |
4 | page {
5 | font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC',
6 | 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
7 | font-size: 28rpx;
8 | font-weight: 300;
9 | color: #031c24;
10 | background-color: #f4f5f5;
11 | }
12 |
13 |
14 | /* scroll-view滚动条样式 */
15 | ::-webkit-scrollbar {
16 | display: none;
17 | }
18 |
19 | .safeAreaInsetBottom {
20 | padding-bottom: calc(env(safe-area-inset-bottom));
21 | }
22 |
23 |
24 | .btn-clear {
25 | background-color: transparent;
26 | border: none;
27 | outline: none;
28 | cursor: pointer;
29 | font-size: inherit;
30 | font-weight: inherit;
31 | color: inherit;
32 | text-align: inherit;
33 | text-decoration: inherit;
34 | margin: 0;
35 | padding: 0;
36 | }
37 |
38 | .btn-clear::after,
39 | .btn-clear::before {
40 | border: none;
41 | }
42 |
--------------------------------------------------------------------------------
/assets/styles/tdesign-variables.scss:
--------------------------------------------------------------------------------
1 | page {
2 | --primary-color:#ffd001;
3 | --primary-lite-color:#ffeb67;
4 | --td-button-primary-bg-color: var(--primary-color);
5 | --td-button-primary-border-color: var(--primary-color);
6 | --td-button-primary-active-bg-color: #ffeb67;
7 | --td-button-primary-active-border-color: #ffeb67;
8 | --td-cell-left-icon-color: #333;
9 | --td-button-primary-disabled-bg: #ffeb67;
10 | --td-button-primary-disabled-border-color: #ffeb67;
11 | }
--------------------------------------------------------------------------------
/components/custom-loading/README.md:
--------------------------------------------------------------------------------
1 | # 介绍
2 |
3 | 通常用于页面请求是展示的 loading,覆盖整个页面,loading 时无法点击页面中任何元素(无法覆盖原生 tabbar), 可自行调整更换组件中的样式。
4 |
5 | ### Props
6 |
7 | | 参数 | 说明 | 类型 | 默认值 |
8 | | ------- | ------------ | ------- | ------ |
9 | | loading | 状态 | boolean | false |
10 | | zIndex | z-index 层级 | number | 1000 |
11 |
--------------------------------------------------------------------------------
/components/custom-loading/index.js:
--------------------------------------------------------------------------------
1 | // components/custom-loading/custom-loading.js
2 | const { systemInfo } = getApp();
3 |
4 | Component({
5 | /**
6 | * 组件的属性列表
7 | */
8 | properties: {
9 | loading: {
10 | // loading状态
11 | type: Boolean,
12 | value: false,
13 | },
14 | zIndex: {
15 | type: Number,
16 | value: 1000,
17 | },
18 | },
19 |
20 | /**
21 | * 组件的初始数据
22 | */
23 | data: {
24 | systemInfo, // 设备信息
25 | },
26 |
27 | /**
28 | * 组件的方法列表
29 | */
30 | methods: {},
31 | pageLifetimes: {
32 | hide() {
33 | this.setData({
34 | loading: false,
35 | });
36 | },
37 | },
38 | });
39 |
--------------------------------------------------------------------------------
/components/custom-loading/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
5 |
--------------------------------------------------------------------------------
/components/custom-loading/index.scss:
--------------------------------------------------------------------------------
1 | /* components/custom-loading/index.wxss */
2 | .loading-wrapper {
3 | display: flex;
4 | align-items: center;
5 | justify-content: center;
6 | position: fixed;
7 | left: 0;
8 | right: 0;
9 | top: 0;
10 | bottom: 0;
11 |
12 | .mask-wrapper {
13 | display: flex;
14 | flex-direction: column;
15 | justify-content: space-around;
16 | align-items: center;
17 | width: 240rpx;
18 | height: 240rpx;
19 | padding: 32rpx;
20 | box-sizing: border-box;
21 | background-color: rgba(3, 28, 36, 1);
22 | border-radius: 16rpx;
23 |
24 | .loading-text {
25 | color: #ffffff;
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/components/custom-loading/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 | 加载中...
17 |
18 |
19 |
--------------------------------------------------------------------------------
/components/custom-loading/loading.js:
--------------------------------------------------------------------------------
1 | const defaultOptions = {
2 | selector: '#custom-loading',
3 | };
4 |
5 | function getContext() {
6 | var pages = getCurrentPages();
7 | return pages[pages.length - 1];
8 | }
9 |
10 | var Loading = (options = {}) => {
11 | options = Object.assign(Object.assign({}, defaultOptions), options);
12 |
13 | return new Promise(() => {
14 | const content = getContext();
15 | if (content) {
16 | const loading = content.selectComponent(options.selector);
17 | delete options.selector;
18 | if (loading) {
19 | loading.setData(options);
20 | } else {
21 | console.warn('未找到 custom-loading 节点,请确认 selector 及 context 是否正确');
22 | }
23 | } else {
24 | console.warn('未找到 custom-loading 节点所在的页面栈信息');
25 | }
26 | });
27 | };
28 |
29 | Loading.show = function () {
30 | return Loading({
31 | loading: true,
32 | });
33 | };
34 |
35 | Loading.clear = function () {
36 | return Loading({
37 | loading: false,
38 | });
39 | };
40 |
41 | export { Loading };
42 |
--------------------------------------------------------------------------------
/components/message-item/index.js:
--------------------------------------------------------------------------------
1 | // components/message-item/index.js
2 | Component({
3 | options:{
4 | virtualHost:true
5 | },
6 | /**
7 | * 组件的属性列表
8 | */
9 | properties: {
10 | role: {
11 | type: String,
12 | default: 'assistant',
13 | },
14 | content: {
15 | type: String,
16 | default: '',
17 | },
18 | },
19 |
20 | /**
21 | * 组件的初始数据
22 | */
23 | data: {
24 |
25 | },
26 |
27 | /**
28 | * 组件的方法列表
29 | */
30 | methods: {
31 | }
32 | })
--------------------------------------------------------------------------------
/components/message-item/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {
4 | "t-avatar": "tdesign-miniprogram/avatar/avatar",
5 | "t-icon": "tdesign-miniprogram/icon/icon"
6 | }
7 | }
--------------------------------------------------------------------------------
/components/message-item/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{content}}
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/components/message-item/index.wxss:
--------------------------------------------------------------------------------
1 | /* components/message-item/index.wxss */
2 | .message {
3 | padding: 20rpx;
4 | font-size: 30rpx;
5 | }
6 |
7 | .message__wrap {
8 | display: flex;
9 | gap: 18rpx;
10 | }
11 |
12 | .message__avatar {
13 | width: 84rpx;
14 | height: 84rpx;
15 | flex-shrink: 0;
16 | border-radius: 50%;
17 | }
18 |
19 | .message__box {
20 | overflow-wrap: break-word;
21 | color: #333;
22 | overflow: hidden;
23 | border-radius: 20rpx;
24 | padding: 18rpx 30rpx;
25 | }
26 |
27 | .message__box--text {
28 | vertical-align: middle;
29 | }
30 |
31 | .message__avatar--assistant {
32 | background-color: skyblue;
33 | }
34 |
35 | .message__avatar--user {
36 | background-color: #fff;
37 | border-radius: 50%;
38 | width: 84rpx;
39 | height: 84rpx;
40 | display: flex;
41 | justify-content: center;
42 | align-items: center;
43 | }
44 |
45 | .message__box--assistant {
46 | background-color: #fff;
47 | }
48 |
49 | .message__box--user {
50 | background-color: var(--primary-lite-color);
51 | }
52 |
53 | .message__layout--reverse {
54 | flex-direction: row-reverse;
55 | }
--------------------------------------------------------------------------------
/components/prompt-item/index.js:
--------------------------------------------------------------------------------
1 | // components/prompt-item/index.js
2 | Component({
3 | /**
4 | * 组件的属性列表
5 | */
6 | properties: {
7 | prompt: {
8 | type: Object,
9 | default: {}
10 | },
11 | checked: {
12 | type: String,
13 | default: '',
14 | },
15 | },
16 |
17 | /**
18 | * 组件的初始数据
19 | */
20 | data: {
21 |
22 | },
23 |
24 | /**
25 | * 组件的方法列表
26 | */
27 | methods: {
28 | onTap: function () {
29 | this.triggerEvent('change', {
30 | checked: this.data.prompt
31 | }, {})
32 | }
33 | }
34 | })
--------------------------------------------------------------------------------
/components/prompt-item/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/components/prompt-item/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{prompt.name}}
7 |
11 |
--------------------------------------------------------------------------------
/components/prompt-item/index.wxss:
--------------------------------------------------------------------------------
1 | /* components/prompt-item/index.wxss */
2 |
3 | .role {
4 | border-radius: 30rpx;
5 | background-image: radial-gradient(circle farthest-corner at 10% 20%, rgba(255, 209, 67, 1) 0%, rgba(255, 145, 83, 1) 90%);
6 | width: 100%;
7 | height: 520rpx;
8 | position: relative;
9 | }
10 |
11 | .role__avatar {
12 | display: flex;
13 | justify-content: flex-end;
14 | padding: 70rpx;
15 | padding-bottom: 0;
16 | }
17 |
18 | .role__avatar image {
19 | width: 200rpx;
20 | height: 200rpx;
21 | border-radius: 50%;
22 | }
23 |
24 | .role__title {
25 | padding: 22rpx 30rpx;
26 | font-size: 52rpx;
27 | font-weight: bolder;
28 | color: #fff;
29 | }
30 |
31 | .role__footer {
32 | color: #fff;
33 | border-top: 1rpx solid rgba(255, 255, 255, .4);
34 | padding: 30rpx 24rpx;
35 | border-radius: 0 0 30rpx 30rpx;
36 | display: flex;
37 | align-items: center;
38 | }
39 |
40 | .role__footer--btn {
41 | flex-shrink: 0;
42 | width: 174rpx;
43 | border-radius: 48px;
44 | background-color: #fff;
45 | color: #333;
46 | font-size: 26rpx;
47 | }
48 |
49 | .role__footer--description {
50 | flex: auto;
51 | opacity: .7;
52 | font-size: 26rpx;
53 | padding-right: 40rpx;
54 | }
55 |
56 | .btn-gold {
57 | background-image: linear-gradient(109.6deg, rgba(255, 194, 48, 1) 11.2%, rgba(255, 124, 0, 1) 100.2%);
58 | color: #fff;
59 | }
60 |
61 | .checked {
62 | opacity: .5;
63 | color: #999;
64 | }
65 |
66 | .bg-default {
67 | background-image: linear-gradient(to right, rgb(182, 244, 146), rgb(51, 139, 147));
68 | }
69 |
70 | .bg-translator {
71 | background-image: radial-gradient(circle farthest-corner at 10% 20%, rgba(3, 235, 255, 1) 0%, rgba(152, 70, 242, 1) 100.2%);
72 | }
73 |
74 |
75 | .scale-appear {
76 | animation: enlarge-appear .8s ease-out;
77 | }
78 |
79 | @keyframes enlarge-appear {
80 | 0% {
81 | opacity: 0;
82 | transform: scale(75%) rotate(-90deg);
83 | }
84 |
85 | 100% {
86 | opacity: 1;
87 | transform: scale(100%) rotate(0deg);
88 | }
89 | }
--------------------------------------------------------------------------------
/config/development.js:
--------------------------------------------------------------------------------
1 | // 开发环境
2 | const env = 'development';
3 | // 根域名
4 | const baseUrl = '';
5 | // AppId
6 | const appId = '';
7 |
8 | export default {
9 | env,
10 | baseUrl,
11 | appId,
12 | };
13 |
--------------------------------------------------------------------------------
/config/env.js:
--------------------------------------------------------------------------------
1 | import development from './development.js'; // 开发环境
2 | import production from './production.js'; // 生产环境
3 |
4 | const configInfo = {
5 | development,
6 | production
7 | };
8 |
9 | const NODE_ENV = 'development';
10 | // const NODE_ENV = 'production';
11 | const config = configInfo[NODE_ENV];
12 |
13 | export default config;
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | import config from './env.js'; // 测试环境
2 | /**
3 | * 环境
4 | */
5 | export const env = config.env;
6 | /**
7 | * 日志状态, 生产环境禁止打印日志
8 | */
9 | export const log = env === 'production' ? false : true;
10 | /**
11 | * 版本号
12 | */
13 | export const version = '1.0.0';
14 | /**
15 | * OpenAI 密钥
16 | */
17 | export const OPEN_API_KEY = '';
18 | /**
19 | * AppId
20 | */
21 | export const appId = config.appId;
22 | /**
23 | * 根域名
24 | */
25 | export const baseUrl = config.baseUrl;
26 | /**
27 | * 分享图片
28 | */
29 | export const shareImage = config.shareImage;
30 |
31 | export default {
32 | env,
33 | log,
34 | version,
35 | appId,
36 | baseUrl,
37 | OPEN_API_KEY
38 | };
39 |
--------------------------------------------------------------------------------
/config/production.js:
--------------------------------------------------------------------------------
1 | // 生产环境
2 | const env = 'production';
3 | // 根域名
4 | const baseUrl = '';
5 | // AppId
6 | const appId = '';
7 | // 分享图片
8 | const shareImage = '';
9 |
10 | export default {
11 | env,
12 | baseUrl,
13 | appId,
14 | shareImage
15 | };
16 |
--------------------------------------------------------------------------------
/miniprogram-ci.js:
--------------------------------------------------------------------------------
1 | import dayjs from 'dayjs';
2 | import ci from 'miniprogram-ci';
3 | import { version, appId, env } from './config/index.js';
4 | import path from 'path';
5 |
6 | (async () => {
7 | const project = new ci.Project({
8 | appid: appId, // 小程序AppID
9 | type: 'miniProgram',
10 | // projectPath: './', // 打包文件路径
11 | projectPath: path.resolve('./'), // 打包文件路径
12 | privateKeyPath: `private.${appId}.key`, // 秘钥路径,根据appId放置多个
13 | ignores: ['node_modules/**/*'],
14 | });
15 |
16 | // 在有需要的时候构建npm
17 | const warning = await ci.packNpm(project, {
18 | ignores: [],
19 | reporter: (infos) => {
20 | console.log('========================👇 构建回调信息 👇========================\n\n', infos, '\n\n');
21 | },
22 | });
23 |
24 | const uploadResult = await ci.upload({
25 | // 项目对象
26 | project,
27 | // 版本号
28 | version,
29 | // 自定义备注
30 | desc: `体验版本更新于${dayjs().format('YYYY-MM-DD HH:mm:ss')}`,
31 | // #编译设置
32 | setting: {
33 | es6: true,
34 | es7: true,
35 | minify: true,
36 | minifyJS: true,
37 | minifyWXML: true,
38 | minifyWXSS: true,
39 | autoPrefixWXSS: true,
40 | },
41 | // 进度更新监听函数
42 | onProgressUpdate: console.log,
43 | });
44 |
45 | const previewResult = await ci.preview({
46 | project,
47 | desc: `预览版本更新于${dayjs().format('YYYY-MM-DD HH:mm:ss')}`, // 此备注将显示在“小程序助手”开发版列表中
48 | setting: {
49 | es6: true,
50 | es7: true,
51 | minify: true,
52 | minifyJS: true,
53 | minifyWXML: true,
54 | minifyWXSS: true,
55 | autoPrefixWXSS: true,
56 | },
57 | // qrcodeFormat: 'image',
58 | // qrcodeOutputDest: '/path/to/qrcode/file/destination.jpg',
59 | onProgressUpdate: console.log,
60 | // pagePath: 'pages/index/index', // 预览页面
61 | // searchQuery: 'a=1&b=2', // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&`
62 | });
63 | console.log('========================👇 ci.packNpm 👇========================\n\n', warning, '\n\n');
64 | console.log('========================👇 ci.upload 👇========================\n\n', uploadResult, '\n\n');
65 | console.log('========================👇 ci.preview 👇========================\n\n', previewResult, '\n\n');
66 | console.log('========================👇 Env 👇========================\n\n', env, '\n\n');
67 | console.log('========================👇 AppId 👇========================\n\n', appId, '\n\n');
68 | console.log('========================👇 Version 👇========================\n\n', version, '\n\n');
69 | })();
70 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "miniprogram-template",
3 | "version": "1.0.0",
4 | "author": "Leon",
5 | "main": "",
6 | "scripts": {
7 | "build:dev": "cross-env NODE_ENV=development run-s switch-env miniprogram-ci",
8 | "build:prod": "cross-env NODE_ENV=production run-s switch-env miniprogram-ci",
9 | "prepare": "husky install && npx husky add .husky/pre-commit 'npx lint-staged'",
10 | "prettier": "prettier --write",
11 | "prettier-lint": "prettier --write .",
12 | "eslint": "eslint --ext .ts,.js",
13 | "eslint-lint": "eslint --ext .ts,.js .",
14 | "switch-env": "node switch-env.js",
15 | "miniprogram-ci": "node miniprogram-ci.js"
16 | },
17 | "dependencies": {
18 | "dayjs": "^1.11.5",
19 | "tdesign-miniprogram": "^1.0.3"
20 | },
21 | "devDependencies": {
22 | "eslint": "^8.23.0",
23 | "husky": "^8.0.1",
24 | "lint-staged": "^13.0.3",
25 | "miniprogram-ci": "^1.8.35",
26 | "prettier": "^2.7.1",
27 | "cross-env": "^7.0.3",
28 | "npm-run-all": "^4.1.5"
29 | },
30 | "husky": {
31 | "hooks": {
32 | "pre-commit": "lint-staged"
33 | }
34 | },
35 | "lint-staged": {
36 | "*.js": [
37 | "npm run eslint"
38 | ],
39 | "*.{js,wxs,wxml,wxss,json,scss}": [
40 | "npm run prettier"
41 | ]
42 | },
43 | "type": "module"
44 | }
--------------------------------------------------------------------------------
/pages/home/index.js:
--------------------------------------------------------------------------------
1 | // pages/chat.js
2 | import {
3 | baseUrl,
4 | OPEN_API_KEY
5 | } from '~/config/index';
6 | let requestTask = null
7 | let currentContent = ''
8 | const defaultPrompt = {
9 | title: 'default',
10 | name: 'ChatGPT',
11 | content: '',
12 | description: '一个 AI 语言模型,可以回答问题的人工智能程序。\n\n 【点击顶部可以切换不同角色哦~】',
13 | checked: true
14 | }
15 | Page({
16 | /**
17 | * 页面的初始数据
18 | */
19 | data: {
20 | inputValue: '',
21 | fixedTop: 34,
22 | contentHeight: 188,
23 | currentItem: 'bottom',
24 | messageList: [],
25 | loading: false,
26 | thinking: false,
27 | currentPrompt: defaultPrompt,
28 | },
29 | handleSwitchRole() {
30 | wx.navigateTo({
31 | url: '/pages/prompt/index',
32 | })
33 | },
34 | handleToSettings() {
35 | wx.navigateTo({
36 | url: '/pages/settings/index',
37 | })
38 | },
39 | handleClear() {
40 | if (this.data.loading || this.data.thinking) return
41 | this.setData({
42 | messageList: [],
43 | })
44 | },
45 | handleValueChange(e) {
46 | this.setData({
47 | inputValue: e.detail.value
48 | })
49 | },
50 | handleKeyboardHeightChange(e) {
51 | const isExpand = e.detail.height > 0
52 | const query = wx.createSelectorQuery()
53 | query.select('#footer').boundingClientRect((rect) => {
54 | const fixedTop = e.detail.height > 0 ? e.detail.height : 34
55 | if (isExpand) {
56 | this.setData({
57 | fixedTop,
58 | currentItem: 'bottom',
59 | contentHeight: rect.height + fixedTop + 104
60 | })
61 | } else {
62 | this.setData({
63 | fixedTop,
64 | contentHeight: rect.height + fixedTop + 104
65 | })
66 | }
67 |
68 | }).exec()
69 | },
70 | async handleSendClick() {
71 | const userInput = this.data.inputValue.trim()
72 | if (userInput.trim() === '') return
73 | const messageList = this.data.messageList
74 | const timestamp = Date.now();
75 | const newMessage = {
76 | id: timestamp,
77 | role: 'user',
78 | content: userInput
79 | }
80 | this.setData({
81 | messageList: messageList.concat(newMessage),
82 | inputValue: '',
83 | loading: true,
84 | thinking: true
85 | })
86 | this.requestWithMessage(userInput)
87 | },
88 | requestWithMessage(content) {
89 | let messages = [{
90 | role: 'user',
91 | content
92 | }]
93 | const currentPrompt = this.data.currentPrompt
94 | if (currentPrompt.content) {
95 | messages.unshift({
96 | role: 'system',
97 | content: currentPrompt.content
98 | })
99 | }
100 | requestTask = wx.request({
101 | url: `${baseUrl}/v1/chat/completions`,
102 | data: {
103 | model: "gpt-3.5-turbo",
104 | messages
105 | },
106 | method: 'POST',
107 | responseType: 'text',
108 | header: {
109 | 'content-type': 'application/json',
110 | Authorization: `Bearer ${OPEN_API_KEY}`,
111 | },
112 | success: async (res) => {
113 | const result = res.data?.choices[0].message.content || "";
114 | if (result) {
115 | const timestamp = Date.now();
116 | const index = this.data.messageList.length
117 | const newMessageList = `messageList[${index}]`
118 | const contentCharArr = result.trim().split("")
119 | const content_key = `messageList[${index}].content`
120 | const finished_key = `messageList[${index}].finished`
121 | this.setData({
122 | thinking: false,
123 | [newMessageList]: {
124 | id: timestamp,
125 | role: 'assistant',
126 | finished: false
127 | }
128 | })
129 | currentContent = ''
130 | this.show_text(0, content_key, finished_key, contentCharArr);
131 | } else {
132 | this.setData({
133 | thinking: false,
134 | loading: false
135 | })
136 | wx.showToast({
137 | icon: 'none',
138 | title: '系统繁忙,请重试',
139 | })
140 | }
141 | },
142 | fail: (err) => {
143 | if (!baseUrl) {
144 | console.error('尚未配置有效的 baseUrl', baseUrl)
145 | }
146 |
147 | wx.showToast({
148 | icon: 'none',
149 | title: `服务请求错误`,
150 | })
151 | this.setData({
152 | thinking: false,
153 | loading: false
154 | })
155 | }
156 | });
157 |
158 | },
159 | show_text(key = 0, content_key, finished_key, value) {
160 | if (key >= value.length) {
161 | this.setData({
162 | loading: false,
163 | [finished_key]: true
164 | })
165 | wx.vibrateShort()
166 | return;
167 | }
168 | currentContent = currentContent + value[key]
169 | this.setData({
170 | [content_key]: currentContent,
171 | })
172 | setTimeout(() => {
173 | this.show_text(key + 1, content_key, finished_key, value);
174 | }, 50);
175 | },
176 | handleCancel() {
177 | if (!requestTask) return
178 | requestTask.abort()
179 | wx.showToast({
180 | icon: 'none',
181 | title: '已取消',
182 | })
183 | },
184 | onShow() {
185 | wx.hideHomeButton()
186 | const prompt = wx.getStorageSync('prompt')
187 | if (!Object.keys(prompt).length) return
188 | this.setData({
189 | currentPrompt: prompt
190 | })
191 | this.handleClear()
192 | }
193 | })
--------------------------------------------------------------------------------
/pages/home/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "disableScroll": true,
3 | "usingComponents": {
4 | "t-button": "tdesign-miniprogram/button/button",
5 | "t-textarea": "tdesign-miniprogram/textarea/textarea",
6 | "t-input": "tdesign-miniprogram/input/input",
7 | "t-icon": "tdesign-miniprogram/icon/icon",
8 | "t-tag": "tdesign-miniprogram/tag/tag",
9 | "t-popup": "tdesign-miniprogram/popup/popup",
10 | "message-item": "../../components/message-item",
11 | "t-navbar": "tdesign-miniprogram/navbar/navbar",
12 | "t-avatar": "tdesign-miniprogram/avatar/avatar",
13 | "t-overlay": "tdesign-miniprogram/overlay/overlay"
14 | },
15 | "navigationStyle": "custom"
16 | }
--------------------------------------------------------------------------------
/pages/home/index.scss:
--------------------------------------------------------------------------------
1 | /* pages/chat.wxss */
2 | .chat {
3 | background-color: #EDEDED;
4 | height: 100vh;
5 | font-family: "PingFang SC", system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, Helvetica, Arial, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol;
6 | }
7 |
8 | .navbar__title {
9 | position: relative;
10 | display: flex;
11 | align-items: center;
12 | }
13 |
14 | .navbar__title text {
15 | font-weight: bold;
16 | padding-left: 16rpx;
17 | padding-right: 4rpx;
18 | font-size: 34rpx;
19 | }
20 |
21 | .content__gutter--top {
22 | width: 100%;
23 | height: 20rpx;
24 | }
25 |
26 | .content__gutter--bottom {
27 | height: 1rpx;
28 | width: 100%;
29 | }
30 |
31 | .footer {
32 | position: fixed;
33 | bottom: 0;
34 | width: 100%;
35 | background-color: #F6F6F6;
36 | box-sizing: border-box;
37 | padding: 16rpx;
38 | }
39 |
40 | .footer__content {
41 | display: flex;
42 | gap: 10rpx;
43 | }
44 |
45 | .footer__content--clear {
46 | width: 80rpx;
47 | display: flex;
48 | justify-content: center;
49 | align-items: center;
50 | }
51 |
52 | .footer__safe-area {
53 | position: fixed;
54 | bottom: 0;
55 | left: 0;
56 | right: 0;
57 | height: 68rpx;
58 | background-color: #F6F6F6;
59 | }
60 |
61 | .t-input-padding-class {
62 | padding: 20rpx 22rpx !important;
63 | border-radius: 12rpx;
64 | display: flex;
65 | align-items: center;
66 | justify-content: center;
67 | }
68 |
69 |
70 | .loading {
71 | text-align: center;
72 | color: #999999;
73 | grid-template-columns: auto;
74 | }
75 |
76 |
77 | @-webkit-keyframes fade_in_out {
78 | 0% {
79 | opacity: 1;
80 | }
81 |
82 | 50% {
83 | opacity: 0.25;
84 | }
85 |
86 | 100% {
87 | opacity: 1;
88 | }
89 | }
90 |
91 | @keyframes fade_in_out {
92 | 0% {
93 | opacity: 1;
94 | }
95 |
96 | 50% {
97 | opacity: 0.25;
98 | }
99 |
100 | 100% {
101 | opacity: 1;
102 | }
103 | }
104 |
105 | .bubble {
106 | display: flex;
107 | width: 100%;
108 | height: 100%;
109 | align-items: center;
110 | justify-content: space-around;
111 | gap: 10rpx;
112 | }
113 |
114 | .bubble__circle {
115 | width: 15rpx;
116 | height: 15rpx;
117 | border-radius: 100%;
118 | background-color: #bbb;
119 | -webkit-animation: fade_in_out 1.5s infinite;
120 | animation: fade_in_out 1.5s infinite;
121 | -webkit-animation-delay: 0.25s;
122 | animation-delay: 0.25s;
123 | }
124 |
125 | .bubble__circle:first-of-type {
126 | margin-left: 20.8333333333px;
127 | -webkit-animation-delay: 0s;
128 | animation-delay: 0s;
129 | }
130 |
131 | .bubble__circle:last-of-type {
132 | margin-right: 20.8333333333px;
133 | -webkit-animation-delay: 0.5s;
134 | animation-delay: 0.5s;
135 | }
136 |
137 | ::-webkit-scrollbar {
138 | width: 0;
139 | height: 0;
140 | }
--------------------------------------------------------------------------------
/pages/home/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{currentPrompt.name}}
7 |
8 |
9 |
10 |
11 |
12 |
13 | {{currentPrompt.description}}
14 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
38 |
39 |
--------------------------------------------------------------------------------
/pages/prompt/index.js:
--------------------------------------------------------------------------------
1 | // pages/prompt/prompt.js
2 | import {
3 | addPromptList
4 | } from "~/api/prompts";
5 | import {
6 | Loading
7 | } from "~/components/custom-loading/loading";
8 |
9 | Page({
10 | data: {
11 | checkedPrompt: "default",
12 | promptList: [],
13 | },
14 |
15 | handleClick(e) {
16 | const {
17 | checked
18 | } = e.detail;
19 | if (!Object.keys(e.detail).length) return;
20 | if (checked.title === this.checkedPrompt) return;
21 | wx.setStorageSync("prompt", checked);
22 | this.setData({
23 | checkedPrompt: checked.title,
24 | });
25 | wx.navigateBack();
26 | },
27 | getPromptList() {
28 | return new Promise(async (resolve) => {
29 | try {
30 | const response = await addPromptList();
31 | resolve(response);
32 | } catch (error) {
33 | Loading.clear();
34 | console.error(
35 | "========================👇 请求错误 👇========================\n\n",
36 | error,
37 | "\n\n"
38 | );
39 | }
40 | });
41 | },
42 | async initData() {
43 | Loading.show();
44 | const promptList = await this.getPromptList();
45 | this.setData({
46 | promptList,
47 | },
48 | () => {
49 | Loading.clear();
50 | }
51 | );
52 | },
53 | onLoad(options) {
54 | this.initData();
55 | },
56 | onShow() {
57 | const prompt = wx.getStorageSync("prompt");
58 | if (!prompt) return;
59 | this.setData({
60 | checkedPrompt: prompt.title,
61 | });
62 | },
63 | });
--------------------------------------------------------------------------------
/pages/prompt/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "usingComponents": {
3 | "prompt-item": "../../components/prompt-item"
4 | }
5 | }
--------------------------------------------------------------------------------
/pages/prompt/index.scss:
--------------------------------------------------------------------------------
1 | /* pages/prompt/prompt.wxss */
2 | .prompt{
3 | padding: 30rpx;
4 | padding-bottom: 44rpx;
5 | display: flex;
6 | flex-direction: column;
7 | gap: 30rpx;
8 | }
--------------------------------------------------------------------------------
/pages/prompt/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/pages/settings/index.js:
--------------------------------------------------------------------------------
1 | // pages/settings/settings.js
2 | Page({
3 | handleCellGroupClick(e) {
4 | const cell = e.target.dataset.cell
5 | switch (cell) {
6 | case 'feedback':
7 | wx.showToast({
8 | icon: 'none',
9 | title: '你点击了“我要吐槽”',
10 | })
11 | break;
12 | case 'reward':
13 | wx.showToast({
14 | icon: 'none',
15 | title: '你点击了“打赏咖啡”',
16 | })
17 | break;
18 | case 'github':
19 | wx.setClipboardData({
20 | data: 'https://github.com/leon-fong/chatgpt-miniprogram',
21 | success() {
22 | wx.showToast({
23 | title: '已复制',
24 | })
25 | }
26 | })
27 | break;
28 | }
29 | },
30 |
31 | })
--------------------------------------------------------------------------------
/pages/settings/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "disableScroll": true,
3 | "usingComponents": {
4 | "t-cell": "tdesign-miniprogram/cell/cell",
5 | "t-cell-group": "tdesign-miniprogram/cell-group/cell-group"
6 | },
7 | "navigationBarTitleText": " "
8 | }
--------------------------------------------------------------------------------
/pages/settings/index.scss:
--------------------------------------------------------------------------------
1 | .settings__header {
2 | padding: 30rpx 0;
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .settings__header--logo {
9 | width: 200rpx;
10 | border-radius: 50;
11 | }
12 |
13 | .settings__header--title {
14 | margin-top: 30rpx;
15 | margin-bottom: 60rpx;
16 | font-size: 34rpx;
17 | font-weight: bold;
18 | color: #333;
19 | }
20 | .settings__more {
21 | padding: 30rpx;
22 | }
23 |
24 | .settings__footer {
25 | position: fixed;
26 | bottom: 44rpx;
27 | width: 100%;
28 | padding-bottom: 40rpx;
29 | }
30 | .settings__footer text {
31 | display: inline-block;
32 | width: 100%;
33 | text-align: center;
34 | font-size: 24rpx;
35 | color: #ccc;
36 | }
37 |
38 | .dialog-image {
39 | width: 622rpx;
40 | height: 600rpx;
41 | }
42 |
--------------------------------------------------------------------------------
/pages/settings/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
19 |
--------------------------------------------------------------------------------
/private.[example].key:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | 你的小程序代码上传密钥
3 | -----END RSA PRIVATE KEY-----
4 |
--------------------------------------------------------------------------------
/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目配置文件",
3 | "packOptions": {
4 | "ignore": [],
5 | "include": []
6 | },
7 | "setting": {
8 | "bundle": false,
9 | "userConfirmedBundleSwitch": false,
10 | "urlCheck": true,
11 | "scopeDataCheck": false,
12 | "coverView": true,
13 | "es6": true,
14 | "postcss": true,
15 | "compileHotReLoad": false,
16 | "lazyloadPlaceholderEnable": false,
17 | "preloadBackgroundData": false,
18 | "minified": true,
19 | "autoAudits": false,
20 | "newFeature": false,
21 | "uglifyFileName": false,
22 | "uploadWithSourceMap": true,
23 | "useIsolateContext": true,
24 | "nodeModules": false,
25 | "enhance": true,
26 | "useMultiFrameRuntime": true,
27 | "useApiHook": true,
28 | "useApiHostProcess": true,
29 | "showShadowRootInWxmlPanel": true,
30 | "packNpmManually": false,
31 | "enableEngineNative": false,
32 | "packNpmRelationList": [],
33 | "minifyWXSS": true,
34 | "showES6CompileOption": false,
35 | "minifyWXML": true,
36 | "babelSetting": {
37 | "ignore": [],
38 | "disablePlugins": [],
39 | "outputPath": ""
40 | },
41 | "useCompilerPlugins": [
42 | "sass"
43 | ],
44 | "condition": false
45 | },
46 | "compileType": "miniprogram",
47 | "libVersion": "2.19.4",
48 | "appid": "Your APPID",
49 | "projectname": "miniprogram-template",
50 | "condition": {},
51 | "editorSetting": {
52 | "tabIndent": "tab",
53 | "tabSize": 2
54 | }
55 | }
--------------------------------------------------------------------------------
/project.private.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
3 | "projectname": "awesome-chatgpt-miniprogram",
4 | "setting": {
5 | "compileHotReLoad": true,
6 | "urlCheck": false
7 | },
8 | "libVersion": "2.27.2",
9 | "condition": {
10 | "miniprogram": {
11 | "list": [
12 | {
13 | "name": "",
14 | "pathName": "pages/home/index",
15 | "query": "",
16 | "launchMode": "default",
17 | "scene": null
18 | },
19 | {
20 | "name": "",
21 | "pathName": "pages/prompt/index",
22 | "query": "",
23 | "launchMode": "default",
24 | "scene": null
25 | },
26 | {
27 | "name": "",
28 | "pathName": "pages/settings/index",
29 | "query": "",
30 | "launchMode": "default",
31 | "scene": null
32 | }
33 | ]
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
3 | "rules": [{
4 | "action": "allow",
5 | "page": "*"
6 | }]
7 | }
--------------------------------------------------------------------------------
/switch-env.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 | import path, { dirname } from 'path';
3 | import { fileURLToPath } from 'url';
4 |
5 | (() => {
6 | const __filename = fileURLToPath(import.meta.url);
7 | const __dirname = dirname(__filename);
8 | const envJs = path.join(__dirname, 'config/env.js');
9 | const switchEnvJS = path.join(__dirname, 'switch-env.js');
10 | const data = fs.readFileSync(envJs, {
11 | encoding: 'utf8',
12 | });
13 | const editData = data
14 | .split(';')
15 | .map((item) => {
16 | return item.replace('[NODE_ENV]', `['${process.env.NODE_ENV}']`);
17 | })
18 | .join(';');
19 | fs.writeFileSync(envJs, editData, { encoding: 'utf8' });
20 | fs.unlinkSync(switchEnvJS);
21 | })();
--------------------------------------------------------------------------------
/utils/lodash.fix.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 修复 微信小程序中lodash 的运行环境
3 | */
4 |
5 | global.Object = Object;
6 | global.Array = Array;
7 | // global.Buffer = Buffer
8 | global.DataView = DataView;
9 | global.Date = Date;
10 | global.Error = Error;
11 | global.Float32Array = Float32Array;
12 | global.Float64Array = Float64Array;
13 | global.Function = Function;
14 | global.Int8Array = Int8Array;
15 | global.Int16Array = Int16Array;
16 | global.Int32Array = Int32Array;
17 | global.Map = Map;
18 | global.Math = Math;
19 | global.Promise = Promise;
20 | global.RegExp = RegExp;
21 | global.Set = Set;
22 | global.String = String;
23 | global.Symbol = Symbol;
24 | global.TypeError = TypeError;
25 | global.Uint8Array = Uint8Array;
26 | global.Uint8ClampedArray = Uint8ClampedArray;
27 | global.Uint16Array = Uint16Array;
28 | global.Uint32Array = Uint32Array;
29 | global.WeakMap = WeakMap;
30 | global.clearTimeout = clearTimeout;
31 | global.isFinite = isFinite;
32 | global.parseInt = parseInt;
33 | global.setTimeout = setTimeout;
34 |
--------------------------------------------------------------------------------
/utils/lodash.js:
--------------------------------------------------------------------------------
1 | import '~/utils/lodash.fix';
2 | import { chunk } from '~/utils/lodash.mini';
3 |
4 | export default {
5 | chunk,
6 | };
7 |
--------------------------------------------------------------------------------
/utils/lodash.mini.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4 | */
5 | (function () {
6 | function n(n, t, r) {
7 | switch (r.length) {
8 | case 0:
9 | return n.call(t);
10 | case 1:
11 | return n.call(t, r[0]);
12 | case 2:
13 | return n.call(t, r[0], r[1]);
14 | case 3:
15 | return n.call(t, r[0], r[1], r[2]);
16 | }
17 | return n.apply(t, r);
18 | }
19 | function t(n, t, r, e) {
20 | for (var u = -1, i = null == n ? 0 : n.length; ++u < i; ) {
21 | var o = n[u];
22 | t(e, o, r(o), n);
23 | }
24 | return e;
25 | }
26 | function r(n, t) {
27 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e && false !== t(n[r], r, n); );
28 | return n;
29 | }
30 | function e(n, t) {
31 | for (var r = null == n ? 0 : n.length; r-- && false !== t(n[r], r, n); );
32 | return n;
33 | }
34 | function u(n, t) {
35 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (!t(n[r], r, n)) return false;
36 | return true;
37 | }
38 | function i(n, t) {
39 | for (var r = -1, e = null == n ? 0 : n.length, u = 0, i = []; ++r < e; ) {
40 | var o = n[r];
41 | t(o, r, n) && (i[u++] = o);
42 | }
43 | return i;
44 | }
45 | function o(n, t) {
46 | return !(null == n || !n.length) && -1 < v(n, t, 0);
47 | }
48 | function f(n, t, r) {
49 | for (var e = -1, u = null == n ? 0 : n.length; ++e < u; ) if (r(t, n[e])) return true;
50 | return false;
51 | }
52 | function c(n, t) {
53 | for (var r = -1, e = null == n ? 0 : n.length, u = Array(e); ++r < e; ) u[r] = t(n[r], r, n);
54 | return u;
55 | }
56 | function a(n, t) {
57 | for (var r = -1, e = t.length, u = n.length; ++r < e; ) n[u + r] = t[r];
58 | return n;
59 | }
60 | function l(n, t, r, e) {
61 | var u = -1,
62 | i = null == n ? 0 : n.length;
63 | for (e && i && (r = n[++u]); ++u < i; ) r = t(r, n[u], u, n);
64 | return r;
65 | }
66 | function s(n, t, r, e) {
67 | var u = null == n ? 0 : n.length;
68 | for (e && u && (r = n[--u]); u--; ) r = t(r, n[u], u, n);
69 | return r;
70 | }
71 | function h(n, t) {
72 | for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (t(n[r], r, n)) return true;
73 | return false;
74 | }
75 | function p(n, t, r) {
76 | var e;
77 | return (
78 | r(n, function (n, r, u) {
79 | if (t(n, r, u)) return (e = r), false;
80 | }),
81 | e
82 | );
83 | }
84 | function _(n, t, r, e) {
85 | var u = n.length;
86 | for (r += e ? 1 : -1; e ? r-- : ++r < u; ) if (t(n[r], r, n)) return r;
87 | return -1;
88 | }
89 | function v(n, t, r) {
90 | if (t === t)
91 | n: {
92 | --r;
93 | for (var e = n.length; ++r < e; )
94 | if (n[r] === t) {
95 | n = r;
96 | break n;
97 | }
98 | n = -1;
99 | }
100 | else n = _(n, d, r);
101 | return n;
102 | }
103 | function g(n, t, r, e) {
104 | --r;
105 | for (var u = n.length; ++r < u; ) if (e(n[r], t)) return r;
106 | return -1;
107 | }
108 | function d(n) {
109 | return n !== n;
110 | }
111 | function y(n, t) {
112 | var r = null == n ? 0 : n.length;
113 | return r ? m(n, t) / r : F;
114 | }
115 | function b(n) {
116 | return function (t) {
117 | return null == t ? T : t[n];
118 | };
119 | }
120 | function x(n) {
121 | return function (t) {
122 | return null == n ? T : n[t];
123 | };
124 | }
125 | function j(n, t, r, e, u) {
126 | return (
127 | u(n, function (n, u, i) {
128 | r = e ? ((e = false), n) : t(r, n, u, i);
129 | }),
130 | r
131 | );
132 | }
133 | function w(n, t) {
134 | var r = n.length;
135 | for (n.sort(t); r--; ) n[r] = n[r].c;
136 | return n;
137 | }
138 | function m(n, t) {
139 | for (var r, e = -1, u = n.length; ++e < u; ) {
140 | var i = t(n[e]);
141 | i !== T && (r = r === T ? i : r + i);
142 | }
143 | return r;
144 | }
145 | function A(n, t) {
146 | for (var r = -1, e = Array(n); ++r < n; ) e[r] = t(r);
147 | return e;
148 | }
149 | function E(n, t) {
150 | return c(t, function (t) {
151 | return [t, n[t]];
152 | });
153 | }
154 | function k(n) {
155 | return function (t) {
156 | return n(t);
157 | };
158 | }
159 | function S(n, t) {
160 | return c(t, function (t) {
161 | return n[t];
162 | });
163 | }
164 | function O(n, t) {
165 | return n.has(t);
166 | }
167 | function I(n, t) {
168 | for (var r = -1, e = n.length; ++r < e && -1 < v(t, n[r], 0); );
169 | return r;
170 | }
171 | function R(n, t) {
172 | for (var r = n.length; r-- && -1 < v(t, n[r], 0); );
173 | return r;
174 | }
175 | function z(n) {
176 | return '\\' + Un[n];
177 | }
178 | function W(n) {
179 | var t = -1,
180 | r = Array(n.size);
181 | return (
182 | n.forEach(function (n, e) {
183 | r[++t] = [e, n];
184 | }),
185 | r
186 | );
187 | }
188 | function B(n, t) {
189 | return function (r) {
190 | return n(t(r));
191 | };
192 | }
193 | function L(n, t) {
194 | for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) {
195 | var o = n[r];
196 | (o !== t && '__lodash_placeholder__' !== o) || ((n[r] = '__lodash_placeholder__'), (i[u++] = r));
197 | }
198 | return i;
199 | }
200 | function U(n) {
201 | var t = -1,
202 | r = Array(n.size);
203 | return (
204 | n.forEach(function (n) {
205 | r[++t] = n;
206 | }),
207 | r
208 | );
209 | }
210 | function C(n) {
211 | var t = -1,
212 | r = Array(n.size);
213 | return (
214 | n.forEach(function (n) {
215 | r[++t] = [n, n];
216 | }),
217 | r
218 | );
219 | }
220 | function D(n) {
221 | if (Rn.test(n)) {
222 | for (var t = (On.lastIndex = 0); On.test(n); ) ++t;
223 | n = t;
224 | } else n = Qn(n);
225 | return n;
226 | }
227 | function M(n) {
228 | return Rn.test(n) ? n.match(On) || [] : n.split('');
229 | }
230 | var T,
231 | $ = 1 / 0,
232 | F = NaN,
233 | N = [
234 | ['ary', 128],
235 | ['bind', 1],
236 | ['bindKey', 2],
237 | ['curry', 8],
238 | ['curryRight', 16],
239 | ['flip', 512],
240 | ['partial', 32],
241 | ['partialRight', 64],
242 | ['rearg', 256],
243 | ],
244 | P = /\b__p\+='';/g,
245 | Z = /\b(__p\+=)''\+/g,
246 | q = /(__e\(.*?\)|\b__t\))\+'';/g,
247 | V = /&(?:amp|lt|gt|quot|#39);/g,
248 | K = /[&<>"']/g,
249 | G = RegExp(V.source),
250 | H = RegExp(K.source),
251 | J = /<%-([\s\S]+?)%>/g,
252 | Y = /<%([\s\S]+?)%>/g,
253 | Q = /<%=([\s\S]+?)%>/g,
254 | X = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
255 | nn = /^\w*$/,
256 | tn = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
257 | rn = /[\\^$.*+?()[\]{}|]/g,
258 | en = RegExp(rn.source),
259 | un = /^\s+|\s+$/g,
260 | on = /^\s+/,
261 | fn = /\s+$/,
262 | cn = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
263 | an = /\{\n\/\* \[wrapped with (.+)\] \*/,
264 | ln = /,? & /,
265 | sn = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
266 | hn = /\\(\\)?/g,
267 | pn = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
268 | _n = /\w*$/,
269 | vn = /^[-+]0x[0-9a-f]+$/i,
270 | gn = /^0b[01]+$/i,
271 | dn = /^\[object .+?Constructor\]$/,
272 | yn = /^0o[0-7]+$/i,
273 | bn = /^(?:0|[1-9]\d*)$/,
274 | xn = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
275 | jn = /($^)/,
276 | wn = /['\n\r\u2028\u2029\\]/g,
277 | mn =
278 | '[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*',
279 | An = '(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])' + mn,
280 | En =
281 | '(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])',
282 | kn = RegExp("['\u2019]", 'g'),
283 | Sn = RegExp('[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]', 'g'),
284 | On = RegExp('\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|' + En + mn, 'g'),
285 | In = RegExp(
286 | [
287 | "[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",
288 | An,
289 | ].join('|'),
290 | 'g'
291 | ),
292 | Rn = RegExp('[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]'),
293 | zn = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
294 | Wn =
295 | 'Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout'.split(
296 | ' '
297 | ),
298 | Bn = {};
299 | (Bn['[object Float32Array]'] =
300 | Bn['[object Float64Array]'] =
301 | Bn['[object Int8Array]'] =
302 | Bn['[object Int16Array]'] =
303 | Bn['[object Int32Array]'] =
304 | Bn['[object Uint8Array]'] =
305 | Bn['[object Uint8ClampedArray]'] =
306 | Bn['[object Uint16Array]'] =
307 | Bn['[object Uint32Array]'] =
308 | true),
309 | (Bn['[object Arguments]'] =
310 | Bn['[object Array]'] =
311 | Bn['[object ArrayBuffer]'] =
312 | Bn['[object Boolean]'] =
313 | Bn['[object DataView]'] =
314 | Bn['[object Date]'] =
315 | Bn['[object Error]'] =
316 | Bn['[object Function]'] =
317 | Bn['[object Map]'] =
318 | Bn['[object Number]'] =
319 | Bn['[object Object]'] =
320 | Bn['[object RegExp]'] =
321 | Bn['[object Set]'] =
322 | Bn['[object String]'] =
323 | Bn['[object WeakMap]'] =
324 | false);
325 | var Ln = {};
326 | (Ln['[object Arguments]'] =
327 | Ln['[object Array]'] =
328 | Ln['[object ArrayBuffer]'] =
329 | Ln['[object DataView]'] =
330 | Ln['[object Boolean]'] =
331 | Ln['[object Date]'] =
332 | Ln['[object Float32Array]'] =
333 | Ln['[object Float64Array]'] =
334 | Ln['[object Int8Array]'] =
335 | Ln['[object Int16Array]'] =
336 | Ln['[object Int32Array]'] =
337 | Ln['[object Map]'] =
338 | Ln['[object Number]'] =
339 | Ln['[object Object]'] =
340 | Ln['[object RegExp]'] =
341 | Ln['[object Set]'] =
342 | Ln['[object String]'] =
343 | Ln['[object Symbol]'] =
344 | Ln['[object Uint8Array]'] =
345 | Ln['[object Uint8ClampedArray]'] =
346 | Ln['[object Uint16Array]'] =
347 | Ln['[object Uint32Array]'] =
348 | true),
349 | (Ln['[object Error]'] = Ln['[object Function]'] = Ln['[object WeakMap]'] = false);
350 | var Un = { '\\': '\\', "'": "'", '\n': 'n', '\r': 'r', '\u2028': 'u2028', '\u2029': 'u2029' },
351 | Cn = parseFloat,
352 | Dn = parseInt,
353 | Mn = typeof global == 'object' && global && global.Object === Object && global,
354 | Tn = typeof self == 'object' && self && self.Object === Object && self,
355 | $n = Mn || Tn || Function('return this')(),
356 | Fn = typeof exports == 'object' && exports && !exports.nodeType && exports,
357 | Nn = Fn && typeof module == 'object' && module && !module.nodeType && module,
358 | Pn = Nn && Nn.exports === Fn,
359 | Zn = Pn && Mn.process,
360 | qn = (function () {
361 | try {
362 | var n = Nn && Nn.f && Nn.f('util').types;
363 | return n ? n : Zn && Zn.binding && Zn.binding('util');
364 | } catch (n) {}
365 | })(),
366 | Vn = qn && qn.isArrayBuffer,
367 | Kn = qn && qn.isDate,
368 | Gn = qn && qn.isMap,
369 | Hn = qn && qn.isRegExp,
370 | Jn = qn && qn.isSet,
371 | Yn = qn && qn.isTypedArray,
372 | Qn = b('length'),
373 | Xn = x({
374 | '\xc0': 'A',
375 | '\xc1': 'A',
376 | '\xc2': 'A',
377 | '\xc3': 'A',
378 | '\xc4': 'A',
379 | '\xc5': 'A',
380 | '\xe0': 'a',
381 | '\xe1': 'a',
382 | '\xe2': 'a',
383 | '\xe3': 'a',
384 | '\xe4': 'a',
385 | '\xe5': 'a',
386 | '\xc7': 'C',
387 | '\xe7': 'c',
388 | '\xd0': 'D',
389 | '\xf0': 'd',
390 | '\xc8': 'E',
391 | '\xc9': 'E',
392 | '\xca': 'E',
393 | '\xcb': 'E',
394 | '\xe8': 'e',
395 | '\xe9': 'e',
396 | '\xea': 'e',
397 | '\xeb': 'e',
398 | '\xcc': 'I',
399 | '\xcd': 'I',
400 | '\xce': 'I',
401 | '\xcf': 'I',
402 | '\xec': 'i',
403 | '\xed': 'i',
404 | '\xee': 'i',
405 | '\xef': 'i',
406 | '\xd1': 'N',
407 | '\xf1': 'n',
408 | '\xd2': 'O',
409 | '\xd3': 'O',
410 | '\xd4': 'O',
411 | '\xd5': 'O',
412 | '\xd6': 'O',
413 | '\xd8': 'O',
414 | '\xf2': 'o',
415 | '\xf3': 'o',
416 | '\xf4': 'o',
417 | '\xf5': 'o',
418 | '\xf6': 'o',
419 | '\xf8': 'o',
420 | '\xd9': 'U',
421 | '\xda': 'U',
422 | '\xdb': 'U',
423 | '\xdc': 'U',
424 | '\xf9': 'u',
425 | '\xfa': 'u',
426 | '\xfb': 'u',
427 | '\xfc': 'u',
428 | '\xdd': 'Y',
429 | '\xfd': 'y',
430 | '\xff': 'y',
431 | '\xc6': 'Ae',
432 | '\xe6': 'ae',
433 | '\xde': 'Th',
434 | '\xfe': 'th',
435 | '\xdf': 'ss',
436 | '\u0100': 'A',
437 | '\u0102': 'A',
438 | '\u0104': 'A',
439 | '\u0101': 'a',
440 | '\u0103': 'a',
441 | '\u0105': 'a',
442 | '\u0106': 'C',
443 | '\u0108': 'C',
444 | '\u010a': 'C',
445 | '\u010c': 'C',
446 | '\u0107': 'c',
447 | '\u0109': 'c',
448 | '\u010b': 'c',
449 | '\u010d': 'c',
450 | '\u010e': 'D',
451 | '\u0110': 'D',
452 | '\u010f': 'd',
453 | '\u0111': 'd',
454 | '\u0112': 'E',
455 | '\u0114': 'E',
456 | '\u0116': 'E',
457 | '\u0118': 'E',
458 | '\u011a': 'E',
459 | '\u0113': 'e',
460 | '\u0115': 'e',
461 | '\u0117': 'e',
462 | '\u0119': 'e',
463 | '\u011b': 'e',
464 | '\u011c': 'G',
465 | '\u011e': 'G',
466 | '\u0120': 'G',
467 | '\u0122': 'G',
468 | '\u011d': 'g',
469 | '\u011f': 'g',
470 | '\u0121': 'g',
471 | '\u0123': 'g',
472 | '\u0124': 'H',
473 | '\u0126': 'H',
474 | '\u0125': 'h',
475 | '\u0127': 'h',
476 | '\u0128': 'I',
477 | '\u012a': 'I',
478 | '\u012c': 'I',
479 | '\u012e': 'I',
480 | '\u0130': 'I',
481 | '\u0129': 'i',
482 | '\u012b': 'i',
483 | '\u012d': 'i',
484 | '\u012f': 'i',
485 | '\u0131': 'i',
486 | '\u0134': 'J',
487 | '\u0135': 'j',
488 | '\u0136': 'K',
489 | '\u0137': 'k',
490 | '\u0138': 'k',
491 | '\u0139': 'L',
492 | '\u013b': 'L',
493 | '\u013d': 'L',
494 | '\u013f': 'L',
495 | '\u0141': 'L',
496 | '\u013a': 'l',
497 | '\u013c': 'l',
498 | '\u013e': 'l',
499 | '\u0140': 'l',
500 | '\u0142': 'l',
501 | '\u0143': 'N',
502 | '\u0145': 'N',
503 | '\u0147': 'N',
504 | '\u014a': 'N',
505 | '\u0144': 'n',
506 | '\u0146': 'n',
507 | '\u0148': 'n',
508 | '\u014b': 'n',
509 | '\u014c': 'O',
510 | '\u014e': 'O',
511 | '\u0150': 'O',
512 | '\u014d': 'o',
513 | '\u014f': 'o',
514 | '\u0151': 'o',
515 | '\u0154': 'R',
516 | '\u0156': 'R',
517 | '\u0158': 'R',
518 | '\u0155': 'r',
519 | '\u0157': 'r',
520 | '\u0159': 'r',
521 | '\u015a': 'S',
522 | '\u015c': 'S',
523 | '\u015e': 'S',
524 | '\u0160': 'S',
525 | '\u015b': 's',
526 | '\u015d': 's',
527 | '\u015f': 's',
528 | '\u0161': 's',
529 | '\u0162': 'T',
530 | '\u0164': 'T',
531 | '\u0166': 'T',
532 | '\u0163': 't',
533 | '\u0165': 't',
534 | '\u0167': 't',
535 | '\u0168': 'U',
536 | '\u016a': 'U',
537 | '\u016c': 'U',
538 | '\u016e': 'U',
539 | '\u0170': 'U',
540 | '\u0172': 'U',
541 | '\u0169': 'u',
542 | '\u016b': 'u',
543 | '\u016d': 'u',
544 | '\u016f': 'u',
545 | '\u0171': 'u',
546 | '\u0173': 'u',
547 | '\u0174': 'W',
548 | '\u0175': 'w',
549 | '\u0176': 'Y',
550 | '\u0177': 'y',
551 | '\u0178': 'Y',
552 | '\u0179': 'Z',
553 | '\u017b': 'Z',
554 | '\u017d': 'Z',
555 | '\u017a': 'z',
556 | '\u017c': 'z',
557 | '\u017e': 'z',
558 | '\u0132': 'IJ',
559 | '\u0133': 'ij',
560 | '\u0152': 'Oe',
561 | '\u0153': 'oe',
562 | '\u0149': "'n",
563 | '\u017f': 's',
564 | }),
565 | nt = x({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }),
566 | tt = x({ '&': '&', '<': '<', '>': '>', '"': '"', ''': "'" }),
567 | rt = (function x(mn) {
568 | function An(n) {
569 | if (yu(n) && !ff(n) && !(n instanceof Un)) {
570 | if (n instanceof On) return n;
571 | if (oi.call(n, '__wrapped__')) return Fe(n);
572 | }
573 | return new On(n);
574 | }
575 | function En() {}
576 | function On(n, t) {
577 | (this.__wrapped__ = n),
578 | (this.__actions__ = []),
579 | (this.__chain__ = !!t),
580 | (this.__index__ = 0),
581 | (this.__values__ = T);
582 | }
583 | function Un(n) {
584 | (this.__wrapped__ = n),
585 | (this.__actions__ = []),
586 | (this.__dir__ = 1),
587 | (this.__filtered__ = false),
588 | (this.__iteratees__ = []),
589 | (this.__takeCount__ = 4294967295),
590 | (this.__views__ = []);
591 | }
592 | function Mn(n) {
593 | var t = -1,
594 | r = null == n ? 0 : n.length;
595 | for (this.clear(); ++t < r; ) {
596 | var e = n[t];
597 | this.set(e[0], e[1]);
598 | }
599 | }
600 | function Tn(n) {
601 | var t = -1,
602 | r = null == n ? 0 : n.length;
603 | for (this.clear(); ++t < r; ) {
604 | var e = n[t];
605 | this.set(e[0], e[1]);
606 | }
607 | }
608 | function Fn(n) {
609 | var t = -1,
610 | r = null == n ? 0 : n.length;
611 | for (this.clear(); ++t < r; ) {
612 | var e = n[t];
613 | this.set(e[0], e[1]);
614 | }
615 | }
616 | function Nn(n) {
617 | var t = -1,
618 | r = null == n ? 0 : n.length;
619 | for (this.__data__ = new Fn(); ++t < r; ) this.add(n[t]);
620 | }
621 | function Zn(n) {
622 | this.size = (this.__data__ = new Tn(n)).size;
623 | }
624 | function qn(n, t) {
625 | var r,
626 | e = ff(n),
627 | u = !e && of(n),
628 | i = !e && !u && af(n),
629 | o = !e && !u && !i && _f(n),
630 | u = (e = e || u || i || o) ? A(n.length, ni) : [],
631 | f = u.length;
632 | for (r in n)
633 | (!t && !oi.call(n, r)) ||
634 | (e &&
635 | ('length' == r ||
636 | (i && ('offset' == r || 'parent' == r)) ||
637 | (o && ('buffer' == r || 'byteLength' == r || 'byteOffset' == r)) ||
638 | Se(r, f))) ||
639 | u.push(r);
640 | return u;
641 | }
642 | function Qn(n) {
643 | var t = n.length;
644 | return t ? n[ir(0, t - 1)] : T;
645 | }
646 | function et(n, t) {
647 | return De(Ur(n), pt(t, 0, n.length));
648 | }
649 | function ut(n) {
650 | return De(Ur(n));
651 | }
652 | function it(n, t, r) {
653 | ((r === T || lu(n[t], r)) && (r !== T || t in n)) || st(n, t, r);
654 | }
655 | function ot(n, t, r) {
656 | var e = n[t];
657 | (oi.call(n, t) && lu(e, r) && (r !== T || t in n)) || st(n, t, r);
658 | }
659 | function ft(n, t) {
660 | for (var r = n.length; r--; ) if (lu(n[r][0], t)) return r;
661 | return -1;
662 | }
663 | function ct(n, t, r, e) {
664 | return (
665 | uo(n, function (n, u, i) {
666 | t(e, n, r(n), i);
667 | }),
668 | e
669 | );
670 | }
671 | function at(n, t) {
672 | return n && Cr(t, Wu(t), n);
673 | }
674 | function lt(n, t) {
675 | return n && Cr(t, Bu(t), n);
676 | }
677 | function st(n, t, r) {
678 | '__proto__' == t && Ai
679 | ? Ai(n, t, { configurable: true, enumerable: true, value: r, writable: true })
680 | : (n[t] = r);
681 | }
682 | function ht(n, t) {
683 | for (var r = -1, e = t.length, u = Ku(e), i = null == n; ++r < e; ) u[r] = i ? T : Ru(n, t[r]);
684 | return u;
685 | }
686 | function pt(n, t, r) {
687 | return n === n && (r !== T && (n = n <= r ? n : r), t !== T && (n = n >= t ? n : t)), n;
688 | }
689 | function _t(n, t, e, u, i, o) {
690 | var f,
691 | c = 1 & t,
692 | a = 2 & t,
693 | l = 4 & t;
694 | if ((e && (f = i ? e(n, u, i, o) : e(n)), f !== T)) return f;
695 | if (!du(n)) return n;
696 | if ((u = ff(n))) {
697 | if (((f = me(n)), !c)) return Ur(n, f);
698 | } else {
699 | var s = vo(n),
700 | h = '[object Function]' == s || '[object GeneratorFunction]' == s;
701 | if (af(n)) return Ir(n, c);
702 | if ('[object Object]' == s || '[object Arguments]' == s || (h && !i)) {
703 | if (((f = a || h ? {} : Ae(n)), !c)) return a ? Mr(n, lt(f, n)) : Dr(n, at(f, n));
704 | } else {
705 | if (!Ln[s]) return i ? n : {};
706 | f = Ee(n, s, c);
707 | }
708 | }
709 | if ((o || (o = new Zn()), (i = o.get(n)))) return i;
710 | o.set(n, f),
711 | pf(n)
712 | ? n.forEach(function (r) {
713 | f.add(_t(r, t, e, r, n, o));
714 | })
715 | : sf(n) &&
716 | n.forEach(function (r, u) {
717 | f.set(u, _t(r, t, e, u, n, o));
718 | });
719 | var a = l ? (a ? ve : _e) : a ? Bu : Wu,
720 | p = u ? T : a(n);
721 | return (
722 | r(p || n, function (r, u) {
723 | p && ((u = r), (r = n[u])), ot(f, u, _t(r, t, e, u, n, o));
724 | }),
725 | f
726 | );
727 | }
728 | function vt(n) {
729 | var t = Wu(n);
730 | return function (r) {
731 | return gt(r, n, t);
732 | };
733 | }
734 | function gt(n, t, r) {
735 | var e = r.length;
736 | if (null == n) return !e;
737 | for (n = Qu(n); e--; ) {
738 | var u = r[e],
739 | i = t[u],
740 | o = n[u];
741 | if ((o === T && !(u in n)) || !i(o)) return false;
742 | }
743 | return true;
744 | }
745 | function dt(n, t, r) {
746 | if (typeof n != 'function') throw new ti('Expected a function');
747 | return bo(function () {
748 | n.apply(T, r);
749 | }, t);
750 | }
751 | function yt(n, t, r, e) {
752 | var u = -1,
753 | i = o,
754 | a = true,
755 | l = n.length,
756 | s = [],
757 | h = t.length;
758 | if (!l) return s;
759 | r && (t = c(t, k(r))), e ? ((i = f), (a = false)) : 200 <= t.length && ((i = O), (a = false), (t = new Nn(t)));
760 | n: for (; ++u < l; ) {
761 | var p = n[u],
762 | _ = null == r ? p : r(p),
763 | p = e || 0 !== p ? p : 0;
764 | if (a && _ === _) {
765 | for (var v = h; v--; ) if (t[v] === _) continue n;
766 | s.push(p);
767 | } else i(t, _, e) || s.push(p);
768 | }
769 | return s;
770 | }
771 | function bt(n, t) {
772 | var r = true;
773 | return (
774 | uo(n, function (n, e, u) {
775 | return (r = !!t(n, e, u));
776 | }),
777 | r
778 | );
779 | }
780 | function xt(n, t, r) {
781 | for (var e = -1, u = n.length; ++e < u; ) {
782 | var i = n[e],
783 | o = t(i);
784 | if (null != o && (f === T ? o === o && !wu(o) : r(o, f)))
785 | var f = o,
786 | c = i;
787 | }
788 | return c;
789 | }
790 | function jt(n, t) {
791 | var r = [];
792 | return (
793 | uo(n, function (n, e, u) {
794 | t(n, e, u) && r.push(n);
795 | }),
796 | r
797 | );
798 | }
799 | function wt(n, t, r, e, u) {
800 | var i = -1,
801 | o = n.length;
802 | for (r || (r = ke), u || (u = []); ++i < o; ) {
803 | var f = n[i];
804 | 0 < t && r(f) ? (1 < t ? wt(f, t - 1, r, e, u) : a(u, f)) : e || (u[u.length] = f);
805 | }
806 | return u;
807 | }
808 | function mt(n, t) {
809 | return n && oo(n, t, Wu);
810 | }
811 | function At(n, t) {
812 | return n && fo(n, t, Wu);
813 | }
814 | function Et(n, t) {
815 | return i(t, function (t) {
816 | return _u(n[t]);
817 | });
818 | }
819 | function kt(n, t) {
820 | t = Sr(t, n);
821 | for (var r = 0, e = t.length; null != n && r < e; ) n = n[Me(t[r++])];
822 | return r && r == e ? n : T;
823 | }
824 | function St(n, t, r) {
825 | return (t = t(n)), ff(n) ? t : a(t, r(n));
826 | }
827 | function Ot(n) {
828 | if (null == n) n = n === T ? '[object Undefined]' : '[object Null]';
829 | else if (mi && mi in Qu(n)) {
830 | var t = oi.call(n, mi),
831 | r = n[mi];
832 | try {
833 | n[mi] = T;
834 | var e = true;
835 | } catch (n) {}
836 | var u = ai.call(n);
837 | e && (t ? (n[mi] = r) : delete n[mi]), (n = u);
838 | } else n = ai.call(n);
839 | return n;
840 | }
841 | function It(n, t) {
842 | return n > t;
843 | }
844 | function Rt(n, t) {
845 | return null != n && oi.call(n, t);
846 | }
847 | function zt(n, t) {
848 | return null != n && t in Qu(n);
849 | }
850 | function Wt(n, t, r) {
851 | for (var e = r ? f : o, u = n[0].length, i = n.length, a = i, l = Ku(i), s = 1 / 0, h = []; a--; ) {
852 | var p = n[a];
853 | a && t && (p = c(p, k(t))),
854 | (s = Ci(p.length, s)),
855 | (l[a] = !r && (t || (120 <= u && 120 <= p.length)) ? new Nn(a && p) : T);
856 | }
857 | var p = n[0],
858 | _ = -1,
859 | v = l[0];
860 | n: for (; ++_ < u && h.length < s; ) {
861 | var g = p[_],
862 | d = t ? t(g) : g,
863 | g = r || 0 !== g ? g : 0;
864 | if (v ? !O(v, d) : !e(h, d, r)) {
865 | for (a = i; --a; ) {
866 | var y = l[a];
867 | if (y ? !O(y, d) : !e(n[a], d, r)) continue n;
868 | }
869 | v && v.push(d), h.push(g);
870 | }
871 | }
872 | return h;
873 | }
874 | function Bt(n, t, r) {
875 | var e = {};
876 | return (
877 | mt(n, function (n, u, i) {
878 | t(e, r(n), u, i);
879 | }),
880 | e
881 | );
882 | }
883 | function Lt(t, r, e) {
884 | return (
885 | (r = Sr(r, t)),
886 | (t = 2 > r.length ? t : kt(t, hr(r, 0, -1))),
887 | (r = null == t ? t : t[Me(Ve(r))]),
888 | null == r ? T : n(r, t, e)
889 | );
890 | }
891 | function Ut(n) {
892 | return yu(n) && '[object Arguments]' == Ot(n);
893 | }
894 | function Ct(n) {
895 | return yu(n) && '[object ArrayBuffer]' == Ot(n);
896 | }
897 | function Dt(n) {
898 | return yu(n) && '[object Date]' == Ot(n);
899 | }
900 | function Mt(n, t, r, e, u) {
901 | if (n === t) t = true;
902 | else if (null == n || null == t || (!yu(n) && !yu(t))) t = n !== n && t !== t;
903 | else
904 | n: {
905 | var i = ff(n),
906 | o = ff(t),
907 | f = i ? '[object Array]' : vo(n),
908 | c = o ? '[object Array]' : vo(t),
909 | f = '[object Arguments]' == f ? '[object Object]' : f,
910 | c = '[object Arguments]' == c ? '[object Object]' : c,
911 | a = '[object Object]' == f,
912 | o = '[object Object]' == c;
913 | if ((c = f == c) && af(n)) {
914 | if (!af(t)) {
915 | t = false;
916 | break n;
917 | }
918 | (i = true), (a = false);
919 | }
920 | if (c && !a) u || (u = new Zn()), (t = i || _f(n) ? se(n, t, r, e, Mt, u) : he(n, t, f, r, e, Mt, u));
921 | else {
922 | if (!(1 & r) && ((i = a && oi.call(n, '__wrapped__')), (f = o && oi.call(t, '__wrapped__')), i || f)) {
923 | (n = i ? n.value() : n), (t = f ? t.value() : t), u || (u = new Zn()), (t = Mt(n, t, r, e, u));
924 | break n;
925 | }
926 | if (c)
927 | t: if (
928 | (u || (u = new Zn()), (i = 1 & r), (f = _e(n)), (o = f.length), (c = _e(t).length), o == c || i)
929 | ) {
930 | for (a = o; a--; ) {
931 | var l = f[a];
932 | if (!(i ? l in t : oi.call(t, l))) {
933 | t = false;
934 | break t;
935 | }
936 | }
937 | if ((c = u.get(n)) && u.get(t)) t = c == t;
938 | else {
939 | (c = true), u.set(n, t), u.set(t, n);
940 | for (var s = i; ++a < o; ) {
941 | var l = f[a],
942 | h = n[l],
943 | p = t[l];
944 | if (e) var _ = i ? e(p, h, l, t, n, u) : e(h, p, l, n, t, u);
945 | if (_ === T ? h !== p && !Mt(h, p, r, e, u) : !_) {
946 | c = false;
947 | break;
948 | }
949 | s || (s = 'constructor' == l);
950 | }
951 | c &&
952 | !s &&
953 | ((r = n.constructor),
954 | (e = t.constructor),
955 | r != e &&
956 | 'constructor' in n &&
957 | 'constructor' in t &&
958 | !(typeof r == 'function' && r instanceof r && typeof e == 'function' && e instanceof e) &&
959 | (c = false)),
960 | u.delete(n),
961 | u.delete(t),
962 | (t = c);
963 | }
964 | } else t = false;
965 | else t = false;
966 | }
967 | }
968 | return t;
969 | }
970 | function Tt(n) {
971 | return yu(n) && '[object Map]' == vo(n);
972 | }
973 | function $t(n, t, r, e) {
974 | var u = r.length,
975 | i = u,
976 | o = !e;
977 | if (null == n) return !i;
978 | for (n = Qu(n); u--; ) {
979 | var f = r[u];
980 | if (o && f[2] ? f[1] !== n[f[0]] : !(f[0] in n)) return false;
981 | }
982 | for (; ++u < i; ) {
983 | var f = r[u],
984 | c = f[0],
985 | a = n[c],
986 | l = f[1];
987 | if (o && f[2]) {
988 | if (a === T && !(c in n)) return false;
989 | } else {
990 | if (((f = new Zn()), e)) var s = e(a, l, c, n, t, f);
991 | if (s === T ? !Mt(l, a, 3, e, f) : !s) return false;
992 | }
993 | }
994 | return true;
995 | }
996 | function Ft(n) {
997 | return !(!du(n) || (ci && ci in n)) && (_u(n) ? hi : dn).test(Te(n));
998 | }
999 | function Nt(n) {
1000 | return yu(n) && '[object RegExp]' == Ot(n);
1001 | }
1002 | function Pt(n) {
1003 | return yu(n) && '[object Set]' == vo(n);
1004 | }
1005 | function Zt(n) {
1006 | return yu(n) && gu(n.length) && !!Bn[Ot(n)];
1007 | }
1008 | function qt(n) {
1009 | return typeof n == 'function'
1010 | ? n
1011 | : null == n
1012 | ? $u
1013 | : typeof n == 'object'
1014 | ? ff(n)
1015 | ? Jt(n[0], n[1])
1016 | : Ht(n)
1017 | : Zu(n);
1018 | }
1019 | function Vt(n) {
1020 | if (!ze(n)) return Li(n);
1021 | var t,
1022 | r = [];
1023 | for (t in Qu(n)) oi.call(n, t) && 'constructor' != t && r.push(t);
1024 | return r;
1025 | }
1026 | function Kt(n, t) {
1027 | return n < t;
1028 | }
1029 | function Gt(n, t) {
1030 | var r = -1,
1031 | e = su(n) ? Ku(n.length) : [];
1032 | return (
1033 | uo(n, function (n, u, i) {
1034 | e[++r] = t(n, u, i);
1035 | }),
1036 | e
1037 | );
1038 | }
1039 | function Ht(n) {
1040 | var t = xe(n);
1041 | return 1 == t.length && t[0][2]
1042 | ? We(t[0][0], t[0][1])
1043 | : function (r) {
1044 | return r === n || $t(r, n, t);
1045 | };
1046 | }
1047 | function Jt(n, t) {
1048 | return Ie(n) && t === t && !du(t)
1049 | ? We(Me(n), t)
1050 | : function (r) {
1051 | var e = Ru(r, n);
1052 | return e === T && e === t ? zu(r, n) : Mt(t, e, 3);
1053 | };
1054 | }
1055 | function Yt(n, t, r, e, u) {
1056 | n !== t &&
1057 | oo(
1058 | t,
1059 | function (i, o) {
1060 | if ((u || (u = new Zn()), du(i))) {
1061 | var f = u,
1062 | c = Le(n, o),
1063 | a = Le(t, o),
1064 | l = f.get(a);
1065 | if (l) it(n, o, l);
1066 | else {
1067 | var l = e ? e(c, a, o + '', n, t, f) : T,
1068 | s = l === T;
1069 | if (s) {
1070 | var h = ff(a),
1071 | p = !h && af(a),
1072 | _ = !h && !p && _f(a),
1073 | l = a;
1074 | h || p || _
1075 | ? ff(c)
1076 | ? (l = c)
1077 | : hu(c)
1078 | ? (l = Ur(c))
1079 | : p
1080 | ? ((s = false), (l = Ir(a, true)))
1081 | : _
1082 | ? ((s = false), (l = zr(a, true)))
1083 | : (l = [])
1084 | : xu(a) || of(a)
1085 | ? ((l = c), of(c) ? (l = Ou(c)) : (du(c) && !_u(c)) || (l = Ae(a)))
1086 | : (s = false);
1087 | }
1088 | s && (f.set(a, l), Yt(l, a, r, e, f), f.delete(a)), it(n, o, l);
1089 | }
1090 | } else (f = e ? e(Le(n, o), i, o + '', n, t, u) : T), f === T && (f = i), it(n, o, f);
1091 | },
1092 | Bu
1093 | );
1094 | }
1095 | function Qt(n, t) {
1096 | var r = n.length;
1097 | if (r) return (t += 0 > t ? r : 0), Se(t, r) ? n[t] : T;
1098 | }
1099 | function Xt(n, t, r) {
1100 | var e = -1;
1101 | return (
1102 | (t = c(t.length ? t : [$u], k(ye()))),
1103 | (n = Gt(n, function (n) {
1104 | return {
1105 | a: c(t, function (t) {
1106 | return t(n);
1107 | }),
1108 | b: ++e,
1109 | c: n,
1110 | };
1111 | })),
1112 | w(n, function (n, t) {
1113 | var e;
1114 | n: {
1115 | e = -1;
1116 | for (var u = n.a, i = t.a, o = u.length, f = r.length; ++e < o; ) {
1117 | var c = Wr(u[e], i[e]);
1118 | if (c) {
1119 | e = e >= f ? c : c * ('desc' == r[e] ? -1 : 1);
1120 | break n;
1121 | }
1122 | }
1123 | e = n.b - t.b;
1124 | }
1125 | return e;
1126 | })
1127 | );
1128 | }
1129 | function nr(n, t) {
1130 | return tr(n, t, function (t, r) {
1131 | return zu(n, r);
1132 | });
1133 | }
1134 | function tr(n, t, r) {
1135 | for (var e = -1, u = t.length, i = {}; ++e < u; ) {
1136 | var o = t[e],
1137 | f = kt(n, o);
1138 | r(f, o) && lr(i, Sr(o, n), f);
1139 | }
1140 | return i;
1141 | }
1142 | function rr(n) {
1143 | return function (t) {
1144 | return kt(t, n);
1145 | };
1146 | }
1147 | function er(n, t, r, e) {
1148 | var u = e ? g : v,
1149 | i = -1,
1150 | o = t.length,
1151 | f = n;
1152 | for (n === t && (t = Ur(t)), r && (f = c(n, k(r))); ++i < o; )
1153 | for (var a = 0, l = t[i], l = r ? r(l) : l; -1 < (a = u(f, l, a, e)); )
1154 | f !== n && xi.call(f, a, 1), xi.call(n, a, 1);
1155 | return n;
1156 | }
1157 | function ur(n, t) {
1158 | for (var r = n ? t.length : 0, e = r - 1; r--; ) {
1159 | var u = t[r];
1160 | if (r == e || u !== i) {
1161 | var i = u;
1162 | Se(u) ? xi.call(n, u, 1) : xr(n, u);
1163 | }
1164 | }
1165 | }
1166 | function ir(n, t) {
1167 | return n + Ii(Ti() * (t - n + 1));
1168 | }
1169 | function or(n, t) {
1170 | var r = '';
1171 | if (!n || 1 > t || 9007199254740991 < t) return r;
1172 | do t % 2 && (r += n), (t = Ii(t / 2)) && (n += n);
1173 | while (t);
1174 | return r;
1175 | }
1176 | function fr(n, t) {
1177 | return xo(Be(n, t, $u), n + '');
1178 | }
1179 | function cr(n) {
1180 | return Qn(Uu(n));
1181 | }
1182 | function ar(n, t) {
1183 | var r = Uu(n);
1184 | return De(r, pt(t, 0, r.length));
1185 | }
1186 | function lr(n, t, r, e) {
1187 | if (!du(n)) return n;
1188 | t = Sr(t, n);
1189 | for (var u = -1, i = t.length, o = i - 1, f = n; null != f && ++u < i; ) {
1190 | var c = Me(t[u]),
1191 | a = r;
1192 | if (u != o) {
1193 | var l = f[c],
1194 | a = e ? e(l, c, f) : T;
1195 | a === T && (a = du(l) ? l : Se(t[u + 1]) ? [] : {});
1196 | }
1197 | ot(f, c, a), (f = f[c]);
1198 | }
1199 | return n;
1200 | }
1201 | function sr(n) {
1202 | return De(Uu(n));
1203 | }
1204 | function hr(n, t, r) {
1205 | var e = -1,
1206 | u = n.length;
1207 | for (
1208 | 0 > t && (t = -t > u ? 0 : u + t),
1209 | r = r > u ? u : r,
1210 | 0 > r && (r += u),
1211 | u = t > r ? 0 : (r - t) >>> 0,
1212 | t >>>= 0,
1213 | r = Ku(u);
1214 | ++e < u;
1215 |
1216 | )
1217 | r[e] = n[e + t];
1218 | return r;
1219 | }
1220 | function pr(n, t) {
1221 | var r;
1222 | return (
1223 | uo(n, function (n, e, u) {
1224 | return (r = t(n, e, u)), !r;
1225 | }),
1226 | !!r
1227 | );
1228 | }
1229 | function _r(n, t, r) {
1230 | var e = 0,
1231 | u = null == n ? e : n.length;
1232 | if (typeof t == 'number' && t === t && 2147483647 >= u) {
1233 | for (; e < u; ) {
1234 | var i = (e + u) >>> 1,
1235 | o = n[i];
1236 | null !== o && !wu(o) && (r ? o <= t : o < t) ? (e = i + 1) : (u = i);
1237 | }
1238 | return u;
1239 | }
1240 | return vr(n, t, $u, r);
1241 | }
1242 | function vr(n, t, r, e) {
1243 | t = r(t);
1244 | for (var u = 0, i = null == n ? 0 : n.length, o = t !== t, f = null === t, c = wu(t), a = t === T; u < i; ) {
1245 | var l = Ii((u + i) / 2),
1246 | s = r(n[l]),
1247 | h = s !== T,
1248 | p = null === s,
1249 | _ = s === s,
1250 | v = wu(s);
1251 | (
1252 | o
1253 | ? e || _
1254 | : a
1255 | ? _ && (e || h)
1256 | : f
1257 | ? _ && h && (e || !p)
1258 | : c
1259 | ? _ && h && !p && (e || !v)
1260 | : p || v
1261 | ? 0
1262 | : e
1263 | ? s <= t
1264 | : s < t
1265 | )
1266 | ? (u = l + 1)
1267 | : (i = l);
1268 | }
1269 | return Ci(i, 4294967294);
1270 | }
1271 | function gr(n, t) {
1272 | for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) {
1273 | var o = n[r],
1274 | f = t ? t(o) : o;
1275 | if (!r || !lu(f, c)) {
1276 | var c = f;
1277 | i[u++] = 0 === o ? 0 : o;
1278 | }
1279 | }
1280 | return i;
1281 | }
1282 | function dr(n) {
1283 | return typeof n == 'number' ? n : wu(n) ? F : +n;
1284 | }
1285 | function yr(n) {
1286 | if (typeof n == 'string') return n;
1287 | if (ff(n)) return c(n, yr) + '';
1288 | if (wu(n)) return ro ? ro.call(n) : '';
1289 | var t = n + '';
1290 | return '0' == t && 1 / n == -$ ? '-0' : t;
1291 | }
1292 | function br(n, t, r) {
1293 | var e = -1,
1294 | u = o,
1295 | i = n.length,
1296 | c = true,
1297 | a = [],
1298 | l = a;
1299 | if (r) (c = false), (u = f);
1300 | else if (200 <= i) {
1301 | if ((u = t ? null : so(n))) return U(u);
1302 | (c = false), (u = O), (l = new Nn());
1303 | } else l = t ? [] : a;
1304 | n: for (; ++e < i; ) {
1305 | var s = n[e],
1306 | h = t ? t(s) : s,
1307 | s = r || 0 !== s ? s : 0;
1308 | if (c && h === h) {
1309 | for (var p = l.length; p--; ) if (l[p] === h) continue n;
1310 | t && l.push(h), a.push(s);
1311 | } else u(l, h, r) || (l !== a && l.push(h), a.push(s));
1312 | }
1313 | return a;
1314 | }
1315 | function xr(n, t) {
1316 | return (t = Sr(t, n)), (n = 2 > t.length ? n : kt(n, hr(t, 0, -1))), null == n || delete n[Me(Ve(t))];
1317 | }
1318 | function jr(n, t, r, e) {
1319 | for (var u = n.length, i = e ? u : -1; (e ? i-- : ++i < u) && t(n[i], i, n); );
1320 | return r ? hr(n, e ? 0 : i, e ? i + 1 : u) : hr(n, e ? i + 1 : 0, e ? u : i);
1321 | }
1322 | function wr(n, t) {
1323 | var r = n;
1324 | return (
1325 | r instanceof Un && (r = r.value()),
1326 | l(
1327 | t,
1328 | function (n, t) {
1329 | return t.func.apply(t.thisArg, a([n], t.args));
1330 | },
1331 | r
1332 | )
1333 | );
1334 | }
1335 | function mr(n, t, r) {
1336 | var e = n.length;
1337 | if (2 > e) return e ? br(n[0]) : [];
1338 | for (var u = -1, i = Ku(e); ++u < e; )
1339 | for (var o = n[u], f = -1; ++f < e; ) f != u && (i[u] = yt(i[u] || o, n[f], t, r));
1340 | return br(wt(i, 1), t, r);
1341 | }
1342 | function Ar(n, t, r) {
1343 | for (var e = -1, u = n.length, i = t.length, o = {}; ++e < u; ) r(o, n[e], e < i ? t[e] : T);
1344 | return o;
1345 | }
1346 | function Er(n) {
1347 | return hu(n) ? n : [];
1348 | }
1349 | function kr(n) {
1350 | return typeof n == 'function' ? n : $u;
1351 | }
1352 | function Sr(n, t) {
1353 | return ff(n) ? n : Ie(n, t) ? [n] : jo(Iu(n));
1354 | }
1355 | function Or(n, t, r) {
1356 | var e = n.length;
1357 | return (r = r === T ? e : r), !t && r >= e ? n : hr(n, t, r);
1358 | }
1359 | function Ir(n, t) {
1360 | if (t) return n.slice();
1361 | var r = n.length,
1362 | r = gi ? gi(r) : new n.constructor(r);
1363 | return n.copy(r), r;
1364 | }
1365 | function Rr(n) {
1366 | var t = new n.constructor(n.byteLength);
1367 | return new vi(t).set(new vi(n)), t;
1368 | }
1369 | function zr(n, t) {
1370 | return new n.constructor(t ? Rr(n.buffer) : n.buffer, n.byteOffset, n.length);
1371 | }
1372 | function Wr(n, t) {
1373 | if (n !== t) {
1374 | var r = n !== T,
1375 | e = null === n,
1376 | u = n === n,
1377 | i = wu(n),
1378 | o = t !== T,
1379 | f = null === t,
1380 | c = t === t,
1381 | a = wu(t);
1382 | if ((!f && !a && !i && n > t) || (i && o && c && !f && !a) || (e && o && c) || (!r && c) || !u) return 1;
1383 | if ((!e && !i && !a && n < t) || (a && r && u && !e && !i) || (f && r && u) || (!o && u) || !c) return -1;
1384 | }
1385 | return 0;
1386 | }
1387 | function Br(n, t, r, e) {
1388 | var u = -1,
1389 | i = n.length,
1390 | o = r.length,
1391 | f = -1,
1392 | c = t.length,
1393 | a = Ui(i - o, 0),
1394 | l = Ku(c + a);
1395 | for (e = !e; ++f < c; ) l[f] = t[f];
1396 | for (; ++u < o; ) (e || u < i) && (l[r[u]] = n[u]);
1397 | for (; a--; ) l[f++] = n[u++];
1398 | return l;
1399 | }
1400 | function Lr(n, t, r, e) {
1401 | var u = -1,
1402 | i = n.length,
1403 | o = -1,
1404 | f = r.length,
1405 | c = -1,
1406 | a = t.length,
1407 | l = Ui(i - f, 0),
1408 | s = Ku(l + a);
1409 | for (e = !e; ++u < l; ) s[u] = n[u];
1410 | for (l = u; ++c < a; ) s[l + c] = t[c];
1411 | for (; ++o < f; ) (e || u < i) && (s[l + r[o]] = n[u++]);
1412 | return s;
1413 | }
1414 | function Ur(n, t) {
1415 | var r = -1,
1416 | e = n.length;
1417 | for (t || (t = Ku(e)); ++r < e; ) t[r] = n[r];
1418 | return t;
1419 | }
1420 | function Cr(n, t, r, e) {
1421 | var u = !r;
1422 | r || (r = {});
1423 | for (var i = -1, o = t.length; ++i < o; ) {
1424 | var f = t[i],
1425 | c = e ? e(r[f], n[f], f, r, n) : T;
1426 | c === T && (c = n[f]), u ? st(r, f, c) : ot(r, f, c);
1427 | }
1428 | return r;
1429 | }
1430 | function Dr(n, t) {
1431 | return Cr(n, po(n), t);
1432 | }
1433 | function Mr(n, t) {
1434 | return Cr(n, _o(n), t);
1435 | }
1436 | function Tr(n, r) {
1437 | return function (e, u) {
1438 | var i = ff(e) ? t : ct,
1439 | o = r ? r() : {};
1440 | return i(e, n, ye(u, 2), o);
1441 | };
1442 | }
1443 | function $r(n) {
1444 | return fr(function (t, r) {
1445 | var e = -1,
1446 | u = r.length,
1447 | i = 1 < u ? r[u - 1] : T,
1448 | o = 2 < u ? r[2] : T,
1449 | i = 3 < n.length && typeof i == 'function' ? (u--, i) : T;
1450 | for (o && Oe(r[0], r[1], o) && ((i = 3 > u ? T : i), (u = 1)), t = Qu(t); ++e < u; )
1451 | (o = r[e]) && n(t, o, e, i);
1452 | return t;
1453 | });
1454 | }
1455 | function Fr(n, t) {
1456 | return function (r, e) {
1457 | if (null == r) return r;
1458 | if (!su(r)) return n(r, e);
1459 | for (var u = r.length, i = t ? u : -1, o = Qu(r); (t ? i-- : ++i < u) && false !== e(o[i], i, o); );
1460 | return r;
1461 | };
1462 | }
1463 | function Nr(n) {
1464 | return function (t, r, e) {
1465 | var u = -1,
1466 | i = Qu(t);
1467 | e = e(t);
1468 | for (var o = e.length; o--; ) {
1469 | var f = e[n ? o : ++u];
1470 | if (false === r(i[f], f, i)) break;
1471 | }
1472 | return t;
1473 | };
1474 | }
1475 | function Pr(n, t, r) {
1476 | function e() {
1477 | return (this && this !== $n && this instanceof e ? i : n).apply(u ? r : this, arguments);
1478 | }
1479 | var u = 1 & t,
1480 | i = Vr(n);
1481 | return e;
1482 | }
1483 | function Zr(n) {
1484 | return function (t) {
1485 | t = Iu(t);
1486 | var r = Rn.test(t) ? M(t) : T,
1487 | e = r ? r[0] : t.charAt(0);
1488 | return (t = r ? Or(r, 1).join('') : t.slice(1)), e[n]() + t;
1489 | };
1490 | }
1491 | function qr(n) {
1492 | return function (t) {
1493 | return l(Mu(Du(t).replace(kn, '')), n, '');
1494 | };
1495 | }
1496 | function Vr(n) {
1497 | return function () {
1498 | var t = arguments;
1499 | switch (t.length) {
1500 | case 0:
1501 | return new n();
1502 | case 1:
1503 | return new n(t[0]);
1504 | case 2:
1505 | return new n(t[0], t[1]);
1506 | case 3:
1507 | return new n(t[0], t[1], t[2]);
1508 | case 4:
1509 | return new n(t[0], t[1], t[2], t[3]);
1510 | case 5:
1511 | return new n(t[0], t[1], t[2], t[3], t[4]);
1512 | case 6:
1513 | return new n(t[0], t[1], t[2], t[3], t[4], t[5]);
1514 | case 7:
1515 | return new n(t[0], t[1], t[2], t[3], t[4], t[5], t[6]);
1516 | }
1517 | var r = eo(n.prototype),
1518 | t = n.apply(r, t);
1519 | return du(t) ? t : r;
1520 | };
1521 | }
1522 | function Kr(t, r, e) {
1523 | function u() {
1524 | for (var o = arguments.length, f = Ku(o), c = o, a = de(u); c--; ) f[c] = arguments[c];
1525 | return (
1526 | (c = 3 > o && f[0] !== a && f[o - 1] !== a ? [] : L(f, a)),
1527 | (o -= c.length),
1528 | o < e
1529 | ? ue(t, r, Jr, u.placeholder, T, f, c, T, T, e - o)
1530 | : n(this && this !== $n && this instanceof u ? i : t, this, f)
1531 | );
1532 | }
1533 | var i = Vr(t);
1534 | return u;
1535 | }
1536 | function Gr(n) {
1537 | return function (t, r, e) {
1538 | var u = Qu(t);
1539 | if (!su(t)) {
1540 | var i = ye(r, 3);
1541 | (t = Wu(t)),
1542 | (r = function (n) {
1543 | return i(u[n], n, u);
1544 | });
1545 | }
1546 | return (r = n(t, r, e)), -1 < r ? u[i ? t[r] : r] : T;
1547 | };
1548 | }
1549 | function Hr(n) {
1550 | return pe(function (t) {
1551 | var r = t.length,
1552 | e = r,
1553 | u = On.prototype.thru;
1554 | for (n && t.reverse(); e--; ) {
1555 | var i = t[e];
1556 | if (typeof i != 'function') throw new ti('Expected a function');
1557 | if (u && !o && 'wrapper' == ge(i)) var o = new On([], true);
1558 | }
1559 | for (e = o ? e : r; ++e < r; )
1560 | var i = t[e],
1561 | u = ge(i),
1562 | f = 'wrapper' == u ? ho(i) : T,
1563 | o =
1564 | f && Re(f[0]) && 424 == f[1] && !f[4].length && 1 == f[9]
1565 | ? o[ge(f[0])].apply(o, f[3])
1566 | : 1 == i.length && Re(i)
1567 | ? o[u]()
1568 | : o.thru(i);
1569 | return function () {
1570 | var n = arguments,
1571 | e = n[0];
1572 | if (o && 1 == n.length && ff(e)) return o.plant(e).value();
1573 | for (var u = 0, n = r ? t[u].apply(this, n) : e; ++u < r; ) n = t[u].call(this, n);
1574 | return n;
1575 | };
1576 | });
1577 | }
1578 | function Jr(n, t, r, e, u, i, o, f, c, a) {
1579 | function l() {
1580 | for (var d = arguments.length, y = Ku(d), b = d; b--; ) y[b] = arguments[b];
1581 | if (_) {
1582 | var x,
1583 | j = de(l),
1584 | b = y.length;
1585 | for (x = 0; b--; ) y[b] === j && ++x;
1586 | }
1587 | if ((e && (y = Br(y, e, u, _)), i && (y = Lr(y, i, o, _)), (d -= x), _ && d < a))
1588 | return (j = L(y, j)), ue(n, t, Jr, l.placeholder, r, y, j, f, c, a - d);
1589 | if (((j = h ? r : this), (b = p ? j[n] : n), (d = y.length), f)) {
1590 | x = y.length;
1591 | for (var w = Ci(f.length, x), m = Ur(y); w--; ) {
1592 | var A = f[w];
1593 | y[w] = Se(A, x) ? m[A] : T;
1594 | }
1595 | } else v && 1 < d && y.reverse();
1596 | return (
1597 | s && c < d && (y.length = c), this && this !== $n && this instanceof l && (b = g || Vr(b)), b.apply(j, y)
1598 | );
1599 | }
1600 | var s = 128 & t,
1601 | h = 1 & t,
1602 | p = 2 & t,
1603 | _ = 24 & t,
1604 | v = 512 & t,
1605 | g = p ? T : Vr(n);
1606 | return l;
1607 | }
1608 | function Yr(n, t) {
1609 | return function (r, e) {
1610 | return Bt(r, n, t(e));
1611 | };
1612 | }
1613 | function Qr(n, t) {
1614 | return function (r, e) {
1615 | var u;
1616 | if (r === T && e === T) return t;
1617 | if ((r !== T && (u = r), e !== T)) {
1618 | if (u === T) return e;
1619 | typeof r == 'string' || typeof e == 'string' ? ((r = yr(r)), (e = yr(e))) : ((r = dr(r)), (e = dr(e))),
1620 | (u = n(r, e));
1621 | }
1622 | return u;
1623 | };
1624 | }
1625 | function Xr(t) {
1626 | return pe(function (r) {
1627 | return (
1628 | (r = c(r, k(ye()))),
1629 | fr(function (e) {
1630 | var u = this;
1631 | return t(r, function (t) {
1632 | return n(t, u, e);
1633 | });
1634 | })
1635 | );
1636 | });
1637 | }
1638 | function ne(n, t) {
1639 | t = t === T ? ' ' : yr(t);
1640 | var r = t.length;
1641 | return 2 > r
1642 | ? r
1643 | ? or(t, n)
1644 | : t
1645 | : ((r = or(t, Oi(n / D(t)))), Rn.test(t) ? Or(M(r), 0, n).join('') : r.slice(0, n));
1646 | }
1647 | function te(t, r, e, u) {
1648 | function i() {
1649 | for (
1650 | var r = -1,
1651 | c = arguments.length,
1652 | a = -1,
1653 | l = u.length,
1654 | s = Ku(l + c),
1655 | h = this && this !== $n && this instanceof i ? f : t;
1656 | ++a < l;
1657 |
1658 | )
1659 | s[a] = u[a];
1660 | for (; c--; ) s[a++] = arguments[++r];
1661 | return n(h, o ? e : this, s);
1662 | }
1663 | var o = 1 & r,
1664 | f = Vr(t);
1665 | return i;
1666 | }
1667 | function re(n) {
1668 | return function (t, r, e) {
1669 | e && typeof e != 'number' && Oe(t, r, e) && (r = e = T),
1670 | (t = Au(t)),
1671 | r === T ? ((r = t), (t = 0)) : (r = Au(r)),
1672 | (e = e === T ? (t < r ? 1 : -1) : Au(e));
1673 | var u = -1;
1674 | r = Ui(Oi((r - t) / (e || 1)), 0);
1675 | for (var i = Ku(r); r--; ) (i[n ? r : ++u] = t), (t += e);
1676 | return i;
1677 | };
1678 | }
1679 | function ee(n) {
1680 | return function (t, r) {
1681 | return (typeof t == 'string' && typeof r == 'string') || ((t = Su(t)), (r = Su(r))), n(t, r);
1682 | };
1683 | }
1684 | function ue(n, t, r, e, u, i, o, f, c, a) {
1685 | var l = 8 & t,
1686 | s = l ? o : T;
1687 | o = l ? T : o;
1688 | var h = l ? i : T;
1689 | return (
1690 | (i = l ? T : i),
1691 | (t = (t | (l ? 32 : 64)) & ~(l ? 64 : 32)),
1692 | 4 & t || (t &= -4),
1693 | (u = [n, t, u, h, s, i, o, f, c, a]),
1694 | (r = r.apply(T, u)),
1695 | Re(n) && yo(r, u),
1696 | (r.placeholder = e),
1697 | Ue(r, n, t)
1698 | );
1699 | }
1700 | function ie(n) {
1701 | var t = Yu[n];
1702 | return function (n, r) {
1703 | if (((n = Su(n)), (r = null == r ? 0 : Ci(Eu(r), 292)) && Wi(n))) {
1704 | var e = (Iu(n) + 'e').split('e'),
1705 | e = t(e[0] + 'e' + (+e[1] + r)),
1706 | e = (Iu(e) + 'e').split('e');
1707 | return +(e[0] + 'e' + (+e[1] - r));
1708 | }
1709 | return t(n);
1710 | };
1711 | }
1712 | function oe(n) {
1713 | return function (t) {
1714 | var r = vo(t);
1715 | return '[object Map]' == r ? W(t) : '[object Set]' == r ? C(t) : E(t, n(t));
1716 | };
1717 | }
1718 | function fe(n, t, r, e, u, i, o, f) {
1719 | var c = 2 & t;
1720 | if (!c && typeof n != 'function') throw new ti('Expected a function');
1721 | var a = e ? e.length : 0;
1722 | if (
1723 | (a || ((t &= -97), (e = u = T)),
1724 | (o = o === T ? o : Ui(Eu(o), 0)),
1725 | (f = f === T ? f : Eu(f)),
1726 | (a -= u ? u.length : 0),
1727 | 64 & t)
1728 | ) {
1729 | var l = e,
1730 | s = u;
1731 | e = u = T;
1732 | }
1733 | var h = c ? T : ho(n);
1734 | return (
1735 | (i = [n, t, r, e, u, l, s, i, o, f]),
1736 | h &&
1737 | ((r = i[1]),
1738 | (n = h[1]),
1739 | (t = r | n),
1740 | (e =
1741 | (128 == n && 8 == r) ||
1742 | (128 == n && 256 == r && i[7].length <= h[8]) ||
1743 | (384 == n && h[7].length <= h[8] && 8 == r)),
1744 | 131 > t || e) &&
1745 | (1 & n && ((i[2] = h[2]), (t |= 1 & r ? 0 : 4)),
1746 | (r = h[3]) &&
1747 | ((e = i[3]), (i[3] = e ? Br(e, r, h[4]) : r), (i[4] = e ? L(i[3], '__lodash_placeholder__') : h[4])),
1748 | (r = h[5]) &&
1749 | ((e = i[5]), (i[5] = e ? Lr(e, r, h[6]) : r), (i[6] = e ? L(i[5], '__lodash_placeholder__') : h[6])),
1750 | (r = h[7]) && (i[7] = r),
1751 | 128 & n && (i[8] = null == i[8] ? h[8] : Ci(i[8], h[8])),
1752 | null == i[9] && (i[9] = h[9]),
1753 | (i[0] = h[0]),
1754 | (i[1] = t)),
1755 | (n = i[0]),
1756 | (t = i[1]),
1757 | (r = i[2]),
1758 | (e = i[3]),
1759 | (u = i[4]),
1760 | (f = i[9] = i[9] === T ? (c ? 0 : n.length) : Ui(i[9] - a, 0)),
1761 | !f && 24 & t && (t &= -25),
1762 | Ue(
1763 | (h ? co : yo)(
1764 | t && 1 != t
1765 | ? 8 == t || 16 == t
1766 | ? Kr(n, t, f)
1767 | : (32 != t && 33 != t) || u.length
1768 | ? Jr.apply(T, i)
1769 | : te(n, t, r, e)
1770 | : Pr(n, t, r),
1771 | i
1772 | ),
1773 | n,
1774 | t
1775 | )
1776 | );
1777 | }
1778 | function ce(n, t, r, e) {
1779 | return n === T || (lu(n, ei[r]) && !oi.call(e, r)) ? t : n;
1780 | }
1781 | function ae(n, t, r, e, u, i) {
1782 | return du(n) && du(t) && (i.set(t, n), Yt(n, t, T, ae, i), i.delete(t)), n;
1783 | }
1784 | function le(n) {
1785 | return xu(n) ? T : n;
1786 | }
1787 | function se(n, t, r, e, u, i) {
1788 | var o = 1 & r,
1789 | f = n.length,
1790 | c = t.length;
1791 | if (f != c && !(o && c > f)) return false;
1792 | if ((c = i.get(n)) && i.get(t)) return c == t;
1793 | var c = -1,
1794 | a = true,
1795 | l = 2 & r ? new Nn() : T;
1796 | for (i.set(n, t), i.set(t, n); ++c < f; ) {
1797 | var s = n[c],
1798 | p = t[c];
1799 | if (e) var _ = o ? e(p, s, c, t, n, i) : e(s, p, c, n, t, i);
1800 | if (_ !== T) {
1801 | if (_) continue;
1802 | a = false;
1803 | break;
1804 | }
1805 | if (l) {
1806 | if (
1807 | !h(t, function (n, t) {
1808 | if (!O(l, t) && (s === n || u(s, n, r, e, i))) return l.push(t);
1809 | })
1810 | ) {
1811 | a = false;
1812 | break;
1813 | }
1814 | } else if (s !== p && !u(s, p, r, e, i)) {
1815 | a = false;
1816 | break;
1817 | }
1818 | }
1819 | return i.delete(n), i.delete(t), a;
1820 | }
1821 | function he(n, t, r, e, u, i, o) {
1822 | switch (r) {
1823 | case '[object DataView]':
1824 | if (n.byteLength != t.byteLength || n.byteOffset != t.byteOffset) break;
1825 | (n = n.buffer), (t = t.buffer);
1826 | case '[object ArrayBuffer]':
1827 | if (n.byteLength != t.byteLength || !i(new vi(n), new vi(t))) break;
1828 | return true;
1829 | case '[object Boolean]':
1830 | case '[object Date]':
1831 | case '[object Number]':
1832 | return lu(+n, +t);
1833 | case '[object Error]':
1834 | return n.name == t.name && n.message == t.message;
1835 | case '[object RegExp]':
1836 | case '[object String]':
1837 | return n == t + '';
1838 | case '[object Map]':
1839 | var f = W;
1840 | case '[object Set]':
1841 | if ((f || (f = U), n.size != t.size && !(1 & e))) break;
1842 | return (r = o.get(n)) ? r == t : ((e |= 2), o.set(n, t), (t = se(f(n), f(t), e, u, i, o)), o.delete(n), t);
1843 | case '[object Symbol]':
1844 | if (to) return to.call(n) == to.call(t);
1845 | }
1846 | return false;
1847 | }
1848 | function pe(n) {
1849 | return xo(Be(n, T, Ze), n + '');
1850 | }
1851 | function _e(n) {
1852 | return St(n, Wu, po);
1853 | }
1854 | function ve(n) {
1855 | return St(n, Bu, _o);
1856 | }
1857 | function ge(n) {
1858 | for (var t = n.name + '', r = Gi[t], e = oi.call(Gi, t) ? r.length : 0; e--; ) {
1859 | var u = r[e],
1860 | i = u.func;
1861 | if (null == i || i == n) return u.name;
1862 | }
1863 | return t;
1864 | }
1865 | function de(n) {
1866 | return (oi.call(An, 'placeholder') ? An : n).placeholder;
1867 | }
1868 | function ye() {
1869 | var n = An.iteratee || Fu,
1870 | n = n === Fu ? qt : n;
1871 | return arguments.length ? n(arguments[0], arguments[1]) : n;
1872 | }
1873 | function be(n, t) {
1874 | var r = n.__data__,
1875 | e = typeof t;
1876 | return ('string' == e || 'number' == e || 'symbol' == e || 'boolean' == e ? '__proto__' !== t : null === t)
1877 | ? r[typeof t == 'string' ? 'string' : 'hash']
1878 | : r.map;
1879 | }
1880 | function xe(n) {
1881 | for (var t = Wu(n), r = t.length; r--; ) {
1882 | var e = t[r],
1883 | u = n[e];
1884 | t[r] = [e, u, u === u && !du(u)];
1885 | }
1886 | return t;
1887 | }
1888 | function je(n, t) {
1889 | var r = null == n ? T : n[t];
1890 | return Ft(r) ? r : T;
1891 | }
1892 | function we(n, t, r) {
1893 | t = Sr(t, n);
1894 | for (var e = -1, u = t.length, i = false; ++e < u; ) {
1895 | var o = Me(t[e]);
1896 | if (!(i = null != n && r(n, o))) break;
1897 | n = n[o];
1898 | }
1899 | return i || ++e != u ? i : ((u = null == n ? 0 : n.length), !!u && gu(u) && Se(o, u) && (ff(n) || of(n)));
1900 | }
1901 | function me(n) {
1902 | var t = n.length,
1903 | r = new n.constructor(t);
1904 | return t && 'string' == typeof n[0] && oi.call(n, 'index') && ((r.index = n.index), (r.input = n.input)), r;
1905 | }
1906 | function Ae(n) {
1907 | return typeof n.constructor != 'function' || ze(n) ? {} : eo(di(n));
1908 | }
1909 | function Ee(n, t, r) {
1910 | var e = n.constructor;
1911 | switch (t) {
1912 | case '[object ArrayBuffer]':
1913 | return Rr(n);
1914 | case '[object Boolean]':
1915 | case '[object Date]':
1916 | return new e(+n);
1917 | case '[object DataView]':
1918 | return (t = r ? Rr(n.buffer) : n.buffer), new n.constructor(t, n.byteOffset, n.byteLength);
1919 | case '[object Float32Array]':
1920 | case '[object Float64Array]':
1921 | case '[object Int8Array]':
1922 | case '[object Int16Array]':
1923 | case '[object Int32Array]':
1924 | case '[object Uint8Array]':
1925 | case '[object Uint8ClampedArray]':
1926 | case '[object Uint16Array]':
1927 | case '[object Uint32Array]':
1928 | return zr(n, r);
1929 | case '[object Map]':
1930 | return new e();
1931 | case '[object Number]':
1932 | case '[object String]':
1933 | return new e(n);
1934 | case '[object RegExp]':
1935 | return (t = new n.constructor(n.source, _n.exec(n))), (t.lastIndex = n.lastIndex), t;
1936 | case '[object Set]':
1937 | return new e();
1938 | case '[object Symbol]':
1939 | return to ? Qu(to.call(n)) : {};
1940 | }
1941 | }
1942 | function ke(n) {
1943 | return ff(n) || of(n) || !!(ji && n && n[ji]);
1944 | }
1945 | function Se(n, t) {
1946 | var r = typeof n;
1947 | return (
1948 | (t = null == t ? 9007199254740991 : t),
1949 | !!t && ('number' == r || ('symbol' != r && bn.test(n))) && -1 < n && 0 == n % 1 && n < t
1950 | );
1951 | }
1952 | function Oe(n, t, r) {
1953 | if (!du(r)) return false;
1954 | var e = typeof t;
1955 | return !!('number' == e ? su(r) && Se(t, r.length) : 'string' == e && t in r) && lu(r[t], n);
1956 | }
1957 | function Ie(n, t) {
1958 | if (ff(n)) return false;
1959 | var r = typeof n;
1960 | return (
1961 | !('number' != r && 'symbol' != r && 'boolean' != r && null != n && !wu(n)) ||
1962 | nn.test(n) ||
1963 | !X.test(n) ||
1964 | (null != t && n in Qu(t))
1965 | );
1966 | }
1967 | function Re(n) {
1968 | var t = ge(n),
1969 | r = An[t];
1970 | return typeof r == 'function' && t in Un.prototype && (n === r || ((t = ho(r)), !!t && n === t[0]));
1971 | }
1972 | function ze(n) {
1973 | var t = n && n.constructor;
1974 | return n === ((typeof t == 'function' && t.prototype) || ei);
1975 | }
1976 | function We(n, t) {
1977 | return function (r) {
1978 | return null != r && r[n] === t && (t !== T || n in Qu(r));
1979 | };
1980 | }
1981 | function Be(t, r, e) {
1982 | return (
1983 | (r = Ui(r === T ? t.length - 1 : r, 0)),
1984 | function () {
1985 | for (var u = arguments, i = -1, o = Ui(u.length - r, 0), f = Ku(o); ++i < o; ) f[i] = u[r + i];
1986 | for (i = -1, o = Ku(r + 1); ++i < r; ) o[i] = u[i];
1987 | return (o[r] = e(f)), n(t, this, o);
1988 | }
1989 | );
1990 | }
1991 | function Le(n, t) {
1992 | if (('constructor' !== t || 'function' != typeof n[t]) && '__proto__' != t) return n[t];
1993 | }
1994 | function Ue(n, t, r) {
1995 | var e = t + '';
1996 | t = xo;
1997 | var u,
1998 | i = $e;
1999 | return (
2000 | (u = (u = e.match(an)) ? u[1].split(ln) : []),
2001 | (r = i(u, r)),
2002 | (i = r.length) &&
2003 | ((u = i - 1),
2004 | (r[u] = (1 < i ? '& ' : '') + r[u]),
2005 | (r = r.join(2 < i ? ', ' : ' ')),
2006 | (e = e.replace(cn, '{\n/* [wrapped with ' + r + '] */\n'))),
2007 | t(n, e)
2008 | );
2009 | }
2010 | function Ce(n) {
2011 | var t = 0,
2012 | r = 0;
2013 | return function () {
2014 | var e = Di(),
2015 | u = 16 - (e - r);
2016 | if (((r = e), 0 < u)) {
2017 | if (800 <= ++t) return arguments[0];
2018 | } else t = 0;
2019 | return n.apply(T, arguments);
2020 | };
2021 | }
2022 | function De(n, t) {
2023 | var r = -1,
2024 | e = n.length,
2025 | u = e - 1;
2026 | for (t = t === T ? e : t; ++r < t; ) {
2027 | var e = ir(r, u),
2028 | i = n[e];
2029 | (n[e] = n[r]), (n[r] = i);
2030 | }
2031 | return (n.length = t), n;
2032 | }
2033 | function Me(n) {
2034 | if (typeof n == 'string' || wu(n)) return n;
2035 | var t = n + '';
2036 | return '0' == t && 1 / n == -$ ? '-0' : t;
2037 | }
2038 | function Te(n) {
2039 | if (null != n) {
2040 | try {
2041 | return ii.call(n);
2042 | } catch (n) {}
2043 | return n + '';
2044 | }
2045 | return '';
2046 | }
2047 | function $e(n, t) {
2048 | return (
2049 | r(N, function (r) {
2050 | var e = '_.' + r[0];
2051 | t & r[1] && !o(n, e) && n.push(e);
2052 | }),
2053 | n.sort()
2054 | );
2055 | }
2056 | function Fe(n) {
2057 | if (n instanceof Un) return n.clone();
2058 | var t = new On(n.__wrapped__, n.__chain__);
2059 | return (t.__actions__ = Ur(n.__actions__)), (t.__index__ = n.__index__), (t.__values__ = n.__values__), t;
2060 | }
2061 | function Ne(n, t, r) {
2062 | var e = null == n ? 0 : n.length;
2063 | return e ? ((r = null == r ? 0 : Eu(r)), 0 > r && (r = Ui(e + r, 0)), _(n, ye(t, 3), r)) : -1;
2064 | }
2065 | function Pe(n, t, r) {
2066 | var e = null == n ? 0 : n.length;
2067 | if (!e) return -1;
2068 | var u = e - 1;
2069 | return r !== T && ((u = Eu(r)), (u = 0 > r ? Ui(e + u, 0) : Ci(u, e - 1))), _(n, ye(t, 3), u, true);
2070 | }
2071 | function Ze(n) {
2072 | return (null == n ? 0 : n.length) ? wt(n, 1) : [];
2073 | }
2074 | function qe(n) {
2075 | return n && n.length ? n[0] : T;
2076 | }
2077 | function Ve(n) {
2078 | var t = null == n ? 0 : n.length;
2079 | return t ? n[t - 1] : T;
2080 | }
2081 | function Ke(n, t) {
2082 | return n && n.length && t && t.length ? er(n, t) : n;
2083 | }
2084 | function Ge(n) {
2085 | return null == n ? n : $i.call(n);
2086 | }
2087 | function He(n) {
2088 | if (!n || !n.length) return [];
2089 | var t = 0;
2090 | return (
2091 | (n = i(n, function (n) {
2092 | if (hu(n)) return (t = Ui(n.length, t)), true;
2093 | })),
2094 | A(t, function (t) {
2095 | return c(n, b(t));
2096 | })
2097 | );
2098 | }
2099 | function Je(t, r) {
2100 | if (!t || !t.length) return [];
2101 | var e = He(t);
2102 | return null == r
2103 | ? e
2104 | : c(e, function (t) {
2105 | return n(r, T, t);
2106 | });
2107 | }
2108 | function Ye(n) {
2109 | return (n = An(n)), (n.__chain__ = true), n;
2110 | }
2111 | function Qe(n, t) {
2112 | return t(n);
2113 | }
2114 | function Xe() {
2115 | return this;
2116 | }
2117 | function nu(n, t) {
2118 | return (ff(n) ? r : uo)(n, ye(t, 3));
2119 | }
2120 | function tu(n, t) {
2121 | return (ff(n) ? e : io)(n, ye(t, 3));
2122 | }
2123 | function ru(n, t) {
2124 | return (ff(n) ? c : Gt)(n, ye(t, 3));
2125 | }
2126 | function eu(n, t, r) {
2127 | return (t = r ? T : t), (t = n && null == t ? n.length : t), fe(n, 128, T, T, T, T, t);
2128 | }
2129 | function uu(n, t) {
2130 | var r;
2131 | if (typeof t != 'function') throw new ti('Expected a function');
2132 | return (
2133 | (n = Eu(n)),
2134 | function () {
2135 | return 0 < --n && (r = t.apply(this, arguments)), 1 >= n && (t = T), r;
2136 | }
2137 | );
2138 | }
2139 | function iu(n, t, r) {
2140 | return (t = r ? T : t), (n = fe(n, 8, T, T, T, T, T, t)), (n.placeholder = iu.placeholder), n;
2141 | }
2142 | function ou(n, t, r) {
2143 | return (t = r ? T : t), (n = fe(n, 16, T, T, T, T, T, t)), (n.placeholder = ou.placeholder), n;
2144 | }
2145 | function fu(n, t, r) {
2146 | function e(t) {
2147 | var r = c,
2148 | e = a;
2149 | return (c = a = T), (_ = t), (s = n.apply(e, r));
2150 | }
2151 | function u(n) {
2152 | var r = n - p;
2153 | return (n -= _), p === T || r >= t || 0 > r || (g && n >= l);
2154 | }
2155 | function i() {
2156 | var n = Go();
2157 | if (u(n)) return o(n);
2158 | var r,
2159 | e = bo;
2160 | (r = n - _), (n = t - (n - p)), (r = g ? Ci(n, l - r) : n), (h = e(i, r));
2161 | }
2162 | function o(n) {
2163 | return (h = T), d && c ? e(n) : ((c = a = T), s);
2164 | }
2165 | function f() {
2166 | var n = Go(),
2167 | r = u(n);
2168 | if (((c = arguments), (a = this), (p = n), r)) {
2169 | if (h === T) return (_ = n = p), (h = bo(i, t)), v ? e(n) : s;
2170 | if (g) return lo(h), (h = bo(i, t)), e(p);
2171 | }
2172 | return h === T && (h = bo(i, t)), s;
2173 | }
2174 | var c,
2175 | a,
2176 | l,
2177 | s,
2178 | h,
2179 | p,
2180 | _ = 0,
2181 | v = false,
2182 | g = false,
2183 | d = true;
2184 | if (typeof n != 'function') throw new ti('Expected a function');
2185 | return (
2186 | (t = Su(t) || 0),
2187 | du(r) &&
2188 | ((v = !!r.leading),
2189 | (l = (g = 'maxWait' in r) ? Ui(Su(r.maxWait) || 0, t) : l),
2190 | (d = 'trailing' in r ? !!r.trailing : d)),
2191 | (f.cancel = function () {
2192 | h !== T && lo(h), (_ = 0), (c = p = a = h = T);
2193 | }),
2194 | (f.flush = function () {
2195 | return h === T ? s : o(Go());
2196 | }),
2197 | f
2198 | );
2199 | }
2200 | function cu(n, t) {
2201 | function r() {
2202 | var e = arguments,
2203 | u = t ? t.apply(this, e) : e[0],
2204 | i = r.cache;
2205 | return i.has(u) ? i.get(u) : ((e = n.apply(this, e)), (r.cache = i.set(u, e) || i), e);
2206 | }
2207 | if (typeof n != 'function' || (null != t && typeof t != 'function')) throw new ti('Expected a function');
2208 | return (r.cache = new (cu.Cache || Fn)()), r;
2209 | }
2210 | function au(n) {
2211 | if (typeof n != 'function') throw new ti('Expected a function');
2212 | return function () {
2213 | var t = arguments;
2214 | switch (t.length) {
2215 | case 0:
2216 | return !n.call(this);
2217 | case 1:
2218 | return !n.call(this, t[0]);
2219 | case 2:
2220 | return !n.call(this, t[0], t[1]);
2221 | case 3:
2222 | return !n.call(this, t[0], t[1], t[2]);
2223 | }
2224 | return !n.apply(this, t);
2225 | };
2226 | }
2227 | function lu(n, t) {
2228 | return n === t || (n !== n && t !== t);
2229 | }
2230 | function su(n) {
2231 | return null != n && gu(n.length) && !_u(n);
2232 | }
2233 | function hu(n) {
2234 | return yu(n) && su(n);
2235 | }
2236 | function pu(n) {
2237 | if (!yu(n)) return false;
2238 | var t = Ot(n);
2239 | return (
2240 | '[object Error]' == t ||
2241 | '[object DOMException]' == t ||
2242 | (typeof n.message == 'string' && typeof n.name == 'string' && !xu(n))
2243 | );
2244 | }
2245 | function _u(n) {
2246 | return (
2247 | !!du(n) &&
2248 | ((n = Ot(n)),
2249 | '[object Function]' == n ||
2250 | '[object GeneratorFunction]' == n ||
2251 | '[object AsyncFunction]' == n ||
2252 | '[object Proxy]' == n)
2253 | );
2254 | }
2255 | function vu(n) {
2256 | return typeof n == 'number' && n == Eu(n);
2257 | }
2258 | function gu(n) {
2259 | return typeof n == 'number' && -1 < n && 0 == n % 1 && 9007199254740991 >= n;
2260 | }
2261 | function du(n) {
2262 | var t = typeof n;
2263 | return null != n && ('object' == t || 'function' == t);
2264 | }
2265 | function yu(n) {
2266 | return null != n && typeof n == 'object';
2267 | }
2268 | function bu(n) {
2269 | return typeof n == 'number' || (yu(n) && '[object Number]' == Ot(n));
2270 | }
2271 | function xu(n) {
2272 | return (
2273 | !(!yu(n) || '[object Object]' != Ot(n)) &&
2274 | ((n = di(n)),
2275 | null === n ||
2276 | ((n = oi.call(n, 'constructor') && n.constructor),
2277 | typeof n == 'function' && n instanceof n && ii.call(n) == li))
2278 | );
2279 | }
2280 | function ju(n) {
2281 | return typeof n == 'string' || (!ff(n) && yu(n) && '[object String]' == Ot(n));
2282 | }
2283 | function wu(n) {
2284 | return typeof n == 'symbol' || (yu(n) && '[object Symbol]' == Ot(n));
2285 | }
2286 | function mu(n) {
2287 | if (!n) return [];
2288 | if (su(n)) return ju(n) ? M(n) : Ur(n);
2289 | if (wi && n[wi]) {
2290 | n = n[wi]();
2291 | for (var t, r = []; !(t = n.next()).done; ) r.push(t.value);
2292 | return r;
2293 | }
2294 | return (t = vo(n)), ('[object Map]' == t ? W : '[object Set]' == t ? U : Uu)(n);
2295 | }
2296 | function Au(n) {
2297 | return n
2298 | ? ((n = Su(n)), n === $ || n === -$ ? 1.7976931348623157e308 * (0 > n ? -1 : 1) : n === n ? n : 0)
2299 | : 0 === n
2300 | ? n
2301 | : 0;
2302 | }
2303 | function Eu(n) {
2304 | n = Au(n);
2305 | var t = n % 1;
2306 | return n === n ? (t ? n - t : n) : 0;
2307 | }
2308 | function ku(n) {
2309 | return n ? pt(Eu(n), 0, 4294967295) : 0;
2310 | }
2311 | function Su(n) {
2312 | if (typeof n == 'number') return n;
2313 | if (wu(n)) return F;
2314 | if (
2315 | (du(n) && ((n = typeof n.valueOf == 'function' ? n.valueOf() : n), (n = du(n) ? n + '' : n)),
2316 | typeof n != 'string')
2317 | )
2318 | return 0 === n ? n : +n;
2319 | n = n.replace(un, '');
2320 | var t = gn.test(n);
2321 | return t || yn.test(n) ? Dn(n.slice(2), t ? 2 : 8) : vn.test(n) ? F : +n;
2322 | }
2323 | function Ou(n) {
2324 | return Cr(n, Bu(n));
2325 | }
2326 | function Iu(n) {
2327 | return null == n ? '' : yr(n);
2328 | }
2329 | function Ru(n, t, r) {
2330 | return (n = null == n ? T : kt(n, t)), n === T ? r : n;
2331 | }
2332 | function zu(n, t) {
2333 | return null != n && we(n, t, zt);
2334 | }
2335 | function Wu(n) {
2336 | return su(n) ? qn(n) : Vt(n);
2337 | }
2338 | function Bu(n) {
2339 | if (su(n)) n = qn(n, true);
2340 | else if (du(n)) {
2341 | var t,
2342 | r = ze(n),
2343 | e = [];
2344 | for (t in n) ('constructor' != t || (!r && oi.call(n, t))) && e.push(t);
2345 | n = e;
2346 | } else {
2347 | if (((t = []), null != n)) for (r in Qu(n)) t.push(r);
2348 | n = t;
2349 | }
2350 | return n;
2351 | }
2352 | function Lu(n, t) {
2353 | if (null == n) return {};
2354 | var r = c(ve(n), function (n) {
2355 | return [n];
2356 | });
2357 | return (
2358 | (t = ye(t)),
2359 | tr(n, r, function (n, r) {
2360 | return t(n, r[0]);
2361 | })
2362 | );
2363 | }
2364 | function Uu(n) {
2365 | return null == n ? [] : S(n, Wu(n));
2366 | }
2367 | function Cu(n) {
2368 | return $f(Iu(n).toLowerCase());
2369 | }
2370 | function Du(n) {
2371 | return (n = Iu(n)) && n.replace(xn, Xn).replace(Sn, '');
2372 | }
2373 | function Mu(n, t, r) {
2374 | return (
2375 | (n = Iu(n)),
2376 | (t = r ? T : t),
2377 | t === T ? (zn.test(n) ? n.match(In) || [] : n.match(sn) || []) : n.match(t) || []
2378 | );
2379 | }
2380 | function Tu(n) {
2381 | return function () {
2382 | return n;
2383 | };
2384 | }
2385 | function $u(n) {
2386 | return n;
2387 | }
2388 | function Fu(n) {
2389 | return qt(typeof n == 'function' ? n : _t(n, 1));
2390 | }
2391 | function Nu(n, t, e) {
2392 | var u = Wu(t),
2393 | i = Et(t, u);
2394 | null != e || (du(t) && (i.length || !u.length)) || ((e = t), (t = n), (n = this), (i = Et(t, Wu(t))));
2395 | var o = !(du(e) && 'chain' in e && !e.chain),
2396 | f = _u(n);
2397 | return (
2398 | r(i, function (r) {
2399 | var e = t[r];
2400 | (n[r] = e),
2401 | f &&
2402 | (n.prototype[r] = function () {
2403 | var t = this.__chain__;
2404 | if (o || t) {
2405 | var r = n(this.__wrapped__);
2406 | return (
2407 | (r.__actions__ = Ur(this.__actions__)).push({ func: e, args: arguments, thisArg: n }),
2408 | (r.__chain__ = t),
2409 | r
2410 | );
2411 | }
2412 | return e.apply(n, a([this.value()], arguments));
2413 | });
2414 | }),
2415 | n
2416 | );
2417 | }
2418 | function Pu() {}
2419 | function Zu(n) {
2420 | return Ie(n) ? b(Me(n)) : rr(n);
2421 | }
2422 | function qu() {
2423 | return [];
2424 | }
2425 | function Vu() {
2426 | return false;
2427 | }
2428 | mn = null == mn ? $n : rt.defaults($n.Object(), mn, rt.pick($n, Wn));
2429 | var Ku = mn.Array,
2430 | Gu = mn.Date,
2431 | Hu = mn.Error,
2432 | Ju = mn.Function,
2433 | Yu = mn.Math,
2434 | Qu = mn.Object,
2435 | Xu = mn.RegExp,
2436 | ni = mn.String,
2437 | ti = mn.TypeError,
2438 | ri = Ku.prototype,
2439 | ei = Qu.prototype,
2440 | ui = mn['__core-js_shared__'],
2441 | ii = Ju.prototype.toString,
2442 | oi = ei.hasOwnProperty,
2443 | fi = 0,
2444 | ci = (function () {
2445 | var n = /[^.]+$/.exec((ui && ui.keys && ui.keys.IE_PROTO) || '');
2446 | return n ? 'Symbol(src)_1.' + n : '';
2447 | })(),
2448 | ai = ei.toString,
2449 | li = ii.call(Qu),
2450 | si = $n._,
2451 | hi = Xu(
2452 | '^' +
2453 | ii
2454 | .call(oi)
2455 | .replace(rn, '\\$&')
2456 | .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') +
2457 | '$'
2458 | ),
2459 | pi = Pn ? mn.Buffer : T,
2460 | _i = mn.Symbol,
2461 | vi = mn.Uint8Array,
2462 | gi = pi ? pi.g : T,
2463 | di = B(Qu.getPrototypeOf, Qu),
2464 | yi = Qu.create,
2465 | bi = ei.propertyIsEnumerable,
2466 | xi = ri.splice,
2467 | ji = _i ? _i.isConcatSpreadable : T,
2468 | wi = _i ? _i.iterator : T,
2469 | mi = _i ? _i.toStringTag : T,
2470 | Ai = (function () {
2471 | try {
2472 | var n = je(Qu, 'defineProperty');
2473 | return n({}, '', {}), n;
2474 | } catch (n) {}
2475 | })(),
2476 | Ei = mn.clearTimeout !== $n.clearTimeout && mn.clearTimeout,
2477 | ki = Gu && Gu.now !== $n.Date.now && Gu.now,
2478 | Si = mn.setTimeout !== $n.setTimeout && mn.setTimeout,
2479 | Oi = Yu.ceil,
2480 | Ii = Yu.floor,
2481 | Ri = Qu.getOwnPropertySymbols,
2482 | zi = pi ? pi.isBuffer : T,
2483 | Wi = mn.isFinite,
2484 | Bi = ri.join,
2485 | Li = B(Qu.keys, Qu),
2486 | Ui = Yu.max,
2487 | Ci = Yu.min,
2488 | Di = Gu.now,
2489 | Mi = mn.parseInt,
2490 | Ti = Yu.random,
2491 | $i = ri.reverse,
2492 | Fi = je(mn, 'DataView'),
2493 | Ni = je(mn, 'Map'),
2494 | Pi = je(mn, 'Promise'),
2495 | Zi = je(mn, 'Set'),
2496 | qi = je(mn, 'WeakMap'),
2497 | Vi = je(Qu, 'create'),
2498 | Ki = qi && new qi(),
2499 | Gi = {},
2500 | Hi = Te(Fi),
2501 | Ji = Te(Ni),
2502 | Yi = Te(Pi),
2503 | Qi = Te(Zi),
2504 | Xi = Te(qi),
2505 | no = _i ? _i.prototype : T,
2506 | to = no ? no.valueOf : T,
2507 | ro = no ? no.toString : T,
2508 | eo = (function () {
2509 | function n() {}
2510 | return function (t) {
2511 | return du(t) ? (yi ? yi(t) : ((n.prototype = t), (t = new n()), (n.prototype = T), t)) : {};
2512 | };
2513 | })();
2514 | (An.templateSettings = { escape: J, evaluate: Y, interpolate: Q, variable: '', imports: { _: An } }),
2515 | (An.prototype = En.prototype),
2516 | (An.prototype.constructor = An),
2517 | (On.prototype = eo(En.prototype)),
2518 | (On.prototype.constructor = On),
2519 | (Un.prototype = eo(En.prototype)),
2520 | (Un.prototype.constructor = Un),
2521 | (Mn.prototype.clear = function () {
2522 | (this.__data__ = Vi ? Vi(null) : {}), (this.size = 0);
2523 | }),
2524 | (Mn.prototype.delete = function (n) {
2525 | return (n = this.has(n) && delete this.__data__[n]), (this.size -= n ? 1 : 0), n;
2526 | }),
2527 | (Mn.prototype.get = function (n) {
2528 | var t = this.__data__;
2529 | return Vi ? ((n = t[n]), '__lodash_hash_undefined__' === n ? T : n) : oi.call(t, n) ? t[n] : T;
2530 | }),
2531 | (Mn.prototype.has = function (n) {
2532 | var t = this.__data__;
2533 | return Vi ? t[n] !== T : oi.call(t, n);
2534 | }),
2535 | (Mn.prototype.set = function (n, t) {
2536 | var r = this.__data__;
2537 | return (this.size += this.has(n) ? 0 : 1), (r[n] = Vi && t === T ? '__lodash_hash_undefined__' : t), this;
2538 | }),
2539 | (Tn.prototype.clear = function () {
2540 | (this.__data__ = []), (this.size = 0);
2541 | }),
2542 | (Tn.prototype.delete = function (n) {
2543 | var t = this.__data__;
2544 | return (n = ft(t, n)), !(0 > n) && (n == t.length - 1 ? t.pop() : xi.call(t, n, 1), --this.size, true);
2545 | }),
2546 | (Tn.prototype.get = function (n) {
2547 | var t = this.__data__;
2548 | return (n = ft(t, n)), 0 > n ? T : t[n][1];
2549 | }),
2550 | (Tn.prototype.has = function (n) {
2551 | return -1 < ft(this.__data__, n);
2552 | }),
2553 | (Tn.prototype.set = function (n, t) {
2554 | var r = this.__data__,
2555 | e = ft(r, n);
2556 | return 0 > e ? (++this.size, r.push([n, t])) : (r[e][1] = t), this;
2557 | }),
2558 | (Fn.prototype.clear = function () {
2559 | (this.size = 0), (this.__data__ = { hash: new Mn(), map: new (Ni || Tn)(), string: new Mn() });
2560 | }),
2561 | (Fn.prototype.delete = function (n) {
2562 | return (n = be(this, n).delete(n)), (this.size -= n ? 1 : 0), n;
2563 | }),
2564 | (Fn.prototype.get = function (n) {
2565 | return be(this, n).get(n);
2566 | }),
2567 | (Fn.prototype.has = function (n) {
2568 | return be(this, n).has(n);
2569 | }),
2570 | (Fn.prototype.set = function (n, t) {
2571 | var r = be(this, n),
2572 | e = r.size;
2573 | return r.set(n, t), (this.size += r.size == e ? 0 : 1), this;
2574 | }),
2575 | (Nn.prototype.add = Nn.prototype.push =
2576 | function (n) {
2577 | return this.__data__.set(n, '__lodash_hash_undefined__'), this;
2578 | }),
2579 | (Nn.prototype.has = function (n) {
2580 | return this.__data__.has(n);
2581 | }),
2582 | (Zn.prototype.clear = function () {
2583 | (this.__data__ = new Tn()), (this.size = 0);
2584 | }),
2585 | (Zn.prototype.delete = function (n) {
2586 | var t = this.__data__;
2587 | return (n = t.delete(n)), (this.size = t.size), n;
2588 | }),
2589 | (Zn.prototype.get = function (n) {
2590 | return this.__data__.get(n);
2591 | }),
2592 | (Zn.prototype.has = function (n) {
2593 | return this.__data__.has(n);
2594 | }),
2595 | (Zn.prototype.set = function (n, t) {
2596 | var r = this.__data__;
2597 | if (r instanceof Tn) {
2598 | var e = r.__data__;
2599 | if (!Ni || 199 > e.length) return e.push([n, t]), (this.size = ++r.size), this;
2600 | r = this.__data__ = new Fn(e);
2601 | }
2602 | return r.set(n, t), (this.size = r.size), this;
2603 | });
2604 | var uo = Fr(mt),
2605 | io = Fr(At, true),
2606 | oo = Nr(),
2607 | fo = Nr(true),
2608 | co = Ki
2609 | ? function (n, t) {
2610 | return Ki.set(n, t), n;
2611 | }
2612 | : $u,
2613 | ao = Ai
2614 | ? function (n, t) {
2615 | return Ai(n, 'toString', { configurable: true, enumerable: false, value: Tu(t), writable: true });
2616 | }
2617 | : $u,
2618 | lo =
2619 | Ei ||
2620 | function (n) {
2621 | return $n.clearTimeout(n);
2622 | },
2623 | so =
2624 | Zi && 1 / U(new Zi([, -0]))[1] == $
2625 | ? function (n) {
2626 | return new Zi(n);
2627 | }
2628 | : Pu,
2629 | ho = Ki
2630 | ? function (n) {
2631 | return Ki.get(n);
2632 | }
2633 | : Pu,
2634 | po = Ri
2635 | ? function (n) {
2636 | return null == n
2637 | ? []
2638 | : ((n = Qu(n)),
2639 | i(Ri(n), function (t) {
2640 | return bi.call(n, t);
2641 | }));
2642 | }
2643 | : qu,
2644 | _o = Ri
2645 | ? function (n) {
2646 | for (var t = []; n; ) a(t, po(n)), (n = di(n));
2647 | return t;
2648 | }
2649 | : qu,
2650 | vo = Ot;
2651 | ((Fi && '[object DataView]' != vo(new Fi(new ArrayBuffer(1)))) ||
2652 | (Ni && '[object Map]' != vo(new Ni())) ||
2653 | (Pi && '[object Promise]' != vo(Pi.resolve())) ||
2654 | (Zi && '[object Set]' != vo(new Zi())) ||
2655 | (qi && '[object WeakMap]' != vo(new qi()))) &&
2656 | (vo = function (n) {
2657 | var t = Ot(n);
2658 | if ((n = (n = '[object Object]' == t ? n.constructor : T) ? Te(n) : ''))
2659 | switch (n) {
2660 | case Hi:
2661 | return '[object DataView]';
2662 | case Ji:
2663 | return '[object Map]';
2664 | case Yi:
2665 | return '[object Promise]';
2666 | case Qi:
2667 | return '[object Set]';
2668 | case Xi:
2669 | return '[object WeakMap]';
2670 | }
2671 | return t;
2672 | });
2673 | var go = ui ? _u : Vu,
2674 | yo = Ce(co),
2675 | bo =
2676 | Si ||
2677 | function (n, t) {
2678 | return $n.setTimeout(n, t);
2679 | },
2680 | xo = Ce(ao),
2681 | jo = (function (n) {
2682 | n = cu(n, function (n) {
2683 | return 500 === t.size && t.clear(), n;
2684 | });
2685 | var t = n.cache;
2686 | return n;
2687 | })(function (n) {
2688 | var t = [];
2689 | return (
2690 | 46 === n.charCodeAt(0) && t.push(''),
2691 | n.replace(tn, function (n, r, e, u) {
2692 | t.push(e ? u.replace(hn, '$1') : r || n);
2693 | }),
2694 | t
2695 | );
2696 | }),
2697 | wo = fr(function (n, t) {
2698 | return hu(n) ? yt(n, wt(t, 1, hu, true)) : [];
2699 | }),
2700 | mo = fr(function (n, t) {
2701 | var r = Ve(t);
2702 | return hu(r) && (r = T), hu(n) ? yt(n, wt(t, 1, hu, true), ye(r, 2)) : [];
2703 | }),
2704 | Ao = fr(function (n, t) {
2705 | var r = Ve(t);
2706 | return hu(r) && (r = T), hu(n) ? yt(n, wt(t, 1, hu, true), T, r) : [];
2707 | }),
2708 | Eo = fr(function (n) {
2709 | var t = c(n, Er);
2710 | return t.length && t[0] === n[0] ? Wt(t) : [];
2711 | }),
2712 | ko = fr(function (n) {
2713 | var t = Ve(n),
2714 | r = c(n, Er);
2715 | return t === Ve(r) ? (t = T) : r.pop(), r.length && r[0] === n[0] ? Wt(r, ye(t, 2)) : [];
2716 | }),
2717 | So = fr(function (n) {
2718 | var t = Ve(n),
2719 | r = c(n, Er);
2720 | return (t = typeof t == 'function' ? t : T) && r.pop(), r.length && r[0] === n[0] ? Wt(r, T, t) : [];
2721 | }),
2722 | Oo = fr(Ke),
2723 | Io = pe(function (n, t) {
2724 | var r = null == n ? 0 : n.length,
2725 | e = ht(n, t);
2726 | return (
2727 | ur(
2728 | n,
2729 | c(t, function (n) {
2730 | return Se(n, r) ? +n : n;
2731 | }).sort(Wr)
2732 | ),
2733 | e
2734 | );
2735 | }),
2736 | Ro = fr(function (n) {
2737 | return br(wt(n, 1, hu, true));
2738 | }),
2739 | zo = fr(function (n) {
2740 | var t = Ve(n);
2741 | return hu(t) && (t = T), br(wt(n, 1, hu, true), ye(t, 2));
2742 | }),
2743 | Wo = fr(function (n) {
2744 | var t = Ve(n),
2745 | t = typeof t == 'function' ? t : T;
2746 | return br(wt(n, 1, hu, true), T, t);
2747 | }),
2748 | Bo = fr(function (n, t) {
2749 | return hu(n) ? yt(n, t) : [];
2750 | }),
2751 | Lo = fr(function (n) {
2752 | return mr(i(n, hu));
2753 | }),
2754 | Uo = fr(function (n) {
2755 | var t = Ve(n);
2756 | return hu(t) && (t = T), mr(i(n, hu), ye(t, 2));
2757 | }),
2758 | Co = fr(function (n) {
2759 | var t = Ve(n),
2760 | t = typeof t == 'function' ? t : T;
2761 | return mr(i(n, hu), T, t);
2762 | }),
2763 | Do = fr(He),
2764 | Mo = fr(function (n) {
2765 | var t = n.length,
2766 | t = 1 < t ? n[t - 1] : T,
2767 | t = typeof t == 'function' ? (n.pop(), t) : T;
2768 | return Je(n, t);
2769 | }),
2770 | To = pe(function (n) {
2771 | function t(t) {
2772 | return ht(t, n);
2773 | }
2774 | var r = n.length,
2775 | e = r ? n[0] : 0,
2776 | u = this.__wrapped__;
2777 | return !(1 < r || this.__actions__.length) && u instanceof Un && Se(e)
2778 | ? ((u = u.slice(e, +e + (r ? 1 : 0))),
2779 | u.__actions__.push({ func: Qe, args: [t], thisArg: T }),
2780 | new On(u, this.__chain__).thru(function (n) {
2781 | return r && !n.length && n.push(T), n;
2782 | }))
2783 | : this.thru(t);
2784 | }),
2785 | $o = Tr(function (n, t, r) {
2786 | oi.call(n, r) ? ++n[r] : st(n, r, 1);
2787 | }),
2788 | Fo = Gr(Ne),
2789 | No = Gr(Pe),
2790 | Po = Tr(function (n, t, r) {
2791 | oi.call(n, r) ? n[r].push(t) : st(n, r, [t]);
2792 | }),
2793 | Zo = fr(function (t, r, e) {
2794 | var u = -1,
2795 | i = typeof r == 'function',
2796 | o = su(t) ? Ku(t.length) : [];
2797 | return (
2798 | uo(t, function (t) {
2799 | o[++u] = i ? n(r, t, e) : Lt(t, r, e);
2800 | }),
2801 | o
2802 | );
2803 | }),
2804 | qo = Tr(function (n, t, r) {
2805 | st(n, r, t);
2806 | }),
2807 | Vo = Tr(
2808 | function (n, t, r) {
2809 | n[r ? 0 : 1].push(t);
2810 | },
2811 | function () {
2812 | return [[], []];
2813 | }
2814 | ),
2815 | Ko = fr(function (n, t) {
2816 | if (null == n) return [];
2817 | var r = t.length;
2818 | return (
2819 | 1 < r && Oe(n, t[0], t[1]) ? (t = []) : 2 < r && Oe(t[0], t[1], t[2]) && (t = [t[0]]), Xt(n, wt(t, 1), [])
2820 | );
2821 | }),
2822 | Go =
2823 | ki ||
2824 | function () {
2825 | return $n.Date.now();
2826 | },
2827 | Ho = fr(function (n, t, r) {
2828 | var e = 1;
2829 | if (r.length)
2830 | var u = L(r, de(Ho)),
2831 | e = 32 | e;
2832 | return fe(n, e, t, r, u);
2833 | }),
2834 | Jo = fr(function (n, t, r) {
2835 | var e = 3;
2836 | if (r.length)
2837 | var u = L(r, de(Jo)),
2838 | e = 32 | e;
2839 | return fe(t, e, n, r, u);
2840 | }),
2841 | Yo = fr(function (n, t) {
2842 | return dt(n, 1, t);
2843 | }),
2844 | Qo = fr(function (n, t, r) {
2845 | return dt(n, Su(t) || 0, r);
2846 | });
2847 | cu.Cache = Fn;
2848 | var Xo = fr(function (t, r) {
2849 | r = 1 == r.length && ff(r[0]) ? c(r[0], k(ye())) : c(wt(r, 1), k(ye()));
2850 | var e = r.length;
2851 | return fr(function (u) {
2852 | for (var i = -1, o = Ci(u.length, e); ++i < o; ) u[i] = r[i].call(this, u[i]);
2853 | return n(t, this, u);
2854 | });
2855 | }),
2856 | nf = fr(function (n, t) {
2857 | return fe(n, 32, T, t, L(t, de(nf)));
2858 | }),
2859 | tf = fr(function (n, t) {
2860 | return fe(n, 64, T, t, L(t, de(tf)));
2861 | }),
2862 | rf = pe(function (n, t) {
2863 | return fe(n, 256, T, T, T, t);
2864 | }),
2865 | ef = ee(It),
2866 | uf = ee(function (n, t) {
2867 | return n >= t;
2868 | }),
2869 | of = Ut(
2870 | (function () {
2871 | return arguments;
2872 | })()
2873 | )
2874 | ? Ut
2875 | : function (n) {
2876 | return yu(n) && oi.call(n, 'callee') && !bi.call(n, 'callee');
2877 | },
2878 | ff = Ku.isArray,
2879 | cf = Vn ? k(Vn) : Ct,
2880 | af = zi || Vu,
2881 | lf = Kn ? k(Kn) : Dt,
2882 | sf = Gn ? k(Gn) : Tt,
2883 | hf = Hn ? k(Hn) : Nt,
2884 | pf = Jn ? k(Jn) : Pt,
2885 | _f = Yn ? k(Yn) : Zt,
2886 | vf = ee(Kt),
2887 | gf = ee(function (n, t) {
2888 | return n <= t;
2889 | }),
2890 | df = $r(function (n, t) {
2891 | if (ze(t) || su(t)) Cr(t, Wu(t), n);
2892 | else for (var r in t) oi.call(t, r) && ot(n, r, t[r]);
2893 | }),
2894 | yf = $r(function (n, t) {
2895 | Cr(t, Bu(t), n);
2896 | }),
2897 | bf = $r(function (n, t, r, e) {
2898 | Cr(t, Bu(t), n, e);
2899 | }),
2900 | xf = $r(function (n, t, r, e) {
2901 | Cr(t, Wu(t), n, e);
2902 | }),
2903 | jf = pe(ht),
2904 | wf = fr(function (n, t) {
2905 | n = Qu(n);
2906 | var r = -1,
2907 | e = t.length,
2908 | u = 2 < e ? t[2] : T;
2909 | for (u && Oe(t[0], t[1], u) && (e = 1); ++r < e; )
2910 | for (var u = t[r], i = Bu(u), o = -1, f = i.length; ++o < f; ) {
2911 | var c = i[o],
2912 | a = n[c];
2913 | (a === T || (lu(a, ei[c]) && !oi.call(n, c))) && (n[c] = u[c]);
2914 | }
2915 | return n;
2916 | }),
2917 | mf = fr(function (t) {
2918 | return t.push(T, ae), n(Of, T, t);
2919 | }),
2920 | Af = Yr(function (n, t, r) {
2921 | null != t && typeof t.toString != 'function' && (t = ai.call(t)), (n[t] = r);
2922 | }, Tu($u)),
2923 | Ef = Yr(function (n, t, r) {
2924 | null != t && typeof t.toString != 'function' && (t = ai.call(t)), oi.call(n, t) ? n[t].push(r) : (n[t] = [r]);
2925 | }, ye),
2926 | kf = fr(Lt),
2927 | Sf = $r(function (n, t, r) {
2928 | Yt(n, t, r);
2929 | }),
2930 | Of = $r(function (n, t, r, e) {
2931 | Yt(n, t, r, e);
2932 | }),
2933 | If = pe(function (n, t) {
2934 | var r = {};
2935 | if (null == n) return r;
2936 | var e = false;
2937 | (t = c(t, function (t) {
2938 | return (t = Sr(t, n)), e || (e = 1 < t.length), t;
2939 | })),
2940 | Cr(n, ve(n), r),
2941 | e && (r = _t(r, 7, le));
2942 | for (var u = t.length; u--; ) xr(r, t[u]);
2943 | return r;
2944 | }),
2945 | Rf = pe(function (n, t) {
2946 | return null == n ? {} : nr(n, t);
2947 | }),
2948 | zf = oe(Wu),
2949 | Wf = oe(Bu),
2950 | Bf = qr(function (n, t, r) {
2951 | return (t = t.toLowerCase()), n + (r ? Cu(t) : t);
2952 | }),
2953 | Lf = qr(function (n, t, r) {
2954 | return n + (r ? '-' : '') + t.toLowerCase();
2955 | }),
2956 | Uf = qr(function (n, t, r) {
2957 | return n + (r ? ' ' : '') + t.toLowerCase();
2958 | }),
2959 | Cf = Zr('toLowerCase'),
2960 | Df = qr(function (n, t, r) {
2961 | return n + (r ? '_' : '') + t.toLowerCase();
2962 | }),
2963 | Mf = qr(function (n, t, r) {
2964 | return n + (r ? ' ' : '') + $f(t);
2965 | }),
2966 | Tf = qr(function (n, t, r) {
2967 | return n + (r ? ' ' : '') + t.toUpperCase();
2968 | }),
2969 | $f = Zr('toUpperCase'),
2970 | Ff = fr(function (t, r) {
2971 | try {
2972 | return n(t, T, r);
2973 | } catch (n) {
2974 | return pu(n) ? n : new Hu(n);
2975 | }
2976 | }),
2977 | Nf = pe(function (n, t) {
2978 | return (
2979 | r(t, function (t) {
2980 | (t = Me(t)), st(n, t, Ho(n[t], n));
2981 | }),
2982 | n
2983 | );
2984 | }),
2985 | Pf = Hr(),
2986 | Zf = Hr(true),
2987 | qf = fr(function (n, t) {
2988 | return function (r) {
2989 | return Lt(r, n, t);
2990 | };
2991 | }),
2992 | Vf = fr(function (n, t) {
2993 | return function (r) {
2994 | return Lt(n, r, t);
2995 | };
2996 | }),
2997 | Kf = Xr(c),
2998 | Gf = Xr(u),
2999 | Hf = Xr(h),
3000 | Jf = re(),
3001 | Yf = re(true),
3002 | Qf = Qr(function (n, t) {
3003 | return n + t;
3004 | }, 0),
3005 | Xf = ie('ceil'),
3006 | nc = Qr(function (n, t) {
3007 | return n / t;
3008 | }, 1),
3009 | tc = ie('floor'),
3010 | rc = Qr(function (n, t) {
3011 | return n * t;
3012 | }, 1),
3013 | ec = ie('round'),
3014 | uc = Qr(function (n, t) {
3015 | return n - t;
3016 | }, 0);
3017 | return (
3018 | (An.after = function (n, t) {
3019 | if (typeof t != 'function') throw new ti('Expected a function');
3020 | return (
3021 | (n = Eu(n)),
3022 | function () {
3023 | if (1 > --n) return t.apply(this, arguments);
3024 | }
3025 | );
3026 | }),
3027 | (An.ary = eu),
3028 | (An.assign = df),
3029 | (An.assignIn = yf),
3030 | (An.assignInWith = bf),
3031 | (An.assignWith = xf),
3032 | (An.at = jf),
3033 | (An.before = uu),
3034 | (An.bind = Ho),
3035 | (An.bindAll = Nf),
3036 | (An.bindKey = Jo),
3037 | (An.castArray = function () {
3038 | if (!arguments.length) return [];
3039 | var n = arguments[0];
3040 | return ff(n) ? n : [n];
3041 | }),
3042 | (An.chain = Ye),
3043 | (An.chunk = function (n, t, r) {
3044 | if (((t = (r ? Oe(n, t, r) : t === T) ? 1 : Ui(Eu(t), 0)), (r = null == n ? 0 : n.length), !r || 1 > t))
3045 | return [];
3046 | for (var e = 0, u = 0, i = Ku(Oi(r / t)); e < r; ) i[u++] = hr(n, e, (e += t));
3047 | return i;
3048 | }),
3049 | (An.compact = function (n) {
3050 | for (var t = -1, r = null == n ? 0 : n.length, e = 0, u = []; ++t < r; ) {
3051 | var i = n[t];
3052 | i && (u[e++] = i);
3053 | }
3054 | return u;
3055 | }),
3056 | (An.concat = function () {
3057 | var n = arguments.length;
3058 | if (!n) return [];
3059 | for (var t = Ku(n - 1), r = arguments[0]; n--; ) t[n - 1] = arguments[n];
3060 | return a(ff(r) ? Ur(r) : [r], wt(t, 1));
3061 | }),
3062 | (An.cond = function (t) {
3063 | var r = null == t ? 0 : t.length,
3064 | e = ye();
3065 | return (
3066 | (t = r
3067 | ? c(t, function (n) {
3068 | if ('function' != typeof n[1]) throw new ti('Expected a function');
3069 | return [e(n[0]), n[1]];
3070 | })
3071 | : []),
3072 | fr(function (e) {
3073 | for (var u = -1; ++u < r; ) {
3074 | var i = t[u];
3075 | if (n(i[0], this, e)) return n(i[1], this, e);
3076 | }
3077 | })
3078 | );
3079 | }),
3080 | (An.conforms = function (n) {
3081 | return vt(_t(n, 1));
3082 | }),
3083 | (An.constant = Tu),
3084 | (An.countBy = $o),
3085 | (An.create = function (n, t) {
3086 | var r = eo(n);
3087 | return null == t ? r : at(r, t);
3088 | }),
3089 | (An.curry = iu),
3090 | (An.curryRight = ou),
3091 | (An.debounce = fu),
3092 | (An.defaults = wf),
3093 | (An.defaultsDeep = mf),
3094 | (An.defer = Yo),
3095 | (An.delay = Qo),
3096 | (An.difference = wo),
3097 | (An.differenceBy = mo),
3098 | (An.differenceWith = Ao),
3099 | (An.drop = function (n, t, r) {
3100 | var e = null == n ? 0 : n.length;
3101 | return e ? ((t = r || t === T ? 1 : Eu(t)), hr(n, 0 > t ? 0 : t, e)) : [];
3102 | }),
3103 | (An.dropRight = function (n, t, r) {
3104 | var e = null == n ? 0 : n.length;
3105 | return e ? ((t = r || t === T ? 1 : Eu(t)), (t = e - t), hr(n, 0, 0 > t ? 0 : t)) : [];
3106 | }),
3107 | (An.dropRightWhile = function (n, t) {
3108 | return n && n.length ? jr(n, ye(t, 3), true, true) : [];
3109 | }),
3110 | (An.dropWhile = function (n, t) {
3111 | return n && n.length ? jr(n, ye(t, 3), true) : [];
3112 | }),
3113 | (An.fill = function (n, t, r, e) {
3114 | var u = null == n ? 0 : n.length;
3115 | if (!u) return [];
3116 | for (
3117 | r && typeof r != 'number' && Oe(n, t, r) && ((r = 0), (e = u)),
3118 | u = n.length,
3119 | r = Eu(r),
3120 | 0 > r && (r = -r > u ? 0 : u + r),
3121 | e = e === T || e > u ? u : Eu(e),
3122 | 0 > e && (e += u),
3123 | e = r > e ? 0 : ku(e);
3124 | r < e;
3125 |
3126 | )
3127 | n[r++] = t;
3128 | return n;
3129 | }),
3130 | (An.filter = function (n, t) {
3131 | return (ff(n) ? i : jt)(n, ye(t, 3));
3132 | }),
3133 | (An.flatMap = function (n, t) {
3134 | return wt(ru(n, t), 1);
3135 | }),
3136 | (An.flatMapDeep = function (n, t) {
3137 | return wt(ru(n, t), $);
3138 | }),
3139 | (An.flatMapDepth = function (n, t, r) {
3140 | return (r = r === T ? 1 : Eu(r)), wt(ru(n, t), r);
3141 | }),
3142 | (An.flatten = Ze),
3143 | (An.flattenDeep = function (n) {
3144 | return (null == n ? 0 : n.length) ? wt(n, $) : [];
3145 | }),
3146 | (An.flattenDepth = function (n, t) {
3147 | return null != n && n.length ? ((t = t === T ? 1 : Eu(t)), wt(n, t)) : [];
3148 | }),
3149 | (An.flip = function (n) {
3150 | return fe(n, 512);
3151 | }),
3152 | (An.flow = Pf),
3153 | (An.flowRight = Zf),
3154 | (An.fromPairs = function (n) {
3155 | for (var t = -1, r = null == n ? 0 : n.length, e = {}; ++t < r; ) {
3156 | var u = n[t];
3157 | e[u[0]] = u[1];
3158 | }
3159 | return e;
3160 | }),
3161 | (An.functions = function (n) {
3162 | return null == n ? [] : Et(n, Wu(n));
3163 | }),
3164 | (An.functionsIn = function (n) {
3165 | return null == n ? [] : Et(n, Bu(n));
3166 | }),
3167 | (An.groupBy = Po),
3168 | (An.initial = function (n) {
3169 | return (null == n ? 0 : n.length) ? hr(n, 0, -1) : [];
3170 | }),
3171 | (An.intersection = Eo),
3172 | (An.intersectionBy = ko),
3173 | (An.intersectionWith = So),
3174 | (An.invert = Af),
3175 | (An.invertBy = Ef),
3176 | (An.invokeMap = Zo),
3177 | (An.iteratee = Fu),
3178 | (An.keyBy = qo),
3179 | (An.keys = Wu),
3180 | (An.keysIn = Bu),
3181 | (An.map = ru),
3182 | (An.mapKeys = function (n, t) {
3183 | var r = {};
3184 | return (
3185 | (t = ye(t, 3)),
3186 | mt(n, function (n, e, u) {
3187 | st(r, t(n, e, u), n);
3188 | }),
3189 | r
3190 | );
3191 | }),
3192 | (An.mapValues = function (n, t) {
3193 | var r = {};
3194 | return (
3195 | (t = ye(t, 3)),
3196 | mt(n, function (n, e, u) {
3197 | st(r, e, t(n, e, u));
3198 | }),
3199 | r
3200 | );
3201 | }),
3202 | (An.matches = function (n) {
3203 | return Ht(_t(n, 1));
3204 | }),
3205 | (An.matchesProperty = function (n, t) {
3206 | return Jt(n, _t(t, 1));
3207 | }),
3208 | (An.memoize = cu),
3209 | (An.merge = Sf),
3210 | (An.mergeWith = Of),
3211 | (An.method = qf),
3212 | (An.methodOf = Vf),
3213 | (An.mixin = Nu),
3214 | (An.negate = au),
3215 | (An.nthArg = function (n) {
3216 | return (
3217 | (n = Eu(n)),
3218 | fr(function (t) {
3219 | return Qt(t, n);
3220 | })
3221 | );
3222 | }),
3223 | (An.omit = If),
3224 | (An.omitBy = function (n, t) {
3225 | return Lu(n, au(ye(t)));
3226 | }),
3227 | (An.once = function (n) {
3228 | return uu(2, n);
3229 | }),
3230 | (An.orderBy = function (n, t, r, e) {
3231 | return null == n
3232 | ? []
3233 | : (ff(t) || (t = null == t ? [] : [t]), (r = e ? T : r), ff(r) || (r = null == r ? [] : [r]), Xt(n, t, r));
3234 | }),
3235 | (An.over = Kf),
3236 | (An.overArgs = Xo),
3237 | (An.overEvery = Gf),
3238 | (An.overSome = Hf),
3239 | (An.partial = nf),
3240 | (An.partialRight = tf),
3241 | (An.partition = Vo),
3242 | (An.pick = Rf),
3243 | (An.pickBy = Lu),
3244 | (An.property = Zu),
3245 | (An.propertyOf = function (n) {
3246 | return function (t) {
3247 | return null == n ? T : kt(n, t);
3248 | };
3249 | }),
3250 | (An.pull = Oo),
3251 | (An.pullAll = Ke),
3252 | (An.pullAllBy = function (n, t, r) {
3253 | return n && n.length && t && t.length ? er(n, t, ye(r, 2)) : n;
3254 | }),
3255 | (An.pullAllWith = function (n, t, r) {
3256 | return n && n.length && t && t.length ? er(n, t, T, r) : n;
3257 | }),
3258 | (An.pullAt = Io),
3259 | (An.range = Jf),
3260 | (An.rangeRight = Yf),
3261 | (An.rearg = rf),
3262 | (An.reject = function (n, t) {
3263 | return (ff(n) ? i : jt)(n, au(ye(t, 3)));
3264 | }),
3265 | (An.remove = function (n, t) {
3266 | var r = [];
3267 | if (!n || !n.length) return r;
3268 | var e = -1,
3269 | u = [],
3270 | i = n.length;
3271 | for (t = ye(t, 3); ++e < i; ) {
3272 | var o = n[e];
3273 | t(o, e, n) && (r.push(o), u.push(e));
3274 | }
3275 | return ur(n, u), r;
3276 | }),
3277 | (An.rest = function (n, t) {
3278 | if (typeof n != 'function') throw new ti('Expected a function');
3279 | return (t = t === T ? t : Eu(t)), fr(n, t);
3280 | }),
3281 | (An.reverse = Ge),
3282 | (An.sampleSize = function (n, t, r) {
3283 | return (t = (r ? Oe(n, t, r) : t === T) ? 1 : Eu(t)), (ff(n) ? et : ar)(n, t);
3284 | }),
3285 | (An.set = function (n, t, r) {
3286 | return null == n ? n : lr(n, t, r);
3287 | }),
3288 | (An.setWith = function (n, t, r, e) {
3289 | return (e = typeof e == 'function' ? e : T), null == n ? n : lr(n, t, r, e);
3290 | }),
3291 | (An.shuffle = function (n) {
3292 | return (ff(n) ? ut : sr)(n);
3293 | }),
3294 | (An.slice = function (n, t, r) {
3295 | var e = null == n ? 0 : n.length;
3296 | return e
3297 | ? (r && typeof r != 'number' && Oe(n, t, r)
3298 | ? ((t = 0), (r = e))
3299 | : ((t = null == t ? 0 : Eu(t)), (r = r === T ? e : Eu(r))),
3300 | hr(n, t, r))
3301 | : [];
3302 | }),
3303 | (An.sortBy = Ko),
3304 | (An.sortedUniq = function (n) {
3305 | return n && n.length ? gr(n) : [];
3306 | }),
3307 | (An.sortedUniqBy = function (n, t) {
3308 | return n && n.length ? gr(n, ye(t, 2)) : [];
3309 | }),
3310 | (An.split = function (n, t, r) {
3311 | return (
3312 | r && typeof r != 'number' && Oe(n, t, r) && (t = r = T),
3313 | (r = r === T ? 4294967295 : r >>> 0),
3314 | r
3315 | ? (n = Iu(n)) && (typeof t == 'string' || (null != t && !hf(t))) && ((t = yr(t)), !t && Rn.test(n))
3316 | ? Or(M(n), 0, r)
3317 | : n.split(t, r)
3318 | : []
3319 | );
3320 | }),
3321 | (An.spread = function (t, r) {
3322 | if (typeof t != 'function') throw new ti('Expected a function');
3323 | return (
3324 | (r = null == r ? 0 : Ui(Eu(r), 0)),
3325 | fr(function (e) {
3326 | var u = e[r];
3327 | return (e = Or(e, 0, r)), u && a(e, u), n(t, this, e);
3328 | })
3329 | );
3330 | }),
3331 | (An.tail = function (n) {
3332 | var t = null == n ? 0 : n.length;
3333 | return t ? hr(n, 1, t) : [];
3334 | }),
3335 | (An.take = function (n, t, r) {
3336 | return n && n.length ? ((t = r || t === T ? 1 : Eu(t)), hr(n, 0, 0 > t ? 0 : t)) : [];
3337 | }),
3338 | (An.takeRight = function (n, t, r) {
3339 | var e = null == n ? 0 : n.length;
3340 | return e ? ((t = r || t === T ? 1 : Eu(t)), (t = e - t), hr(n, 0 > t ? 0 : t, e)) : [];
3341 | }),
3342 | (An.takeRightWhile = function (n, t) {
3343 | return n && n.length ? jr(n, ye(t, 3), false, true) : [];
3344 | }),
3345 | (An.takeWhile = function (n, t) {
3346 | return n && n.length ? jr(n, ye(t, 3)) : [];
3347 | }),
3348 | (An.tap = function (n, t) {
3349 | return t(n), n;
3350 | }),
3351 | (An.throttle = function (n, t, r) {
3352 | var e = true,
3353 | u = true;
3354 | if (typeof n != 'function') throw new ti('Expected a function');
3355 | return (
3356 | du(r) && ((e = 'leading' in r ? !!r.leading : e), (u = 'trailing' in r ? !!r.trailing : u)),
3357 | fu(n, t, { leading: e, maxWait: t, trailing: u })
3358 | );
3359 | }),
3360 | (An.thru = Qe),
3361 | (An.toArray = mu),
3362 | (An.toPairs = zf),
3363 | (An.toPairsIn = Wf),
3364 | (An.toPath = function (n) {
3365 | return ff(n) ? c(n, Me) : wu(n) ? [n] : Ur(jo(Iu(n)));
3366 | }),
3367 | (An.toPlainObject = Ou),
3368 | (An.transform = function (n, t, e) {
3369 | var u = ff(n),
3370 | i = u || af(n) || _f(n);
3371 | if (((t = ye(t, 4)), null == e)) {
3372 | var o = n && n.constructor;
3373 | e = i ? (u ? new o() : []) : du(n) && _u(o) ? eo(di(n)) : {};
3374 | }
3375 | return (
3376 | (i ? r : mt)(n, function (n, r, u) {
3377 | return t(e, n, r, u);
3378 | }),
3379 | e
3380 | );
3381 | }),
3382 | (An.unary = function (n) {
3383 | return eu(n, 1);
3384 | }),
3385 | (An.union = Ro),
3386 | (An.unionBy = zo),
3387 | (An.unionWith = Wo),
3388 | (An.uniq = function (n) {
3389 | return n && n.length ? br(n) : [];
3390 | }),
3391 | (An.uniqBy = function (n, t) {
3392 | return n && n.length ? br(n, ye(t, 2)) : [];
3393 | }),
3394 | (An.uniqWith = function (n, t) {
3395 | return (t = typeof t == 'function' ? t : T), n && n.length ? br(n, T, t) : [];
3396 | }),
3397 | (An.unset = function (n, t) {
3398 | return null == n || xr(n, t);
3399 | }),
3400 | (An.unzip = He),
3401 | (An.unzipWith = Je),
3402 | (An.update = function (n, t, r) {
3403 | return null == n ? n : lr(n, t, kr(r)(kt(n, t)), void 0);
3404 | }),
3405 | (An.updateWith = function (n, t, r, e) {
3406 | return (e = typeof e == 'function' ? e : T), null != n && (n = lr(n, t, kr(r)(kt(n, t)), e)), n;
3407 | }),
3408 | (An.values = Uu),
3409 | (An.valuesIn = function (n) {
3410 | return null == n ? [] : S(n, Bu(n));
3411 | }),
3412 | (An.without = Bo),
3413 | (An.words = Mu),
3414 | (An.wrap = function (n, t) {
3415 | return nf(kr(t), n);
3416 | }),
3417 | (An.xor = Lo),
3418 | (An.xorBy = Uo),
3419 | (An.xorWith = Co),
3420 | (An.zip = Do),
3421 | (An.zipObject = function (n, t) {
3422 | return Ar(n || [], t || [], ot);
3423 | }),
3424 | (An.zipObjectDeep = function (n, t) {
3425 | return Ar(n || [], t || [], lr);
3426 | }),
3427 | (An.zipWith = Mo),
3428 | (An.entries = zf),
3429 | (An.entriesIn = Wf),
3430 | (An.extend = yf),
3431 | (An.extendWith = bf),
3432 | Nu(An, An),
3433 | (An.add = Qf),
3434 | (An.attempt = Ff),
3435 | (An.camelCase = Bf),
3436 | (An.capitalize = Cu),
3437 | (An.ceil = Xf),
3438 | (An.clamp = function (n, t, r) {
3439 | return (
3440 | r === T && ((r = t), (t = T)),
3441 | r !== T && ((r = Su(r)), (r = r === r ? r : 0)),
3442 | t !== T && ((t = Su(t)), (t = t === t ? t : 0)),
3443 | pt(Su(n), t, r)
3444 | );
3445 | }),
3446 | (An.clone = function (n) {
3447 | return _t(n, 4);
3448 | }),
3449 | (An.cloneDeep = function (n) {
3450 | return _t(n, 5);
3451 | }),
3452 | (An.cloneDeepWith = function (n, t) {
3453 | return (t = typeof t == 'function' ? t : T), _t(n, 5, t);
3454 | }),
3455 | (An.cloneWith = function (n, t) {
3456 | return (t = typeof t == 'function' ? t : T), _t(n, 4, t);
3457 | }),
3458 | (An.conformsTo = function (n, t) {
3459 | return null == t || gt(n, t, Wu(t));
3460 | }),
3461 | (An.deburr = Du),
3462 | (An.defaultTo = function (n, t) {
3463 | return null == n || n !== n ? t : n;
3464 | }),
3465 | (An.divide = nc),
3466 | (An.endsWith = function (n, t, r) {
3467 | (n = Iu(n)), (t = yr(t));
3468 | var e = n.length,
3469 | e = (r = r === T ? e : pt(Eu(r), 0, e));
3470 | return (r -= t.length), 0 <= r && n.slice(r, e) == t;
3471 | }),
3472 | (An.eq = lu),
3473 | (An.escape = function (n) {
3474 | return (n = Iu(n)) && H.test(n) ? n.replace(K, nt) : n;
3475 | }),
3476 | (An.escapeRegExp = function (n) {
3477 | return (n = Iu(n)) && en.test(n) ? n.replace(rn, '\\$&') : n;
3478 | }),
3479 | (An.every = function (n, t, r) {
3480 | var e = ff(n) ? u : bt;
3481 | return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3));
3482 | }),
3483 | (An.find = Fo),
3484 | (An.findIndex = Ne),
3485 | (An.findKey = function (n, t) {
3486 | return p(n, ye(t, 3), mt);
3487 | }),
3488 | (An.findLast = No),
3489 | (An.findLastIndex = Pe),
3490 | (An.findLastKey = function (n, t) {
3491 | return p(n, ye(t, 3), At);
3492 | }),
3493 | (An.floor = tc),
3494 | (An.forEach = nu),
3495 | (An.forEachRight = tu),
3496 | (An.forIn = function (n, t) {
3497 | return null == n ? n : oo(n, ye(t, 3), Bu);
3498 | }),
3499 | (An.forInRight = function (n, t) {
3500 | return null == n ? n : fo(n, ye(t, 3), Bu);
3501 | }),
3502 | (An.forOwn = function (n, t) {
3503 | return n && mt(n, ye(t, 3));
3504 | }),
3505 | (An.forOwnRight = function (n, t) {
3506 | return n && At(n, ye(t, 3));
3507 | }),
3508 | (An.get = Ru),
3509 | (An.gt = ef),
3510 | (An.gte = uf),
3511 | (An.has = function (n, t) {
3512 | return null != n && we(n, t, Rt);
3513 | }),
3514 | (An.hasIn = zu),
3515 | (An.head = qe),
3516 | (An.identity = $u),
3517 | (An.includes = function (n, t, r, e) {
3518 | return (
3519 | (n = su(n) ? n : Uu(n)),
3520 | (r = r && !e ? Eu(r) : 0),
3521 | (e = n.length),
3522 | 0 > r && (r = Ui(e + r, 0)),
3523 | ju(n) ? r <= e && -1 < n.indexOf(t, r) : !!e && -1 < v(n, t, r)
3524 | );
3525 | }),
3526 | (An.indexOf = function (n, t, r) {
3527 | var e = null == n ? 0 : n.length;
3528 | return e ? ((r = null == r ? 0 : Eu(r)), 0 > r && (r = Ui(e + r, 0)), v(n, t, r)) : -1;
3529 | }),
3530 | (An.inRange = function (n, t, r) {
3531 | return (t = Au(t)), r === T ? ((r = t), (t = 0)) : (r = Au(r)), (n = Su(n)), n >= Ci(t, r) && n < Ui(t, r);
3532 | }),
3533 | (An.invoke = kf),
3534 | (An.isArguments = of),
3535 | (An.isArray = ff),
3536 | (An.isArrayBuffer = cf),
3537 | (An.isArrayLike = su),
3538 | (An.isArrayLikeObject = hu),
3539 | (An.isBoolean = function (n) {
3540 | return true === n || false === n || (yu(n) && '[object Boolean]' == Ot(n));
3541 | }),
3542 | (An.isBuffer = af),
3543 | (An.isDate = lf),
3544 | (An.isElement = function (n) {
3545 | return yu(n) && 1 === n.nodeType && !xu(n);
3546 | }),
3547 | (An.isEmpty = function (n) {
3548 | if (null == n) return true;
3549 | if (su(n) && (ff(n) || typeof n == 'string' || typeof n.splice == 'function' || af(n) || _f(n) || of(n)))
3550 | return !n.length;
3551 | var t = vo(n);
3552 | if ('[object Map]' == t || '[object Set]' == t) return !n.size;
3553 | if (ze(n)) return !Vt(n).length;
3554 | for (var r in n) if (oi.call(n, r)) return false;
3555 | return true;
3556 | }),
3557 | (An.isEqual = function (n, t) {
3558 | return Mt(n, t);
3559 | }),
3560 | (An.isEqualWith = function (n, t, r) {
3561 | var e = (r = typeof r == 'function' ? r : T) ? r(n, t) : T;
3562 | return e === T ? Mt(n, t, T, r) : !!e;
3563 | }),
3564 | (An.isError = pu),
3565 | (An.isFinite = function (n) {
3566 | return typeof n == 'number' && Wi(n);
3567 | }),
3568 | (An.isFunction = _u),
3569 | (An.isInteger = vu),
3570 | (An.isLength = gu),
3571 | (An.isMap = sf),
3572 | (An.isMatch = function (n, t) {
3573 | return n === t || $t(n, t, xe(t));
3574 | }),
3575 | (An.isMatchWith = function (n, t, r) {
3576 | return (r = typeof r == 'function' ? r : T), $t(n, t, xe(t), r);
3577 | }),
3578 | (An.isNaN = function (n) {
3579 | return bu(n) && n != +n;
3580 | }),
3581 | (An.isNative = function (n) {
3582 | if (go(n)) throw new Hu('Unsupported core-js use. Try https://npms.io/search?q=ponyfill.');
3583 | return Ft(n);
3584 | }),
3585 | (An.isNil = function (n) {
3586 | return null == n;
3587 | }),
3588 | (An.isNull = function (n) {
3589 | return null === n;
3590 | }),
3591 | (An.isNumber = bu),
3592 | (An.isObject = du),
3593 | (An.isObjectLike = yu),
3594 | (An.isPlainObject = xu),
3595 | (An.isRegExp = hf),
3596 | (An.isSafeInteger = function (n) {
3597 | return vu(n) && -9007199254740991 <= n && 9007199254740991 >= n;
3598 | }),
3599 | (An.isSet = pf),
3600 | (An.isString = ju),
3601 | (An.isSymbol = wu),
3602 | (An.isTypedArray = _f),
3603 | (An.isUndefined = function (n) {
3604 | return n === T;
3605 | }),
3606 | (An.isWeakMap = function (n) {
3607 | return yu(n) && '[object WeakMap]' == vo(n);
3608 | }),
3609 | (An.isWeakSet = function (n) {
3610 | return yu(n) && '[object WeakSet]' == Ot(n);
3611 | }),
3612 | (An.join = function (n, t) {
3613 | return null == n ? '' : Bi.call(n, t);
3614 | }),
3615 | (An.kebabCase = Lf),
3616 | (An.last = Ve),
3617 | (An.lastIndexOf = function (n, t, r) {
3618 | var e = null == n ? 0 : n.length;
3619 | if (!e) return -1;
3620 | var u = e;
3621 | if ((r !== T && ((u = Eu(r)), (u = 0 > u ? Ui(e + u, 0) : Ci(u, e - 1))), t === t)) {
3622 | for (r = u + 1; r-- && n[r] !== t; );
3623 | n = r;
3624 | } else n = _(n, d, u, true);
3625 | return n;
3626 | }),
3627 | (An.lowerCase = Uf),
3628 | (An.lowerFirst = Cf),
3629 | (An.lt = vf),
3630 | (An.lte = gf),
3631 | (An.max = function (n) {
3632 | return n && n.length ? xt(n, $u, It) : T;
3633 | }),
3634 | (An.maxBy = function (n, t) {
3635 | return n && n.length ? xt(n, ye(t, 2), It) : T;
3636 | }),
3637 | (An.mean = function (n) {
3638 | return y(n, $u);
3639 | }),
3640 | (An.meanBy = function (n, t) {
3641 | return y(n, ye(t, 2));
3642 | }),
3643 | (An.min = function (n) {
3644 | return n && n.length ? xt(n, $u, Kt) : T;
3645 | }),
3646 | (An.minBy = function (n, t) {
3647 | return n && n.length ? xt(n, ye(t, 2), Kt) : T;
3648 | }),
3649 | (An.stubArray = qu),
3650 | (An.stubFalse = Vu),
3651 | (An.stubObject = function () {
3652 | return {};
3653 | }),
3654 | (An.stubString = function () {
3655 | return '';
3656 | }),
3657 | (An.stubTrue = function () {
3658 | return true;
3659 | }),
3660 | (An.multiply = rc),
3661 | (An.nth = function (n, t) {
3662 | return n && n.length ? Qt(n, Eu(t)) : T;
3663 | }),
3664 | (An.noConflict = function () {
3665 | return $n._ === this && ($n._ = si), this;
3666 | }),
3667 | (An.noop = Pu),
3668 | (An.now = Go),
3669 | (An.pad = function (n, t, r) {
3670 | n = Iu(n);
3671 | var e = (t = Eu(t)) ? D(n) : 0;
3672 | return !t || e >= t ? n : ((t = (t - e) / 2), ne(Ii(t), r) + n + ne(Oi(t), r));
3673 | }),
3674 | (An.padEnd = function (n, t, r) {
3675 | n = Iu(n);
3676 | var e = (t = Eu(t)) ? D(n) : 0;
3677 | return t && e < t ? n + ne(t - e, r) : n;
3678 | }),
3679 | (An.padStart = function (n, t, r) {
3680 | n = Iu(n);
3681 | var e = (t = Eu(t)) ? D(n) : 0;
3682 | return t && e < t ? ne(t - e, r) + n : n;
3683 | }),
3684 | (An.parseInt = function (n, t, r) {
3685 | return r || null == t ? (t = 0) : t && (t = +t), Mi(Iu(n).replace(on, ''), t || 0);
3686 | }),
3687 | (An.random = function (n, t, r) {
3688 | if (
3689 | (r && typeof r != 'boolean' && Oe(n, t, r) && (t = r = T),
3690 | r === T && (typeof t == 'boolean' ? ((r = t), (t = T)) : typeof n == 'boolean' && ((r = n), (n = T))),
3691 | n === T && t === T ? ((n = 0), (t = 1)) : ((n = Au(n)), t === T ? ((t = n), (n = 0)) : (t = Au(t))),
3692 | n > t)
3693 | ) {
3694 | var e = n;
3695 | (n = t), (t = e);
3696 | }
3697 | return r || n % 1 || t % 1
3698 | ? ((r = Ti()), Ci(n + r * (t - n + Cn('1e-' + ((r + '').length - 1))), t))
3699 | : ir(n, t);
3700 | }),
3701 | (An.reduce = function (n, t, r) {
3702 | var e = ff(n) ? l : j,
3703 | u = 3 > arguments.length;
3704 | return e(n, ye(t, 4), r, u, uo);
3705 | }),
3706 | (An.reduceRight = function (n, t, r) {
3707 | var e = ff(n) ? s : j,
3708 | u = 3 > arguments.length;
3709 | return e(n, ye(t, 4), r, u, io);
3710 | }),
3711 | (An.repeat = function (n, t, r) {
3712 | return (t = (r ? Oe(n, t, r) : t === T) ? 1 : Eu(t)), or(Iu(n), t);
3713 | }),
3714 | (An.replace = function () {
3715 | var n = arguments,
3716 | t = Iu(n[0]);
3717 | return 3 > n.length ? t : t.replace(n[1], n[2]);
3718 | }),
3719 | (An.result = function (n, t, r) {
3720 | t = Sr(t, n);
3721 | var e = -1,
3722 | u = t.length;
3723 | for (u || ((u = 1), (n = T)); ++e < u; ) {
3724 | var i = null == n ? T : n[Me(t[e])];
3725 | i === T && ((e = u), (i = r)), (n = _u(i) ? i.call(n) : i);
3726 | }
3727 | return n;
3728 | }),
3729 | (An.round = ec),
3730 | (An.runInContext = x),
3731 | (An.sample = function (n) {
3732 | return (ff(n) ? Qn : cr)(n);
3733 | }),
3734 | (An.size = function (n) {
3735 | if (null == n) return 0;
3736 | if (su(n)) return ju(n) ? D(n) : n.length;
3737 | var t = vo(n);
3738 | return '[object Map]' == t || '[object Set]' == t ? n.size : Vt(n).length;
3739 | }),
3740 | (An.snakeCase = Df),
3741 | (An.some = function (n, t, r) {
3742 | var e = ff(n) ? h : pr;
3743 | return r && Oe(n, t, r) && (t = T), e(n, ye(t, 3));
3744 | }),
3745 | (An.sortedIndex = function (n, t) {
3746 | return _r(n, t);
3747 | }),
3748 | (An.sortedIndexBy = function (n, t, r) {
3749 | return vr(n, t, ye(r, 2));
3750 | }),
3751 | (An.sortedIndexOf = function (n, t) {
3752 | var r = null == n ? 0 : n.length;
3753 | if (r) {
3754 | var e = _r(n, t);
3755 | if (e < r && lu(n[e], t)) return e;
3756 | }
3757 | return -1;
3758 | }),
3759 | (An.sortedLastIndex = function (n, t) {
3760 | return _r(n, t, true);
3761 | }),
3762 | (An.sortedLastIndexBy = function (n, t, r) {
3763 | return vr(n, t, ye(r, 2), true);
3764 | }),
3765 | (An.sortedLastIndexOf = function (n, t) {
3766 | if (null == n ? 0 : n.length) {
3767 | var r = _r(n, t, true) - 1;
3768 | if (lu(n[r], t)) return r;
3769 | }
3770 | return -1;
3771 | }),
3772 | (An.startCase = Mf),
3773 | (An.startsWith = function (n, t, r) {
3774 | return (n = Iu(n)), (r = null == r ? 0 : pt(Eu(r), 0, n.length)), (t = yr(t)), n.slice(r, r + t.length) == t;
3775 | }),
3776 | (An.subtract = uc),
3777 | (An.sum = function (n) {
3778 | return n && n.length ? m(n, $u) : 0;
3779 | }),
3780 | (An.sumBy = function (n, t) {
3781 | return n && n.length ? m(n, ye(t, 2)) : 0;
3782 | }),
3783 | (An.template = function (n, t, r) {
3784 | var e = An.templateSettings;
3785 | r && Oe(n, t, r) && (t = T), (n = Iu(n)), (t = bf({}, t, e, ce)), (r = bf({}, t.imports, e.imports, ce));
3786 | var u,
3787 | i,
3788 | o = Wu(r),
3789 | f = S(r, o),
3790 | c = 0;
3791 | r = t.interpolate || jn;
3792 | var a = "__p+='";
3793 | r = Xu(
3794 | (t.escape || jn).source +
3795 | '|' +
3796 | r.source +
3797 | '|' +
3798 | (r === Q ? pn : jn).source +
3799 | '|' +
3800 | (t.evaluate || jn).source +
3801 | '|$',
3802 | 'g'
3803 | );
3804 | var l = oi.call(t, 'sourceURL') ? '//# sourceURL=' + (t.sourceURL + '').replace(/[\r\n]/g, ' ') + '\n' : '';
3805 | if (
3806 | (n.replace(r, function (t, r, e, o, f, l) {
3807 | return (
3808 | e || (e = o),
3809 | (a += n.slice(c, l).replace(wn, z)),
3810 | r && ((u = true), (a += "'+__e(" + r + ")+'")),
3811 | f && ((i = true), (a += "';" + f + ";\n__p+='")),
3812 | e && (a += "'+((__t=(" + e + "))==null?'':__t)+'"),
3813 | (c = l + t.length),
3814 | t
3815 | );
3816 | }),
3817 | (a += "';"),
3818 | (t = oi.call(t, 'variable') && t.variable) || (a = 'with(obj){' + a + '}'),
3819 | (a = (i ? a.replace(P, '') : a).replace(Z, '$1').replace(q, '$1;')),
3820 | (a =
3821 | 'function(' +
3822 | (t || 'obj') +
3823 | '){' +
3824 | (t ? '' : 'obj||(obj={});') +
3825 | "var __t,__p=''" +
3826 | (u ? ',__e=_.escape' : '') +
3827 | (i ? ",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}" : ';') +
3828 | a +
3829 | 'return __p}'),
3830 | (t = Ff(function () {
3831 | return Ju(o, l + 'return ' + a).apply(T, f);
3832 | })),
3833 | (t.source = a),
3834 | pu(t))
3835 | )
3836 | throw t;
3837 | return t;
3838 | }),
3839 | (An.times = function (n, t) {
3840 | if (((n = Eu(n)), 1 > n || 9007199254740991 < n)) return [];
3841 | var r = 4294967295,
3842 | e = Ci(n, 4294967295);
3843 | for (t = ye(t), n -= 4294967295, e = A(e, t); ++r < n; ) t(r);
3844 | return e;
3845 | }),
3846 | (An.toFinite = Au),
3847 | (An.toInteger = Eu),
3848 | (An.toLength = ku),
3849 | (An.toLower = function (n) {
3850 | return Iu(n).toLowerCase();
3851 | }),
3852 | (An.toNumber = Su),
3853 | (An.toSafeInteger = function (n) {
3854 | return n ? pt(Eu(n), -9007199254740991, 9007199254740991) : 0 === n ? n : 0;
3855 | }),
3856 | (An.toString = Iu),
3857 | (An.toUpper = function (n) {
3858 | return Iu(n).toUpperCase();
3859 | }),
3860 | (An.trim = function (n, t, r) {
3861 | return (n = Iu(n)) && (r || t === T)
3862 | ? n.replace(un, '')
3863 | : n && (t = yr(t))
3864 | ? ((n = M(n)), (r = M(t)), (t = I(n, r)), (r = R(n, r) + 1), Or(n, t, r).join(''))
3865 | : n;
3866 | }),
3867 | (An.trimEnd = function (n, t, r) {
3868 | return (n = Iu(n)) && (r || t === T)
3869 | ? n.replace(fn, '')
3870 | : n && (t = yr(t))
3871 | ? ((n = M(n)), (t = R(n, M(t)) + 1), Or(n, 0, t).join(''))
3872 | : n;
3873 | }),
3874 | (An.trimStart = function (n, t, r) {
3875 | return (n = Iu(n)) && (r || t === T)
3876 | ? n.replace(on, '')
3877 | : n && (t = yr(t))
3878 | ? ((n = M(n)), (t = I(n, M(t))), Or(n, t).join(''))
3879 | : n;
3880 | }),
3881 | (An.truncate = function (n, t) {
3882 | var r = 30,
3883 | e = '...';
3884 | if (du(t))
3885 | var u = 'separator' in t ? t.separator : u,
3886 | r = 'length' in t ? Eu(t.length) : r,
3887 | e = 'omission' in t ? yr(t.omission) : e;
3888 | n = Iu(n);
3889 | var i = n.length;
3890 | if (Rn.test(n))
3891 | var o = M(n),
3892 | i = o.length;
3893 | if (r >= i) return n;
3894 | if (((i = r - D(e)), 1 > i)) return e;
3895 | if (((r = o ? Or(o, 0, i).join('') : n.slice(0, i)), u === T)) return r + e;
3896 | if ((o && (i += r.length - i), hf(u))) {
3897 | if (n.slice(i).search(u)) {
3898 | var f = r;
3899 | for (u.global || (u = Xu(u.source, Iu(_n.exec(u)) + 'g')), u.lastIndex = 0; (o = u.exec(f)); )
3900 | var c = o.index;
3901 | r = r.slice(0, c === T ? i : c);
3902 | }
3903 | } else n.indexOf(yr(u), i) != i && ((u = r.lastIndexOf(u)), -1 < u && (r = r.slice(0, u)));
3904 | return r + e;
3905 | }),
3906 | (An.unescape = function (n) {
3907 | return (n = Iu(n)) && G.test(n) ? n.replace(V, tt) : n;
3908 | }),
3909 | (An.uniqueId = function (n) {
3910 | var t = ++fi;
3911 | return Iu(n) + t;
3912 | }),
3913 | (An.upperCase = Tf),
3914 | (An.upperFirst = $f),
3915 | (An.each = nu),
3916 | (An.eachRight = tu),
3917 | (An.first = qe),
3918 | Nu(
3919 | An,
3920 | (function () {
3921 | var n = {};
3922 | return (
3923 | mt(An, function (t, r) {
3924 | oi.call(An.prototype, r) || (n[r] = t);
3925 | }),
3926 | n
3927 | );
3928 | })(),
3929 | { chain: false }
3930 | ),
3931 | (An.VERSION = '4.17.15'),
3932 | r('bind bindKey curry curryRight partial partialRight'.split(' '), function (n) {
3933 | An[n].placeholder = An;
3934 | }),
3935 | r(['drop', 'take'], function (n, t) {
3936 | (Un.prototype[n] = function (r) {
3937 | r = r === T ? 1 : Ui(Eu(r), 0);
3938 | var e = this.__filtered__ && !t ? new Un(this) : this.clone();
3939 | return (
3940 | e.__filtered__
3941 | ? (e.__takeCount__ = Ci(r, e.__takeCount__))
3942 | : e.__views__.push({ size: Ci(r, 4294967295), type: n + (0 > e.__dir__ ? 'Right' : '') }),
3943 | e
3944 | );
3945 | }),
3946 | (Un.prototype[n + 'Right'] = function (t) {
3947 | return this.reverse()[n](t).reverse();
3948 | });
3949 | }),
3950 | r(['filter', 'map', 'takeWhile'], function (n, t) {
3951 | var r = t + 1,
3952 | e = 1 == r || 3 == r;
3953 | Un.prototype[n] = function (n) {
3954 | var t = this.clone();
3955 | return t.__iteratees__.push({ iteratee: ye(n, 3), type: r }), (t.__filtered__ = t.__filtered__ || e), t;
3956 | };
3957 | }),
3958 | r(['head', 'last'], function (n, t) {
3959 | var r = 'take' + (t ? 'Right' : '');
3960 | Un.prototype[n] = function () {
3961 | return this[r](1).value()[0];
3962 | };
3963 | }),
3964 | r(['initial', 'tail'], function (n, t) {
3965 | var r = 'drop' + (t ? '' : 'Right');
3966 | Un.prototype[n] = function () {
3967 | return this.__filtered__ ? new Un(this) : this[r](1);
3968 | };
3969 | }),
3970 | (Un.prototype.compact = function () {
3971 | return this.filter($u);
3972 | }),
3973 | (Un.prototype.find = function (n) {
3974 | return this.filter(n).head();
3975 | }),
3976 | (Un.prototype.findLast = function (n) {
3977 | return this.reverse().find(n);
3978 | }),
3979 | (Un.prototype.invokeMap = fr(function (n, t) {
3980 | return typeof n == 'function'
3981 | ? new Un(this)
3982 | : this.map(function (r) {
3983 | return Lt(r, n, t);
3984 | });
3985 | })),
3986 | (Un.prototype.reject = function (n) {
3987 | return this.filter(au(ye(n)));
3988 | }),
3989 | (Un.prototype.slice = function (n, t) {
3990 | n = Eu(n);
3991 | var r = this;
3992 | return r.__filtered__ && (0 < n || 0 > t)
3993 | ? new Un(r)
3994 | : (0 > n ? (r = r.takeRight(-n)) : n && (r = r.drop(n)),
3995 | t !== T && ((t = Eu(t)), (r = 0 > t ? r.dropRight(-t) : r.take(t - n))),
3996 | r);
3997 | }),
3998 | (Un.prototype.takeRightWhile = function (n) {
3999 | return this.reverse().takeWhile(n).reverse();
4000 | }),
4001 | (Un.prototype.toArray = function () {
4002 | return this.take(4294967295);
4003 | }),
4004 | mt(Un.prototype, function (n, t) {
4005 | var r = /^(?:filter|find|map|reject)|While$/.test(t),
4006 | e = /^(?:head|last)$/.test(t),
4007 | u = An[e ? 'take' + ('last' == t ? 'Right' : '') : t],
4008 | i = e || /^find/.test(t);
4009 | u &&
4010 | (An.prototype[t] = function () {
4011 | function t(n) {
4012 | return (n = u.apply(An, a([n], f))), e && h ? n[0] : n;
4013 | }
4014 | var o = this.__wrapped__,
4015 | f = e ? [1] : arguments,
4016 | c = o instanceof Un,
4017 | l = f[0],
4018 | s = c || ff(o);
4019 | s && r && typeof l == 'function' && 1 != l.length && (c = s = false);
4020 | var h = this.__chain__,
4021 | p = !!this.__actions__.length,
4022 | l = i && !h,
4023 | c = c && !p;
4024 | return !i && s
4025 | ? ((o = c ? o : new Un(this)),
4026 | (o = n.apply(o, f)),
4027 | o.__actions__.push({ func: Qe, args: [t], thisArg: T }),
4028 | new On(o, h))
4029 | : l && c
4030 | ? n.apply(this, f)
4031 | : ((o = this.thru(t)), l ? (e ? o.value()[0] : o.value()) : o);
4032 | });
4033 | }),
4034 | r('pop push shift sort splice unshift'.split(' '), function (n) {
4035 | var t = ri[n],
4036 | r = /^(?:push|sort|unshift)$/.test(n) ? 'tap' : 'thru',
4037 | e = /^(?:pop|shift)$/.test(n);
4038 | An.prototype[n] = function () {
4039 | var n = arguments;
4040 | if (e && !this.__chain__) {
4041 | var u = this.value();
4042 | return t.apply(ff(u) ? u : [], n);
4043 | }
4044 | return this[r](function (r) {
4045 | return t.apply(ff(r) ? r : [], n);
4046 | });
4047 | };
4048 | }),
4049 | mt(Un.prototype, function (n, t) {
4050 | var r = An[t];
4051 | if (r) {
4052 | var e = r.name + '';
4053 | oi.call(Gi, e) || (Gi[e] = []), Gi[e].push({ name: t, func: r });
4054 | }
4055 | }),
4056 | (Gi[Jr(T, 2).name] = [{ name: 'wrapper', func: T }]),
4057 | (Un.prototype.clone = function () {
4058 | var n = new Un(this.__wrapped__);
4059 | return (
4060 | (n.__actions__ = Ur(this.__actions__)),
4061 | (n.__dir__ = this.__dir__),
4062 | (n.__filtered__ = this.__filtered__),
4063 | (n.__iteratees__ = Ur(this.__iteratees__)),
4064 | (n.__takeCount__ = this.__takeCount__),
4065 | (n.__views__ = Ur(this.__views__)),
4066 | n
4067 | );
4068 | }),
4069 | (Un.prototype.reverse = function () {
4070 | if (this.__filtered__) {
4071 | var n = new Un(this);
4072 | (n.__dir__ = -1), (n.__filtered__ = true);
4073 | } else (n = this.clone()), (n.__dir__ *= -1);
4074 | return n;
4075 | }),
4076 | (Un.prototype.value = function () {
4077 | var n,
4078 | t = this.__wrapped__.value(),
4079 | r = this.__dir__,
4080 | e = ff(t),
4081 | u = 0 > r,
4082 | i = e ? t.length : 0;
4083 | n = i;
4084 | for (var o = this.__views__, f = 0, c = -1, a = o.length; ++c < a; ) {
4085 | var l = o[c],
4086 | s = l.size;
4087 | switch (l.type) {
4088 | case 'drop':
4089 | f += s;
4090 | break;
4091 | case 'dropRight':
4092 | n -= s;
4093 | break;
4094 | case 'take':
4095 | n = Ci(n, f + s);
4096 | break;
4097 | case 'takeRight':
4098 | f = Ui(f, n - s);
4099 | }
4100 | }
4101 | if (
4102 | ((n = { start: f, end: n }),
4103 | (o = n.start),
4104 | (f = n.end),
4105 | (n = f - o),
4106 | (o = u ? f : o - 1),
4107 | (f = this.__iteratees__),
4108 | (c = f.length),
4109 | (a = 0),
4110 | (l = Ci(n, this.__takeCount__)),
4111 | !e || (!u && i == n && l == n))
4112 | )
4113 | return wr(t, this.__actions__);
4114 | e = [];
4115 | n: for (; n-- && a < l; ) {
4116 | for (o += r, u = -1, i = t[o]; ++u < c; ) {
4117 | var h = f[u],
4118 | s = h.type,
4119 | h = (0, h.iteratee)(i);
4120 | if (2 == s) i = h;
4121 | else if (!h) {
4122 | if (1 == s) continue n;
4123 | break n;
4124 | }
4125 | }
4126 | e[a++] = i;
4127 | }
4128 | return e;
4129 | }),
4130 | (An.prototype.at = To),
4131 | (An.prototype.chain = function () {
4132 | return Ye(this);
4133 | }),
4134 | (An.prototype.commit = function () {
4135 | return new On(this.value(), this.__chain__);
4136 | }),
4137 | (An.prototype.next = function () {
4138 | this.__values__ === T && (this.__values__ = mu(this.value()));
4139 | var n = this.__index__ >= this.__values__.length;
4140 | return { done: n, value: n ? T : this.__values__[this.__index__++] };
4141 | }),
4142 | (An.prototype.plant = function (n) {
4143 | for (var t, r = this; r instanceof En; ) {
4144 | var e = Fe(r);
4145 | (e.__index__ = 0), (e.__values__ = T), t ? (u.__wrapped__ = e) : (t = e);
4146 | var u = e,
4147 | r = r.__wrapped__;
4148 | }
4149 | return (u.__wrapped__ = n), t;
4150 | }),
4151 | (An.prototype.reverse = function () {
4152 | var n = this.__wrapped__;
4153 | return n instanceof Un
4154 | ? (this.__actions__.length && (n = new Un(this)),
4155 | (n = n.reverse()),
4156 | n.__actions__.push({ func: Qe, args: [Ge], thisArg: T }),
4157 | new On(n, this.__chain__))
4158 | : this.thru(Ge);
4159 | }),
4160 | (An.prototype.toJSON =
4161 | An.prototype.valueOf =
4162 | An.prototype.value =
4163 | function () {
4164 | return wr(this.__wrapped__, this.__actions__);
4165 | }),
4166 | (An.prototype.first = An.prototype.head),
4167 | wi && (An.prototype[wi] = Xe),
4168 | An
4169 | );
4170 | })();
4171 | typeof define == 'function' && typeof define.amd == 'object' && define.amd
4172 | ? (($n._ = rt),
4173 | define(function () {
4174 | return rt;
4175 | }))
4176 | : Nn
4177 | ? (((Nn.exports = rt)._ = rt), (Fn._ = rt))
4178 | : ($n._ = rt);
4179 | }.call(this));
4180 |
--------------------------------------------------------------------------------
/utils/request.js:
--------------------------------------------------------------------------------
1 | import { logout } from '~/utils/util';
2 | import { version } from '~/config/index';
3 |
4 | /**
5 | * 按照下述例子继续封装项目中需要的上传功能等等,封装两种 一种用于携带用户信息,一种用于原生
6 | */
7 |
8 | /**
9 | * @method _request 封装业务请求
10 | * @param {*} { method, url, data }
11 | */
12 | const _request = async ({ method, url, data }) => {
13 | const { globalData } = getApp();
14 | const { isConnected } = globalData;
15 | const header = {
16 | version,
17 | };
18 | return new Promise((resolve, reject) => {
19 | if (isConnected) {
20 | // 微信原生请求
21 | wx.request({
22 | url,
23 | data,
24 | method,
25 | header,
26 | success: async (value) => {
27 | const { data, statusCode } = value;
28 | if (statusCode === 200) {
29 | const { code, msg } = data;
30 | switch (code) {
31 | // 退出登录
32 | case 2128:
33 | logout();
34 | reject(msg);
35 | break;
36 | default:
37 | resolve(data);
38 | break;
39 | }
40 | } else {
41 | reject(`服务请求错误,状态码:${statusCode}`);
42 | }
43 | },
44 | fail(reason) {
45 | reject(reason);
46 | },
47 | });
48 | } else {
49 | reject('无网状态');
50 | }
51 | });
52 | };
53 |
54 | /**
55 | * @method _nativeRequest 封装原生请求
56 | * @param {*} { method, url, data }
57 | */
58 | const _nativeRequest = async ({ method, url, data }) => {
59 | const { globalData } = getApp();
60 | const { isConnected } = globalData;
61 | return new Promise((resolve, reject) => {
62 | if (isConnected) {
63 | // 微信原生请求
64 | wx.request({
65 | url,
66 | data,
67 | method,
68 | success: async (value) => {
69 | const { data, statusCode } = value;
70 | if (statusCode === 200) {
71 | resolve(data);
72 | } else {
73 | reject(`服务请求错误,状态码:${statusCode}`);
74 | }
75 | },
76 | fail(reason) {
77 | reject(reason);
78 | },
79 | });
80 | } else {
81 | reject('无网状态');
82 | }
83 | });
84 | };
85 |
86 | /**
87 | * @method post 业务post请求
88 | * @param {*} { url, data }
89 | */
90 | export const post = ({ url, data }) => _request({ method: 'POST', url, data });
91 |
92 | /**
93 | * @method nativePost 原生post请求
94 | * @param {*} { url, data }
95 | */
96 | export const nativePost = ({ url, data }) => _nativeRequest({ method: 'POST', url, data });
97 |
98 | /**
99 | * @method nativePost 原生get请求
100 | * @param {*} { url, data }
101 | */
102 | export const nativeGet = ({ url, data }) => _nativeRequest({ method: 'GET', url, data });
103 |
--------------------------------------------------------------------------------
/utils/router.js:
--------------------------------------------------------------------------------
1 | export const Home = {
2 | path: '/pages/home/index',
3 | name: '首页',
4 | };
5 |
--------------------------------------------------------------------------------
/utils/util.js:
--------------------------------------------------------------------------------
1 | import { Home } from '~/utils/router';
2 |
3 | /**
4 | * @method getItemSync 缓存读取
5 | * @param {*} key
6 | */
7 | export const getItemSync = (key) => {
8 | try {
9 | return wx.getStorageSync(key);
10 | } catch (err) {
11 | console.error('wx.getStorageSync(key)', err);
12 | }
13 | };
14 |
15 | /**
16 | * @method setItemSync 缓存存储
17 | * @param {*} key
18 | * @param {*} value
19 | */
20 | export const setItemSync = (key, value) => {
21 | try {
22 | wx.setStorageSync(key, value);
23 | } catch (err) {
24 | console.error('wx.setStorageSync(key, value)', err);
25 | }
26 | };
27 |
28 | /**
29 | * @method deleteItemSync 缓存删除
30 | * @param {*} key
31 | */
32 | export const deleteItemSync = (key) => {
33 | try {
34 | return wx.removeStorageSync(key);
35 | } catch (err) {
36 | console.error('wx.removeStorageSync(key)', err);
37 | }
38 | };
39 |
40 | /**
41 | * @method navigateTo 封装navigateTo请求
42 | * @param {*} { url, events }
43 | */
44 | export const navigateTo = ({ url, events = {} }) => {
45 | return new Promise((resolve) => {
46 | const { globalData } = getApp();
47 | const { isConnected } = globalData;
48 | // 有网络
49 | if (isConnected) {
50 | wx.navigateTo({
51 | url,
52 | events,
53 | success: resolve,
54 | fail: () => {
55 | redirectTo({ url, events });
56 | },
57 | });
58 |
59 | // 无网络
60 | } else {
61 | wx.showToast({
62 | icon:'none',
63 | title: '似乎已经断开了与互联网的连接',
64 | })
65 | }
66 | });
67 | };
68 |
69 | /**
70 | * @method redirectTo 封装redirectTo请求
71 | * @param {*} { url, events }
72 | */
73 | export const redirectTo = ({ url, events = {} }) => {
74 | return new Promise((resolve, reject) => {
75 | const { globalData } = getApp();
76 | const { isConnected } = globalData;
77 | // 有网络
78 | if (isConnected) {
79 | wx.redirectTo({
80 | url,
81 | events,
82 | success: resolve,
83 | fail: reject,
84 | });
85 |
86 | // 无网络
87 | } else {
88 | wx.showToast({
89 | icon:'none',
90 | title: '似乎已经断开了与互联网的连接',
91 | })
92 | }
93 | });
94 | };
95 |
96 | /**
97 | * @method navigateBack 封装navigateBack请求
98 | * @param {*} delta
99 | */
100 | export const navigateBack = (delta = 1) => {
101 | return new Promise((resolve, reject) => {
102 | const { globalData } = getApp();
103 | const { isConnected } = globalData;
104 | // 有网络
105 | if (isConnected) {
106 | wx.navigateBack({
107 | delta,
108 | success: resolve,
109 | fail: reject,
110 | });
111 |
112 | // 无网络
113 | } else {
114 | wx.showToast({
115 | icon:'none',
116 | title: '似乎已经断开了与互联网的连接',
117 | })
118 | }
119 | });
120 | };
121 |
122 | /**
123 | * @method switchTab 封装switchTab请求
124 | * @param {*} { url }
125 | */
126 | export const switchTab = ({ url }) => {
127 | return new Promise((resolve, reject) => {
128 | const { globalData } = getApp();
129 | const { isConnected } = globalData;
130 | // 有网络
131 | if (isConnected) {
132 | wx.switchTab({
133 | url,
134 | success: resolve,
135 | fail: reject,
136 | });
137 |
138 | // 无网络
139 | } else {
140 | wx.showToast({
141 | icon:'none',
142 | title: '似乎已经断开了与互联网的连接',
143 | })
144 | }
145 | });
146 | };
147 |
148 | /**
149 | * @method reLaunch 封装reLaunch请求
150 | * @param {*} { url }
151 | */
152 | export const reLaunch = ({ url }) => {
153 | return new Promise((resolve, reject) => {
154 | const { globalData } = getApp();
155 | const { isConnected } = globalData;
156 | // 有网络
157 | if (isConnected) {
158 | wx.reLaunch({
159 | url,
160 | success: resolve,
161 | fail: reject,
162 | });
163 |
164 | // 无网络
165 | } else {
166 | wx.showToast({
167 | icon:'none',
168 | title: '似乎已经断开了与互联网的连接',
169 | })
170 | }
171 | });
172 | };
173 |
174 | /**
175 | * @method getCurrentPageInfo 获取当前页面栈中指定路径的页面信息
176 | * @param {*} path app.json中定义的完整路径
177 | */
178 | export const getCurrentPageInfo = (path) => {
179 | // 存在指定路径, 返回指定路径页面详情
180 | if (path) {
181 | // 反转数组,返回最后一次出现路由
182 | return getCurrentPages()
183 | .reverse()
184 | .find((item) => {
185 | return `/${item.route}` === path;
186 | });
187 |
188 | // 反转数组,返回当前页面详情
189 | } else {
190 | return getCurrentPages().reverse()[0];
191 | }
192 | };
193 |
194 | /**
195 | * @method getCurrentPageIndex 获取当前页面栈中指定路径的下标
196 | * @param {*} path app.json中定义的完整路径
197 | */
198 | export const getCurrentPageIndex = (path) => {
199 | return getCurrentPages()
200 | .reverse()
201 | .findIndex((item) => {
202 | return `/${item.route}` === path;
203 | });
204 | };
205 |
206 | /**
207 | * @method checkNetwork 检查网络
208 | */
209 | export const checkNetwork = () => {
210 | return new Promise((resolve, reject) => {
211 | const { globalData } = getApp();
212 | const { isConnected } = globalData;
213 | if(isConnected){
214 | resolve()
215 | }else{
216 | wx.showToast({
217 | icon:'none',
218 | title: '似乎已经断开了与互联网的连接',
219 | })
220 | reject('似乎已经断开了与互联网的连接');
221 | }
222 | });
223 | };
224 |
225 | /**
226 | * @method getNetworkType 获取网络类型
227 | */
228 | export const getNetworkType = () => {
229 | return new Promise((resolve) => {
230 | // 获取网络类型
231 | wx.getNetworkType({
232 | success: (value) => {
233 | const { networkType } = value;
234 | resolve(networkType);
235 | },
236 | });
237 | });
238 | };
239 |
240 | /**
241 | * @method logout 退出登录
242 | */
243 | export const logout = () => {
244 | const { globalData } = getApp();
245 | globalData.userInfo = null;
246 | deleteItemSync('userInfo');
247 | reLaunch({ url: Home.path });
248 | };
249 |
250 | /**
251 | * @method shareImageFormat 图片格式处理
252 | * @param {*} params
253 | * @returns
254 | */
255 | export const shareImageFormat = (params) => {
256 | const { systemInfo } = getApp();
257 | const { system } = systemInfo;
258 | const systemDetail = system.split(' ');
259 | const type = systemDetail[0];
260 | const version = systemDetail[1];
261 | // ios系统14版本以下,小程序分享的图片不支持webp格式,进行转换
262 | if (type.toLowerCase() === 'ios' && parseInt(version) <= 14) {
263 | return params.replace('format,webp', 'format,jpg');
264 | } else {
265 | return params;
266 | }
267 | };
268 |
--------------------------------------------------------------------------------
/utils/wxs.wxs:
--------------------------------------------------------------------------------
1 | /**
2 | * @method addRpxUnit 添加单位
3 | * @param value
4 | */
5 | function addRpxUnit(value) {
6 | if (value == null) {
7 | return undefined;
8 | }
9 | return value.constructor === 'Number' ? value * 2 + 'rpx' : value;
10 | }
11 |
12 | module.exports = {
13 | addRpxUnit: addRpxUnit,
14 | };
15 |
--------------------------------------------------------------------------------