From 39fedaac16354fa2a8ef749dde2ffb1a70fdd34e Mon Sep 17 00:00:00 2001 From: m1582 <15822909392@163.com> Date: Fri, 11 Jul 2025 16:54:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 + .idea/inspectionProfiles/Project_Default.xml | 21 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/vcs.xml | 6 + .idea/web_ylsa.iml | 10 + .idea/workspace.xml | 417 +++ api_file/Dockerfile | 15 + api_file/config/config.dev.yaml | 11 + api_file/config/config.go | 31 + api_file/config/config.prd.yaml | 11 + api_file/config/type.d.go | 21 + api_file/database/database.go | 48 + api_file/go.mod | 65 + api_file/go.sum | 207 ++ api_file/jwtSet/jwt.go | 78 + api_file/main.go | 81 + api_file/model/backgammon.go | 12 + api_file/model/balance.go | 19 + api_file/model/chess.go | 28 + api_file/model/crontab.go | 9 + api_file/model/keys.go | 20 + api_file/model/logs.go | 31 + api_file/model/menus.go | 14 + api_file/model/note.go | 9 + api_file/model/sudoku.go | 18 + api_file/model/sysError.go | 14 + api_file/model/sysSettings.go | 17 + api_file/model/sysinfo.go | 55 + api_file/model/user.go | 38 + api_file/model/utils.go | 10 + api_file/model/weather.go | 11 + api_file/service/api/file.go | 319 ++ api_file/service/api/fileExport.go | 17 + api_file/service/api/init.go | 13 + api_file/service/api/type.d.go | 172 ++ api_file/service/init.go | 11 + api_file/utils/sysSettings.go | 17 + api_file/utils/type.d.go | 24 + api_file/utils/user.go | 73 + api_file/utils/utils.go | 235 ++ api_iris/Dockerfile | 15 + api_iris/config/config.dev.yaml | 15 + api_iris/config/config.go | 31 + api_iris/config/config.prd.yaml | 15 + api_iris/config/type.d.go | 22 + api_iris/crontab/init.go | 40 + api_iris/crontab/nginxLog.go | 70 + api_iris/crontab/type.d.go | 5 + api_iris/database/database.go | 85 + api_iris/go.mod | 77 + api_iris/go.sum | 234 ++ api_iris/jwtSet/jwt.go | 78 + api_iris/main.go | 119 + api_iris/model/backgammon.go | 12 + api_iris/model/balance.go | 19 + api_iris/model/chess.go | 28 + api_iris/model/crontab.go | 9 + api_iris/model/keys.go | 20 + api_iris/model/logs.go | 31 + api_iris/model/menus.go | 14 + api_iris/model/note.go | 9 + api_iris/model/sudoku.go | 18 + api_iris/model/sysError.go | 14 + api_iris/model/sysSettings.go | 17 + api_iris/model/sysinfo.go | 55 + api_iris/model/user.go | 38 + api_iris/model/utils.go | 10 + api_iris/model/weather.go | 11 + api_iris/service/admin/init.go | 25 + api_iris/service/admin/logs.go | 199 ++ api_iris/service/admin/logsExport.go | 85 + api_iris/service/admin/menus.go | 103 + api_iris/service/admin/menusExport.go | 13 + api_iris/service/admin/sysSettings.go | 106 + api_iris/service/admin/sysSettingsExport.go | 13 + api_iris/service/admin/type.d.go | 27 + api_iris/service/admin/user.go | 66 + api_iris/service/admin/userExport.go | 12 + api_iris/service/api/backgammon.go | 313 ++ api_iris/service/api/backgammonExport.go | 15 + api_iris/service/api/chess.go | 614 ++++ api_iris/service/api/chessExport.go | 19 + api_iris/service/api/file.go | 319 ++ api_iris/service/api/fileExport.go | 18 + api_iris/service/api/init.go | 13 + api_iris/service/api/menus.go | 55 + api_iris/service/api/menusExport.go | 10 + api_iris/service/api/notes.go | 210 ++ api_iris/service/api/notesExport.go | 16 + api_iris/service/api/public.go | 88 + api_iris/service/api/publicExport.go | 10 + api_iris/service/api/sudoku.go | 170 ++ api_iris/service/api/sudokuExport.go | 10 + api_iris/service/api/sysSettings.go | 59 + api_iris/service/api/sysSettingsExport.go | 8 + api_iris/service/api/sysinfo.go | 96 + api_iris/service/api/sysinfoExport.go | 12 + api_iris/service/api/type.d.go | 178 ++ api_iris/service/api/user.go | 365 +++ api_iris/service/api/userExport.go | 46 + api_iris/service/api/weather.go | 171 ++ api_iris/service/api/weatherExport.go | 12 + api_iris/service/api/yeb.go | 206 ++ api_iris/service/api/yebExport.go | 14 + api_iris/service/api/yebLog.go | 220 ++ api_iris/service/api/yebLogExport.go | 11 + api_iris/service/init.go | 38 + api_iris/service/test/test.go | 24 + api_iris/service/ws/websocket.go | 71 + api_iris/utils/aes.go | 70 + api_iris/utils/holidays.go | 55 + api_iris/utils/menus.go | 43 + api_iris/utils/rsa.go | 127 + api_iris/utils/sudoku.go | 34 + api_iris/utils/sysSettings.go | 38 + api_iris/utils/type.d.go | 45 + api_iris/utils/user.go | 68 + api_iris/utils/utils.go | 255 ++ build_file/dev/Dockerfile | 11 + build_file/dev/build.py | 54 + build_file/dev/default.conf | 86 + build_file/dev/docker-compose.yml | 60 + build_file/dev/move-o.sh | 20 + build_file/dev/move.sh | 20 + build_file/dev/nginx.conf | 46 + build_file/dev/update-o.sh | 34 + build_file/dev/update.sh | 27 + build_file/prd/Dockerfile | 12 + build_file/prd/build.py | 66 + build_file/prd/default.conf | 96 + build_file/prd/docker-compose.yml | 89 + build_file/prd/git-ylsa0.cn.key | 27 + build_file/prd/git-ylsa0.cn_bundle.crt | 72 + build_file/prd/nginx.conf | 46 + build_file/prd/update.sh | 27 + web_vue/.vscode/extensions.json | 3 + web_vue/README.md | 0 web_vue/index.html | 13 + web_vue/package-lock.json | 2661 +++++++++++++++++ web_vue/package.json | 36 + web_vue/public/docker_icon.svg | 6 + web_vue/public/favicon.ico | Bin 0 -> 15406 bytes web_vue/public/nginx_icon.svg | 1 + web_vue/public/vite.svg | 1 + web_vue/src/App.vue | 69 + web_vue/src/assets/css/normalize.css | 350 +++ web_vue/src/assets/css/style.css | 44 + web_vue/src/assets/image/avatar.png | Bin 0 -> 4097 bytes web_vue/src/assets/image/background.jpg | Bin 0 -> 33821 bytes web_vue/src/assets/image/background.webp | Bin 0 -> 662490 bytes web_vue/src/assets/image/black.png | Bin 0 -> 3040 bytes web_vue/src/assets/image/chess.webp | Bin 0 -> 145506 bytes web_vue/src/assets/image/logo.png | Bin 0 -> 10532 bytes web_vue/src/assets/image/white.png | Bin 0 -> 28161 bytes web_vue/src/components/charts/yl-line.vue | 102 + web_vue/src/components/yl-action-div.vue | 14 + web_vue/src/components/yl-hls-player.vue | 110 + web_vue/src/components/yl-icon-selector.vue | 83 + web_vue/src/components/yl-layout/header.vue | 140 + web_vue/src/components/yl-layout/layout.vue | 44 + web_vue/src/components/yl-layout/menu.vue | 53 + .../src/components/yl-layout/yl-userinfo.vue | 128 + web_vue/src/main.ts | 24 + .../src/pages/account-bill/bill-component.vue | 86 + web_vue/src/pages/account-bill/index.vue | 20 + web_vue/src/pages/account-bill/month.vue | 32 + web_vue/src/pages/account/index.vue | 262 ++ web_vue/src/pages/account/yl-account-sz.vue | 87 + web_vue/src/pages/error/index.vue | 13 + web_vue/src/pages/files/index.vue | 231 ++ web_vue/src/pages/files/store.ts | 5 + web_vue/src/pages/files/yl-video.vue | 37 + .../src/pages/games/yl-backgammon-room.vue | 152 + web_vue/src/pages/games/yl-backgammon.vue | 68 + web_vue/src/pages/games/yl-chess-room.vue | 285 ++ web_vue/src/pages/games/yl-chess.vue | 73 + web_vue/src/pages/home/index.vue | 70 + web_vue/src/pages/login/index.vue | 49 + web_vue/src/pages/login/login-data.vue | 67 + web_vue/src/pages/login/login.vue | 134 + web_vue/src/pages/login/register.vue | 107 + web_vue/src/pages/login/reset-pwd.vue | 190 ++ web_vue/src/pages/notes/store.ts | 45 + web_vue/src/pages/notes/yl-note-detail.vue | 134 + web_vue/src/pages/notes/yl-note.vue | 102 + web_vue/src/pages/sys-info/yl-cpu-chart.vue | 22 + web_vue/src/pages/sys-info/yl-disk-chart.vue | 22 + web_vue/src/pages/sys-info/yl-mem-chart.vue | 22 + web_vue/src/pages/sys-info/yl-net-chart.vue | 25 + web_vue/src/pages/sys-info/yl-sys-info.vue | 122 + web_vue/src/pages/sys-log/store.ts | 45 + web_vue/src/pages/sys-log/yl-docker-log.vue | 117 + .../src/pages/sys-log/yl-nginx-log-detail.vue | 107 + web_vue/src/pages/sys-log/yl-nginx-log.vue | 38 + web_vue/src/pages/sys-log/yl-sys-log.vue | 91 + web_vue/src/pages/sys-menu/index.vue | 214 ++ web_vue/src/pages/sys-menu/menu-edit.vue | 255 ++ .../pages/sys-settings/yl-sys-settings.vue | 127 + web_vue/src/pages/sys-user/yl-sys-user.vue | 116 + web_vue/src/requests/request.ts | 53 + web_vue/src/router/router.ts | 50 + web_vue/src/store/store.ts | 43 + web_vue/src/type.d.ts | 96 + web_vue/src/utils/cookie.ts | 13 + web_vue/src/utils/mebu.vue | 73 + web_vue/src/utils/menu.ts | 66 + web_vue/src/utils/mouse.ts | 22 + web_vue/src/utils/utils.ts | 58 + web_vue/src/vite-env.d.ts | 13 + web_vue/tsconfig.json | 30 + web_vue/tsconfig.node.json | 11 + web_vue/vite.config.ts | 38 + 213 files changed, 16944 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/web_ylsa.iml create mode 100644 .idea/workspace.xml create mode 100644 api_file/Dockerfile create mode 100644 api_file/config/config.dev.yaml create mode 100644 api_file/config/config.go create mode 100644 api_file/config/config.prd.yaml create mode 100644 api_file/config/type.d.go create mode 100644 api_file/database/database.go create mode 100644 api_file/go.mod create mode 100644 api_file/go.sum create mode 100644 api_file/jwtSet/jwt.go create mode 100644 api_file/main.go create mode 100644 api_file/model/backgammon.go create mode 100644 api_file/model/balance.go create mode 100644 api_file/model/chess.go create mode 100644 api_file/model/crontab.go create mode 100644 api_file/model/keys.go create mode 100644 api_file/model/logs.go create mode 100644 api_file/model/menus.go create mode 100644 api_file/model/note.go create mode 100644 api_file/model/sudoku.go create mode 100644 api_file/model/sysError.go create mode 100644 api_file/model/sysSettings.go create mode 100644 api_file/model/sysinfo.go create mode 100644 api_file/model/user.go create mode 100644 api_file/model/utils.go create mode 100644 api_file/model/weather.go create mode 100644 api_file/service/api/file.go create mode 100644 api_file/service/api/fileExport.go create mode 100644 api_file/service/api/init.go create mode 100644 api_file/service/api/type.d.go create mode 100644 api_file/service/init.go create mode 100644 api_file/utils/sysSettings.go create mode 100644 api_file/utils/type.d.go create mode 100644 api_file/utils/user.go create mode 100644 api_file/utils/utils.go create mode 100644 api_iris/Dockerfile create mode 100644 api_iris/config/config.dev.yaml create mode 100644 api_iris/config/config.go create mode 100644 api_iris/config/config.prd.yaml create mode 100644 api_iris/config/type.d.go create mode 100644 api_iris/crontab/init.go create mode 100644 api_iris/crontab/nginxLog.go create mode 100644 api_iris/crontab/type.d.go create mode 100644 api_iris/database/database.go create mode 100644 api_iris/go.mod create mode 100644 api_iris/go.sum create mode 100644 api_iris/jwtSet/jwt.go create mode 100644 api_iris/main.go create mode 100644 api_iris/model/backgammon.go create mode 100644 api_iris/model/balance.go create mode 100644 api_iris/model/chess.go create mode 100644 api_iris/model/crontab.go create mode 100644 api_iris/model/keys.go create mode 100644 api_iris/model/logs.go create mode 100644 api_iris/model/menus.go create mode 100644 api_iris/model/note.go create mode 100644 api_iris/model/sudoku.go create mode 100644 api_iris/model/sysError.go create mode 100644 api_iris/model/sysSettings.go create mode 100644 api_iris/model/sysinfo.go create mode 100644 api_iris/model/user.go create mode 100644 api_iris/model/utils.go create mode 100644 api_iris/model/weather.go create mode 100644 api_iris/service/admin/init.go create mode 100644 api_iris/service/admin/logs.go create mode 100644 api_iris/service/admin/logsExport.go create mode 100644 api_iris/service/admin/menus.go create mode 100644 api_iris/service/admin/menusExport.go create mode 100644 api_iris/service/admin/sysSettings.go create mode 100644 api_iris/service/admin/sysSettingsExport.go create mode 100644 api_iris/service/admin/type.d.go create mode 100644 api_iris/service/admin/user.go create mode 100644 api_iris/service/admin/userExport.go create mode 100644 api_iris/service/api/backgammon.go create mode 100644 api_iris/service/api/backgammonExport.go create mode 100644 api_iris/service/api/chess.go create mode 100644 api_iris/service/api/chessExport.go create mode 100644 api_iris/service/api/file.go create mode 100644 api_iris/service/api/fileExport.go create mode 100644 api_iris/service/api/init.go create mode 100644 api_iris/service/api/menus.go create mode 100644 api_iris/service/api/menusExport.go create mode 100644 api_iris/service/api/notes.go create mode 100644 api_iris/service/api/notesExport.go create mode 100644 api_iris/service/api/public.go create mode 100644 api_iris/service/api/publicExport.go create mode 100644 api_iris/service/api/sudoku.go create mode 100644 api_iris/service/api/sudokuExport.go create mode 100644 api_iris/service/api/sysSettings.go create mode 100644 api_iris/service/api/sysSettingsExport.go create mode 100644 api_iris/service/api/sysinfo.go create mode 100644 api_iris/service/api/sysinfoExport.go create mode 100644 api_iris/service/api/type.d.go create mode 100644 api_iris/service/api/user.go create mode 100644 api_iris/service/api/userExport.go create mode 100644 api_iris/service/api/weather.go create mode 100644 api_iris/service/api/weatherExport.go create mode 100644 api_iris/service/api/yeb.go create mode 100644 api_iris/service/api/yebExport.go create mode 100644 api_iris/service/api/yebLog.go create mode 100644 api_iris/service/api/yebLogExport.go create mode 100644 api_iris/service/init.go create mode 100644 api_iris/service/test/test.go create mode 100644 api_iris/service/ws/websocket.go create mode 100644 api_iris/utils/aes.go create mode 100644 api_iris/utils/holidays.go create mode 100644 api_iris/utils/menus.go create mode 100644 api_iris/utils/rsa.go create mode 100644 api_iris/utils/sudoku.go create mode 100644 api_iris/utils/sysSettings.go create mode 100644 api_iris/utils/type.d.go create mode 100644 api_iris/utils/user.go create mode 100644 api_iris/utils/utils.go create mode 100644 build_file/dev/Dockerfile create mode 100644 build_file/dev/build.py create mode 100644 build_file/dev/default.conf create mode 100644 build_file/dev/docker-compose.yml create mode 100644 build_file/dev/move-o.sh create mode 100644 build_file/dev/move.sh create mode 100644 build_file/dev/nginx.conf create mode 100644 build_file/dev/update-o.sh create mode 100644 build_file/dev/update.sh create mode 100644 build_file/prd/Dockerfile create mode 100644 build_file/prd/build.py create mode 100644 build_file/prd/default.conf create mode 100644 build_file/prd/docker-compose.yml create mode 100644 build_file/prd/git-ylsa0.cn.key create mode 100644 build_file/prd/git-ylsa0.cn_bundle.crt create mode 100644 build_file/prd/nginx.conf create mode 100644 build_file/prd/update.sh create mode 100644 web_vue/.vscode/extensions.json create mode 100644 web_vue/README.md create mode 100644 web_vue/index.html create mode 100644 web_vue/package-lock.json create mode 100644 web_vue/package.json create mode 100644 web_vue/public/docker_icon.svg create mode 100644 web_vue/public/favicon.ico create mode 100644 web_vue/public/nginx_icon.svg create mode 100644 web_vue/public/vite.svg create mode 100644 web_vue/src/App.vue create mode 100644 web_vue/src/assets/css/normalize.css create mode 100644 web_vue/src/assets/css/style.css create mode 100644 web_vue/src/assets/image/avatar.png create mode 100644 web_vue/src/assets/image/background.jpg create mode 100644 web_vue/src/assets/image/background.webp create mode 100644 web_vue/src/assets/image/black.png create mode 100644 web_vue/src/assets/image/chess.webp create mode 100644 web_vue/src/assets/image/logo.png create mode 100644 web_vue/src/assets/image/white.png create mode 100644 web_vue/src/components/charts/yl-line.vue create mode 100644 web_vue/src/components/yl-action-div.vue create mode 100644 web_vue/src/components/yl-hls-player.vue create mode 100644 web_vue/src/components/yl-icon-selector.vue create mode 100644 web_vue/src/components/yl-layout/header.vue create mode 100644 web_vue/src/components/yl-layout/layout.vue create mode 100644 web_vue/src/components/yl-layout/menu.vue create mode 100644 web_vue/src/components/yl-layout/yl-userinfo.vue create mode 100644 web_vue/src/main.ts create mode 100644 web_vue/src/pages/account-bill/bill-component.vue create mode 100644 web_vue/src/pages/account-bill/index.vue create mode 100644 web_vue/src/pages/account-bill/month.vue create mode 100644 web_vue/src/pages/account/index.vue create mode 100644 web_vue/src/pages/account/yl-account-sz.vue create mode 100644 web_vue/src/pages/error/index.vue create mode 100644 web_vue/src/pages/files/index.vue create mode 100644 web_vue/src/pages/files/store.ts create mode 100644 web_vue/src/pages/files/yl-video.vue create mode 100644 web_vue/src/pages/games/yl-backgammon-room.vue create mode 100644 web_vue/src/pages/games/yl-backgammon.vue create mode 100644 web_vue/src/pages/games/yl-chess-room.vue create mode 100644 web_vue/src/pages/games/yl-chess.vue create mode 100644 web_vue/src/pages/home/index.vue create mode 100644 web_vue/src/pages/login/index.vue create mode 100644 web_vue/src/pages/login/login-data.vue create mode 100644 web_vue/src/pages/login/login.vue create mode 100644 web_vue/src/pages/login/register.vue create mode 100644 web_vue/src/pages/login/reset-pwd.vue create mode 100644 web_vue/src/pages/notes/store.ts create mode 100644 web_vue/src/pages/notes/yl-note-detail.vue create mode 100644 web_vue/src/pages/notes/yl-note.vue create mode 100644 web_vue/src/pages/sys-info/yl-cpu-chart.vue create mode 100644 web_vue/src/pages/sys-info/yl-disk-chart.vue create mode 100644 web_vue/src/pages/sys-info/yl-mem-chart.vue create mode 100644 web_vue/src/pages/sys-info/yl-net-chart.vue create mode 100644 web_vue/src/pages/sys-info/yl-sys-info.vue create mode 100644 web_vue/src/pages/sys-log/store.ts create mode 100644 web_vue/src/pages/sys-log/yl-docker-log.vue create mode 100644 web_vue/src/pages/sys-log/yl-nginx-log-detail.vue create mode 100644 web_vue/src/pages/sys-log/yl-nginx-log.vue create mode 100644 web_vue/src/pages/sys-log/yl-sys-log.vue create mode 100644 web_vue/src/pages/sys-menu/index.vue create mode 100644 web_vue/src/pages/sys-menu/menu-edit.vue create mode 100644 web_vue/src/pages/sys-settings/yl-sys-settings.vue create mode 100644 web_vue/src/pages/sys-user/yl-sys-user.vue create mode 100644 web_vue/src/requests/request.ts create mode 100644 web_vue/src/router/router.ts create mode 100644 web_vue/src/store/store.ts create mode 100644 web_vue/src/type.d.ts create mode 100644 web_vue/src/utils/cookie.ts create mode 100644 web_vue/src/utils/mebu.vue create mode 100644 web_vue/src/utils/menu.ts create mode 100644 web_vue/src/utils/mouse.ts create mode 100644 web_vue/src/utils/utils.ts create mode 100644 web_vue/src/vite-env.d.ts create mode 100644 web_vue/tsconfig.json create mode 100644 web_vue/tsconfig.node.json create mode 100644 web_vue/vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3d0420 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/api_file/logs/ +/api_iris/logs/ +/api_iris/upload-note/ +/api_iris/upload-video/ +/api_iris/upload/ +/api_iris/static/ +/web_vue/node_modules/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..704e8a6 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..060d2c5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/web_ylsa.iml b/.idea/web_ylsa.iml new file mode 100644 index 0000000..9039cd3 --- /dev/null +++ b/.idea/web_ylsa.iml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..ed13fef --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + { + "associatedIndex": 1 +} + + + + + + + { + "keyToString": { + "ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true", + "Django 服务器.web_ylsa.executor": "Run", + "Python.build (1).executor": "Run", + "Python.build.executor": "Run", + "Python.test-2.executor": "Run", + "Python.test-api (1).executor": "Run", + "Python.test-database.executor": "Run", + "Python.test.executor": "Run", + "Python.test1.executor": "Run", + "RunOnceActivity.OpenDjangoStructureViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.go.formatter.settings.were.checked": "true", + "RunOnceActivity.go.migrated.go.modules.settings": "true", + "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true", + "RunOnceActivity.pycharm.django.structure.promotion.once.per.project": "true", + "go.import.settings.migrated": "true", + "go.sdk.automatically.set": "true", + "ignore.virus.scanning.warn.message": "true", + "last_opened_file_path": "C:/Users/m1582/Documents/project/git/web_ylsa", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1728439714627 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + true + + + + + + + + + + + \ No newline at end of file diff --git a/api_file/Dockerfile b/api_file/Dockerfile new file mode 100644 index 0000000..e0481ad --- /dev/null +++ b/api_file/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:1.22.4 + +RUN mkdir -p /web \ + mkdir -p /web/logs + +ENV GOPATH=/web +ENV GOPROXY=https://goproxy.cn,direct + +WORKDIR $GOPATH/api_file + +COPY . $GOPATH/api_file + +RUN go build . + +ENTRYPOINT ["./main"] \ No newline at end of file diff --git a/api_file/config/config.dev.yaml b/api_file/config/config.dev.yaml new file mode 100644 index 0000000..c75d592 --- /dev/null +++ b/api_file/config/config.dev.yaml @@ -0,0 +1,11 @@ +database: + dsn: web:Song1875.@tcp(43.154.168.226:3306)/web_vue?charset=utf8mb4&parseTime=True&loc=Local + prd: false + +logs: + log: logs + nginx: logs/nginx + +sys: + jwt: False + User: admin diff --git a/api_file/config/config.go b/api_file/config/config.go new file mode 100644 index 0000000..c9daa56 --- /dev/null +++ b/api_file/config/config.go @@ -0,0 +1,31 @@ +package config + +import ( + "github.com/sirupsen/logrus" + "gopkg.in/yaml.v3" + "os" +) + +// Config 公共参数 +var Config settings + +// InitConfig 配置初始化 +func InitConfig(version string) error { + var file []byte + var err error + if version == "dev" { + file, err = os.ReadFile("./config/config.dev.yaml") + } else { + file, err = os.ReadFile("./config/config.prd.yaml") + } + if err != nil { + logrus.Errorln("Error reading config file:", err) + return err + } + err = yaml.Unmarshal(file, &Config) + if err != nil { + logrus.Errorln("Error parsing config file:", err) + return err + } + return nil +} diff --git a/api_file/config/config.prd.yaml b/api_file/config/config.prd.yaml new file mode 100644 index 0000000..6b89917 --- /dev/null +++ b/api_file/config/config.prd.yaml @@ -0,0 +1,11 @@ +database: + dsn: web_prd:SongPrd1875.@tcp(43.154.168.226:3306)/web_prd?charset=utf8mb4&parseTime=True&loc=Local + prd: true + +logs: + log: logs + nginx: logs/nginx + +sys: + jwt: True + User: diff --git a/api_file/config/type.d.go b/api_file/config/type.d.go new file mode 100644 index 0000000..784e1c7 --- /dev/null +++ b/api_file/config/type.d.go @@ -0,0 +1,21 @@ +package config + +type settings struct { + Logs *logs `yaml:"logs"` + Database *database `yaml:"database"` +} + +type logs struct { + Nginx string `yaml:"nginx"` + Log string `yaml:"log"` +} + +type database struct { + Dsn string `yaml:"dsn"` + Prd bool `yaml:"prd"` +} + +type sys struct { + Jwt string `yaml:"jwt"` + User string `yaml:"user"` +} diff --git a/api_file/database/database.go b/api_file/database/database.go new file mode 100644 index 0000000..e82c106 --- /dev/null +++ b/api_file/database/database.go @@ -0,0 +1,48 @@ +package database + +import ( + "github.com/sirupsen/logrus" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "main/config" + "sync" +) + +var instance *MysqlConnectionPool +var once sync.Once +var db *gorm.DB +var err error + +// GetInstance 获取数据库连接池 +func GetInstance() *MysqlConnectionPool { + once.Do(func() { + instance = &MysqlConnectionPool{} + }) + return instance +} + +// InitDataPool 数据库初始化连接 +func (m *MysqlConnectionPool) InitDataPool() (isSuccess bool) { + dbConfig := config.Config.Database + if dbConfig.Prd { + db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{}) + } else { + db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Info), + }) + } + if err != nil { + logrus.Errorln("数据库配置失败:", err) + return false + } + return true +} + +// GetMysqlDb 获取数据库连接 +func (m *MysqlConnectionPool) GetMysqlDb() (dbCon *gorm.DB) { + return db +} + +type MysqlConnectionPool struct { +} diff --git a/api_file/go.mod b/api_file/go.mod new file mode 100644 index 0000000..02f4892 --- /dev/null +++ b/api_file/go.mod @@ -0,0 +1,65 @@ +module main + +go 1.22.4 + +require ( + github.com/antonfisher/nested-logrus-formatter v1.3.1 + github.com/golang-jwt/jwt/v4 v4.5.1 + github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72 + github.com/kataras/iris/v12 v12.2.11 + github.com/shopspring/decimal v1.4.0 + github.com/sirupsen/logrus v1.9.3 + gopkg.in/yaml.v3 v3.0.1 + gorm.io/driver/mysql v1.5.7 + gorm.io/gorm v1.25.10 +) + +require ( + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect + github.com/CloudyKit/jet/v6 v6.2.0 // indirect + github.com/Joker/jade v1.1.3 // indirect + github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/flosch/pongo2/v4 v4.0.2 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/css v1.0.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/iris-contrib/schema v0.0.6 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kataras/blocks v0.0.8 // indirect + github.com/kataras/golog v0.1.11 // indirect + github.com/kataras/pio v0.0.13 // indirect + github.com/kataras/sitemap v0.0.6 // indirect + github.com/kataras/tunnel v0.0.4 // indirect + github.com/klauspost/compress v1.17.7 // indirect + github.com/mailgun/raymond/v2 v2.0.48 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/microcosm-cc/bluemonday v1.0.26 // indirect + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/schollz/closestmatch v2.1.0+incompatible // indirect + github.com/tdewolff/minify/v2 v2.20.19 // indirect + github.com/tdewolff/parse/v2 v2.7.12 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/yosssi/ace v0.0.5 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect +) diff --git a/api_file/go.sum b/api_file/go.sum new file mode 100644 index 0000000..4035fa1 --- /dev/null +++ b/api_file/go.sum @@ -0,0 +1,207 @@ +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= +github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= +github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= +github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= +github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ= +github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= +github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 h1:4gjrh/PN2MuWCCElk8/I4OCKRKWCCo2zEct3VKCbibU= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/iris-contrib/httpexpect/v2 v2.15.2 h1:T9THsdP1woyAqKHwjkEsbCnMefsAFvk8iJJKokcJ3Go= +github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE= +github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72 h1:wbkA/QXv1RZmuY2iLvsgmHeiGq4DNvv2Rhj5PQ2oHTI= +github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72/go.mod h1:hIyBTK1zUxUaC4Hu8Ba9Z70r2S5ET4+ZKNescqjXld0= +github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= +github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kataras/blocks v0.0.8 h1:MrpVhoFTCR2v1iOOfGng5VJSILKeZZI+7NGfxEh3SUM= +github.com/kataras/blocks v0.0.8/go.mod h1:9Jm5zx6BB+06NwA+OhTbHW1xkMOYxahnqTN5DveZ2Yg= +github.com/kataras/golog v0.1.11 h1:dGkcCVsIpqiAMWTlebn/ZULHxFvfG4K43LF1cNWSh20= +github.com/kataras/golog v0.1.11/go.mod h1:mAkt1vbPowFUuUGvexyQ5NFW6djEgGyxQBIARJ0AH4A= +github.com/kataras/iris/v12 v12.2.11 h1:sGgo43rMPfzDft8rjVhPs6L3qDJy3TbBrMD/zGL1pzk= +github.com/kataras/iris/v12 v12.2.11/go.mod h1:uMAeX8OqG9vqdhyrIPv8Lajo/wXTtAF43wchP9WHt2w= +github.com/kataras/pio v0.0.13 h1:x0rXVX0fviDTXOOLOmr4MUxOabu1InVSTu5itF8CXCM= +github.com/kataras/pio v0.0.13/go.mod h1:k3HNuSw+eJ8Pm2lA4lRhg3DiCjVgHlP8hmXApSej3oM= +github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= +github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= +github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= +github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= +github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= +github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= +github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= +github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tdewolff/minify/v2 v2.20.19 h1:tX0SR0LUrIqGoLjXnkIzRSIbKJ7PaNnSENLD4CyH6Xo= +github.com/tdewolff/minify/v2 v2.20.19/go.mod h1:ulkFoeAVWMLEyjuDz1ZIWOA31g5aWOawCFRp9R/MudM= +github.com/tdewolff/parse/v2 v2.7.12 h1:tgavkHc2ZDEQVKy1oWxwIyh5bP4F5fEh/JmBwPP/3LQ= +github.com/tdewolff/parse/v2 v2.7.12/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= +github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= +github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s= +gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= +moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE= diff --git a/api_file/jwtSet/jwt.go b/api_file/jwtSet/jwt.go new file mode 100644 index 0000000..cbaf659 --- /dev/null +++ b/api_file/jwtSet/jwt.go @@ -0,0 +1,78 @@ +package jwtSet + +// +//import ( +// "github.com/iris-contrib/middleware/jwt" +// "github.com/sirupsen/logrus" +// "main/database" +// "main/model" +// "main/utils" +// "time" +//) +// +//var Jwt *jwt.Middleware +//var keys model.JwtKeys +// +//func GetJwtKeys() model.JwtKeys { +// db := database.GetInstance().GetMysqlDb() +// if utils.DataIsNil(keys) || keys.Date != time.Now().Format("2006-01-02") { +// keys = model.JwtKeys{} +// if err := db.Where("date = ? and token = ''", time.Now().Format("2006-01-02")).First(&keys).Error; err != nil { +// logrus.Errorln("sql执行失败:", err) +// return model.JwtKeys{} +// } +// } +// if keys.Key == "" { +// keys.Date = time.Now().Format("2006-01-02") +// keys.Key = utils.NewKey(32) +// if err := db.Create(&keys).Error; err != nil { +// logrus.Errorln("sql执行失败:", err) +// return model.JwtKeys{} +// } +// } +// if !keys.Updated && !utils.DataIsNil(Jwt) { +// UpdateJwt() +// } +// return keys +//} +////func Init() { +//// if utils.DataIsNil(keys) { +//// GetJwtKeys() +//// } +//// Jwt = jwt.New(jwt.Config{ +//// ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { +//// return []byte(keys.Key), nil +//// }, +//// ErrorHandler: func(context iris.Context, err error) { +//// if err == nil { +//// return +//// } +//// context.StopExecution() +//// context.StatusCode(iris.StatusUnauthorized) +//// context.SetErr(err) +//// }, +//// Extractor: jwt.FromAuthHeader, +//// SigningMethod: jwt.SigningMethodHS256, +//// }) +//// db := database.GetInstance().GetMysqlDb() +//// keys.Updated = true +//// if err := db.Updates(&keys).Error; err != nil { +//// logrus.Errorln("sql执行失败:", err) +//// return +//// } +////} +// +//func UpdateJwt() { +// if utils.DataIsNil(keys) { +// GetJwtKeys() +// } +// Jwt.Config.ValidationKeyGetter = func(token *jwt.Token) (interface{}, error) { +// return []byte(keys.Key), nil +// } +// db := database.GetInstance().GetMysqlDb() +// keys.Updated = true +// if err := db.Updates(&keys).Error; err != nil { +// logrus.Errorln("sql执行失败:", err) +// return +// } +//} diff --git a/api_file/main.go b/api_file/main.go new file mode 100644 index 0000000..68509ea --- /dev/null +++ b/api_file/main.go @@ -0,0 +1,81 @@ +package main + +import ( + "fmt" + nested "github.com/antonfisher/nested-logrus-formatter" + "github.com/kataras/iris/v12" + "github.com/kataras/iris/v12/middleware/accesslog" + "github.com/sirupsen/logrus" + "main/config" + "main/database" + "main/service" + "main/utils" + "os" + "path" + "time" +) + +func main() { + logrus.SetFormatter(&nested.Formatter{HideKeys: true, TimestampFormat: time.RFC3339}) + //配置文件初始化 + err := config.InitConfig(utils.GetEnvDefault("version", "dev")) + if err != nil { + logrus.Errorln("配置文件初始化失败:", err) + return + } + logrus.Infoln("配置文件初始化完成") + //日志初始化 + ac := makeAccessLog() + //应用初始化 + app := iris.New() + //应用ac-log + app.UseRouter(ac.Handler) + //错误处理 + app.OnAnyErrorCode(handler) + //数据库连接初始化 + if !database.GetInstance().InitDataPool() { + return + } + logrus.Infoln("数据库已连接") + //初始化用户信息,系统配置信息,菜单列表 + utils.UpdateUserInfo() + utils.UpdateSysSettings() + logrus.Infoln("数据库结构初始化完成") + //jwtSet.Init() + //logrus.Infoln("jwt认证初始化完成") + //接口组 + app.PartyFunc("/api", service.Apis) + logrus.Infoln("接口组配置完成") + //应用启动 + logrus.Infoln("应用启动") + err = app.Run(iris.Addr(":8081")) + if err != nil { + return + } +} + +// 生成acLog实例 +func makeAccessLog() *accesslog.AccessLog { + cPath, _ := os.Getwd() + ac := accesslog.File(path.Join(cPath, config.Config.Logs.Log, fmt.Sprintf("access-%s.log", time.Now().Format("2006-01-02")))) + ac.AddOutput(os.Stdout) + ac.IP = true + ac.Delim = ' ' + ac.ResponseBody = false + return ac +} + +// 接口错误处理 +func handler(ctx iris.Context) { + if ctx.GetErr() != nil { + err := ctx.JSON(utils.FormatRes(ctx.GetStatusCode(), ctx.GetErr().Error(), nil)) + if err != nil { + return + } + } else { + err := ctx.JSON(utils.FormatRes(ctx.GetStatusCode(), "", nil)) + if err != nil { + return + } + } +} diff --git a/api_file/model/backgammon.go b/api_file/model/backgammon.go new file mode 100644 index 0000000..0c2419d --- /dev/null +++ b/api_file/model/backgammon.go @@ -0,0 +1,12 @@ +package model + +import "gorm.io/gorm" + +type BackgammonRoom struct { + RoomId int `json:"room_id"` + Player string `json:"player"` + Winner string `json:"winner"` + Current string `json:"current"` + PawnStatus string `json:"pawn_status"` + gorm.Model +} diff --git a/api_file/model/balance.go b/api_file/model/balance.go new file mode 100644 index 0000000..dce461a --- /dev/null +++ b/api_file/model/balance.go @@ -0,0 +1,19 @@ +package model + +import "gorm.io/gorm" + +type Balances struct { + Username string `json:"username"` + Card string `json:"card"` + Type bool `gorm:"default:false" json:"type"` //1:支出型;0:收入型 + Balance float64 `json:"balance"` + gorm.Model +} + +type BalanceLogs struct { + Username string + Card string + Date string + Balance float64 + gorm.Model +} diff --git a/api_file/model/chess.go b/api_file/model/chess.go new file mode 100644 index 0000000..074a722 --- /dev/null +++ b/api_file/model/chess.go @@ -0,0 +1,28 @@ +package model + +import ( + "gorm.io/gorm" + "time" +) + +type ChessStatus struct { + gorm.Model + Players string `json:"players"` + Current string `json:"current"` + IsEnd bool `json:"is_end"` + Status string `json:"status"` + Winner string `json:"winner"` + ChessId string `json:"chess_id"` +} + +type ChessStatusLog struct { + gorm.Model + RoomId uint `json:"roomId"` + Current string `json:"current"` + Players string `json:"players"` + IsEnd bool `json:"is_end"` + Status string `json:"status"` + Winner string `json:"winner"` + ChessId string `json:"chess_id"` + Time time.Time `json:"time"` +} diff --git a/api_file/model/crontab.go b/api_file/model/crontab.go new file mode 100644 index 0000000..2be7620 --- /dev/null +++ b/api_file/model/crontab.go @@ -0,0 +1,9 @@ +package model + +import "gorm.io/gorm" + +type RunningCrontab struct { + Name string + CronId int + gorm.Model +} diff --git a/api_file/model/keys.go b/api_file/model/keys.go new file mode 100644 index 0000000..b23a4d3 --- /dev/null +++ b/api_file/model/keys.go @@ -0,0 +1,20 @@ +package model + +import "gorm.io/gorm" + +// DayKeys 每天对应key表 +type DayKeys struct { + Date string + Key string + AesKey string + User string + gorm.Model +} +type JwtKeys struct { + Username string + Date string + Key string + Token string + Updated bool `gorm:"default:false"` + gorm.Model +} diff --git a/api_file/model/logs.go b/api_file/model/logs.go new file mode 100644 index 0000000..bd0e743 --- /dev/null +++ b/api_file/model/logs.go @@ -0,0 +1,31 @@ +package model + +import "gorm.io/gorm" + +// Logs 日志表 +type Logs struct { + Method string `json:"method,omitempty"` + Path string `json:"path,omitempty"` + Status string `json:"status,omitempty"` + UserAgent string `json:"user_agent,omitempty"` + Time string `json:"time,omitempty"` + Location string `json:"location,omitempty"` + Ip string `json:"ip,omitempty"` + gorm.Model +} + +type LogFileDealLog struct { + Date string + Success bool + gorm.Model +} + +// SysLogs 系统容器日志表 +type SysLogs struct { + Time string `json:"time,omitempty"` + ContainerName string `json:"container_name,omitempty"` + ContainerImage string `json:"container_image,omitempty"` + Message string `json:"message,omitempty"` + Offset int `json:"offset,omitempty"` + gorm.Model +} diff --git a/api_file/model/menus.go b/api_file/model/menus.go new file mode 100644 index 0000000..11a5170 --- /dev/null +++ b/api_file/model/menus.go @@ -0,0 +1,14 @@ +package model + +import "gorm.io/gorm" + +type Menus struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` + UserType string `json:"user_type"` + WhiteList string `json:"white_list"` + gorm.Model +} diff --git a/api_file/model/note.go b/api_file/model/note.go new file mode 100644 index 0000000..151bc92 --- /dev/null +++ b/api_file/model/note.go @@ -0,0 +1,9 @@ +package model + +import "gorm.io/gorm" + +type UserNotes struct { + Username string `json:"username"` + Content string `json:"content"` + gorm.Model +} diff --git a/api_file/model/sudoku.go b/api_file/model/sudoku.go new file mode 100644 index 0000000..ca3f3e0 --- /dev/null +++ b/api_file/model/sudoku.go @@ -0,0 +1,18 @@ +package model + +import "gorm.io/gorm" + +type Sudoku struct { + Sudoku string `json:"sudoku"` + Username string `json:"username"` + Result string `json:"result"` + gorm.Model +} + +type SudokuStatus struct { + SudokuId uint `json:"sudoku_id"` + Username string `json:"username"` + Status string `json:"status"` + Complete bool `json:"complete"` + gorm.Model +} diff --git a/api_file/model/sysError.go b/api_file/model/sysError.go new file mode 100644 index 0000000..0cc0806 --- /dev/null +++ b/api_file/model/sysError.go @@ -0,0 +1,14 @@ +package model + +import ( + "gorm.io/gorm" + "time" +) + +type SysError struct { + Username string `json:"username"` + Time time.Time `json:"time"` + Function string `json:"function"` + ErrorInfo string `json:"error_info"` + gorm.Model +} diff --git a/api_file/model/sysSettings.go b/api_file/model/sysSettings.go new file mode 100644 index 0000000..368b367 --- /dev/null +++ b/api_file/model/sysSettings.go @@ -0,0 +1,17 @@ +package model + +import "gorm.io/gorm" + +// SysIcons 系统图标库 +type SysIcons struct { + Icon string `json:"icon"` + gorm.Model +} + +type SysSettings struct { + Name string `json:"name"` + CnName string `json:"cn_name"` + Value string `json:"value"` + DType string `json:"d_type"` + gorm.Model +} diff --git a/api_file/model/sysinfo.go b/api_file/model/sysinfo.go new file mode 100644 index 0000000..bbded6a --- /dev/null +++ b/api_file/model/sysinfo.go @@ -0,0 +1,55 @@ +package model + +import "gorm.io/gorm" + +type SysInfo struct { + Date string `json:"date" gorm:"index:select_info"` + Datetime string `json:"datetime" gorm:"index:datetime_index"` + Username string `json:"username" gorm:"index:select_info"` + Hostname string `json:"hostname"` + Ip string `json:"ip" gorm:"index:select_info"` + SysVersion string `json:"sysVersion"` + PhysicalCount int `json:"physicalCount"` + LogicalCount int `json:"logicalCount"` + CpuPer float64 `json:"cpuPer"` + MemTotal string `json:"memTotal"` + MemUsed string `json:"memUsed"` + MemPer float64 `json:"memPer"` + DiskPoint string `json:"diskPoint"` + DiskTotal string `json:"diskTotal"` + DiskUsed string `json:"diskUsed"` + DiskPer string `json:"diskPer"` + NetSent int64 `json:"netSent"` + NetRec int64 `json:"netRec"` + SentSpeed string `json:"sentSpeed"` + RecSpeed string `json:"recSpeed"` + gorm.Model +} + +type SysInfoOld struct { + Datetime string `json:"datetime" gorm:"index:datetime_index"` + Username string `json:"username"` + Hostname string `json:"hostname"` + Ip string `json:"ip"` + SysVersion string `json:"sysVersion"` + PhysicalCount int `json:"physicalCount"` + LogicalCount int `json:"logicalCount"` + CpuPer float64 `json:"cpuPer"` + MemTotal string `json:"memTotal"` + MemUsed string `json:"memUsed"` + MemPer float64 `json:"memPer"` + DiskPoint string `json:"diskPoint"` + DiskTotal string `json:"diskTotal"` + DiskUsed string `json:"diskUsed"` + DiskPer string `json:"diskPer"` + NetSent int64 `json:"netSent"` + NetRec int64 `json:"netRec"` + SentSpeed string `json:"sentSpeed"` + RecSpeed string `json:"recSpeed"` +} + +type SysInfoUpdateLog struct { + Datetime string `json:"datetime"` + Update bool `json:"update"` + gorm.Model +} diff --git a/api_file/model/user.go b/api_file/model/user.go new file mode 100644 index 0000000..c47771c --- /dev/null +++ b/api_file/model/user.go @@ -0,0 +1,38 @@ +package model + +import "gorm.io/gorm" + +// User 用户登录信息表 +type User struct { + Username string + Password string + Date string + ConfirmCode string + gorm.Model +} + +// Userinfo 用户信息表 +type Userinfo struct { + Username string `json:"username"` + Avatar string `json:"avatar"` + Nickname string `json:"nickname"` + Mobile string `json:"mobile"` + Email string `json:"email"` + Location string `json:"location"` + Type string `json:"type"` + gorm.Model +} + +// UserAction 用户行为表 +type UserAction struct { + Username string + Action string + gorm.Model +} + +type UserAutoLogin struct { + Username string + DeviceId string + Location string + gorm.Model +} diff --git a/api_file/model/utils.go b/api_file/model/utils.go new file mode 100644 index 0000000..a52a5e3 --- /dev/null +++ b/api_file/model/utils.go @@ -0,0 +1,10 @@ +package model + +import "gorm.io/gorm" + +// IpsLocation ip转地址表 +type IpsLocation struct { + Ip string + Location string + gorm.Model +} diff --git a/api_file/model/weather.go b/api_file/model/weather.go new file mode 100644 index 0000000..52cd3ce --- /dev/null +++ b/api_file/model/weather.go @@ -0,0 +1,11 @@ +package model + +import "gorm.io/gorm" + +// Weather 每日天气表 +type Weather struct { + Date string + Location string + Weather string + gorm.Model +} diff --git a/api_file/service/api/file.go b/api_file/service/api/file.go new file mode 100644 index 0000000..1b7f2a2 --- /dev/null +++ b/api_file/service/api/file.go @@ -0,0 +1,319 @@ +package api + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "mime/multipart" + "os" + "path" + "path/filepath" + "strings" + "time" +) + +func getRootFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + userPath := fmt.Sprintf("./upload/%s", username.Username) + if !utils.FileIsExist(userPath) { + err := os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + var files filesRes + fileList, err := os.ReadDir(userPath) + if utils.ErrHandle(ctx, err) { + return + } + for _, file := range fileList { + if file.IsDir() { + files.Dirs = append(files.Dirs, file.Name()) + } else { + var item fileItem + item.Name = file.Name() + f, err := os.Stat(path.Join(userPath, file.Name())) + if utils.ErrHandle(ctx, err) { + return + } + item.Size = f.Size() + item.Type = utils.GetFileType(f.Name()) + files.Files = append(files.Files, item) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", files)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取指定目录下文件 +func getFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New(userPath + ":目录不存在")) + return + } + var files filesRes + fileList, err := os.ReadDir(userPath) + if utils.ErrHandle(ctx, err) { + return + } + for _, file := range fileList { + if file.IsDir() { + files.Dirs = append(files.Dirs, file.Name()) + } else { + var item fileItem + item.Name = file.Name() + f, err := os.Stat(path.Join(userPath, file.Name())) + if utils.ErrHandle(ctx, err) { + return + } + item.Size = f.Size() + item.Type = utils.GetFileType(f.Name()) + files.Files = append(files.Files, item) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", files)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 删除文件或目录 +func deleteFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("目录不存在")) + return + } + if info, _ := os.Stat(userPath); info.IsDir() { + err := os.RemoveAll(userPath) + if utils.ErrHandle(ctx, err) { + return + } + } else { + err := os.Remove(userPath) + if utils.ErrHandle(ctx, err) { + return + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 上传头像 +func uploadAvatar(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + file, info, err := ctx.FormFile("file") + if utils.ErrHandle(ctx, err) { + return + } + defer func(file multipart.File) { + err = file.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(file) + userPath := fmt.Sprintf("./static/%s", username.Username) + if !utils.FileIsExist(userPath) { + err = os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + fileType := strings.Split(info.Filename, ".")[len(strings.Split(info.Filename, "."))-1] + avatarName := fmt.Sprintf("./static/%s/avatar-%s.%s", username.Username, time.Now().Format("2006-01-02"), fileType) + _, err = ctx.SaveFormFile(info, avatarName) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", avatarName[1:])) + if utils.ErrHandle(ctx, err) { + return + } +} + +func uploadDir(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("目录已存在")) + return + } + err := os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 上传文件 +func uploadFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + file, info, err := ctx.FormFile("file") + if utils.ErrHandle(ctx, err) { + return + } + defer func(file multipart.File) { + err = file.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(file) + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + err = os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + _, err = ctx.SaveFormFile(info, fmt.Sprintf("./upload/%s/%s/%s", username.Username, filePath, info.Filename)) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 文件下载,转到nginx-upload目录 +func downloadFile(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", userToken.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("文件不存在")) + return + } + if info, _ := os.Stat(userPath); info.IsDir() { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只可下载文件")) + return + } + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload/%s/%s", userToken.Username, filePath)) + ctx.Recorder().Header().Add("X-Accel-Charset", "utf-8") + ctx.Recorder().Header().Add("Content-Disposition", "attachment") + ctx.Recorder().Header().Add("Content-Type", "application/octet-stream; charset=utf-8") + return +} + +func getDownloadFileType(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + var res videoM3u8 + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + username := userToken.Username + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username, filePath) + currentPath, _ := filepath.Split(filePath) + filename := strings.TrimSuffix(path.Base(userPath), path.Ext(userPath)) + res.Video = utils.GetFileType(userPath) == "video" + res.M3u8 = utils.FileIsExist(fmt.Sprintf("./upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if err != nil { + return + } + return +} + +func downloadVideo(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + username := userToken.Username + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username, filePath) + currentPath, _ := filepath.Split(filePath) + filename := strings.TrimSuffix(path.Base(userPath), path.Ext(userPath)) + //fmt.Println(filePath, currentPath, filename) + if path.Ext(userPath) != ".ts" && !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("文件不存在")) + return + } + if info, err := os.Stat(userPath); err == nil && info.IsDir() { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只可下载文件")) + return + } + if utils.GetFileType(userPath) == "video" && utils.FileIsExist(fmt.Sprintf("./upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) { + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) + } else if utils.GetFileType(userPath) == "video" { + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload/%s/%s", username, filePath)) + } else { + tsPath := fmt.Sprintf("./upload-video/%s/%s%s/%s.ts", username, currentPath, filename[:len(filename)-6], filename) + ctx.Recorder().Header().Add("X-Accel-Redirect", tsPath[1:]) + } + ctx.Recorder().Header().Add("X-Accel-Charset", "utf-8") + ctx.Recorder().Header().Add("Content-Disposition", "attachment") + ctx.Recorder().Header().Add("Content-Type", "application/octet-stream; charset=utf-8") + return +} diff --git a/api_file/service/api/fileExport.go b/api_file/service/api/fileExport.go new file mode 100644 index 0000000..b131acb --- /dev/null +++ b/api_file/service/api/fileExport.go @@ -0,0 +1,17 @@ +package api + +import ( + "github.com/kataras/iris/v12" +) + +func File(party iris.Party) { + party.Get("/upload", getRootFile) + party.Get("/upload/{path:path}", getFile) + party.Post("/upload/{path:path}", uploadDir) + party.Post("/upload-file/{path:path}", uploadFile) + party.Delete("/upload/{path:path}", deleteFile) + party.Post("/static/avatar", uploadAvatar) + party.Get("/download/{path:path}", downloadFile) + party.Get("/download-video-check/{path:path}", getDownloadFileType) + party.Get("/download-video/{path:path}", downloadVideo) +} diff --git a/api_file/service/api/init.go b/api_file/service/api/init.go new file mode 100644 index 0000000..617d4b0 --- /dev/null +++ b/api_file/service/api/init.go @@ -0,0 +1,13 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/utils" +) + +func Apis(ctx iris.Context) { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "allFileApis")) + if err != nil { + return + } +} diff --git a/api_file/service/api/type.d.go b/api_file/service/api/type.d.go new file mode 100644 index 0000000..6716592 --- /dev/null +++ b/api_file/service/api/type.d.go @@ -0,0 +1,172 @@ +package api + +import "time" + +// user----------------------------------------------------------------------------------------------- +type result struct { + Date string + Password string + ConfirmCode string + UpdatedAt time.Time + Key string + AesKey string +} + +// weather--------------------------------------------------------------------------------------------- +type resWeather struct { + Status int `json:"status"` + Message string `json:"message"` + Data resData `json:"data"` +} +type resData struct { + Forecast24h resDate `json:"forecast_24h"` +} +type resDate struct { + D0 res24h `json:"1"` + D1 res24h `json:"2"` +} +type res24h struct { + Time string `json:"time"` + MaxDegree string `json:"max_degree"` + MinDegree string `json:"min_degree"` + DayWeather string `json:"day_weather"` + DayWindDirection string `json:"day_wind_direction"` + DayWindPower string `json:"day_wind_power"` + NightWeather string `json:"night_weather"` + NightWindPower string `json:"night_wind_power"` + NightWindDirection string `json:"night_wind_direction"` +} +type resLocation struct { + Data map[string]string `json:"data"` + Message string `json:"message"` + Status int `json:"status"` +} + +// backgammon----------------------------------------------------------------------------------------------- +type typeRoomStatus struct { + RoomId int `json:"room_id"` + Player string `json:"player"` +} + +// file----------------------------------------------------------------------------------------------------- +type filesRes struct { + Dirs []string `json:"dirs"` + Files []fileItem `json:"files"` +} +type fileItem struct { + Name string `json:"name"` + Type string `json:"type"` + Size int64 `json:"size"` +} +type videoM3u8 struct { + Video bool `json:"video"` + M3u8 bool `json:"m3u8"` +} + +// notes------------------------------------------------------------------------------------------------------ +type noteParam struct { + ID uint `json:"id"` + Content string `json:"content"` +} + +// sysInfo------------------------------------------------------------------------------------------------------ +type resSysInfo struct { + Datetime string `json:"datetime"` + CpuPer float64 `json:"cpu_per"` + Mem resMem `json:"mem"` + Disk []resDisk `json:"disk"` + Net resNet `json:"net"` +} +type resMem struct { + MemTotal string `json:"mem_total"` + MemUsed string `json:"mem_used"` + MemPer float64 `json:"mem_per"` +} +type resDisk struct { + Point string `json:"point"` + Total string `json:"total"` + Used string `json:"used"` + Per float64 `json:"per"` +} +type resNet struct { + Sent string `json:"sent"` + Rec string `json:"rec"` +} +type resSystem struct { + Hostname string `json:"hostname"` + Ip string `json:"ip"` +} +type sysInfoIDs struct { + IDs []int `json:"ids"` +} + +// yeb---------------------------------------------------------------------------------------------------------- +type paramsBalance struct { + Card string `json:"card"` + Type bool `json:"type"` + Balance float64 `json:"balance"` +} + +type paramSZBalance struct { + Card string `json:"card"` + Type bool `json:"type"` // 1-支出;0-收入 + Amount float64 `json:"amount"` +} + +// 月余额 +type dateLog struct { + Date string `json:"date"` + Duration string `json:"duration"` + Changes float64 `json:"changes"` + Balance float64 `json:"balance"` + Detail []cardLog `json:"detail"` +} + +// 详情 +type cardLog struct { + Card string `json:"card"` + Balance float64 `json:"balance"` + Changes float64 `json:"changes"` +} + +// menus----------------------------------------------------------------------------- +type resMenu struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` + Detail []subMenu `json:"detail"` +} + +type subMenu struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` +} + +type sysIconsParam struct { + Icons string `json:"icons"` +} + +// sudoku----------------------------------------------------------------------------- +type resSudokuListType struct { + New []sudokuListType `json:"new"` + Starting []sudokuListType `json:"starting"` + Complete []sudokuListType `json:"complete"` +} + +type sudokuListType struct { + Sudoku string `json:"sudoku"` + SudokuId uint `json:"sudokuId"` + Username string `json:"username"` + Status string `json:"status"` + Complete bool `json:"complete"` + Id uint `json:"id"` +} +type addSudokuParam struct { + Sudoku string `json:"sudoku"` + Result string `json:"result"` +} diff --git a/api_file/service/init.go b/api_file/service/init.go new file mode 100644 index 0000000..94e5660 --- /dev/null +++ b/api_file/service/init.go @@ -0,0 +1,11 @@ +package service + +import ( + "github.com/kataras/iris/v12" + "main/service/api" +) + +func Apis(p iris.Party) { + p.Get("/", api.Apis) + p.PartyFunc("/file", api.File) +} diff --git a/api_file/utils/sysSettings.go b/api_file/utils/sysSettings.go new file mode 100644 index 0000000..bd34138 --- /dev/null +++ b/api_file/utils/sysSettings.go @@ -0,0 +1,17 @@ +package utils + +import ( + "github.com/sirupsen/logrus" + "main/database" + "main/model" +) + +var SysSettings []model.SysSettings + +func UpdateSysSettings() { + db := database.GetInstance().GetMysqlDb() + if err := db.Order("name").Find(&SysSettings).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + logrus.Infoln("更新系统配置列表") +} diff --git a/api_file/utils/type.d.go b/api_file/utils/type.d.go new file mode 100644 index 0000000..89d51cf --- /dev/null +++ b/api_file/utils/type.d.go @@ -0,0 +1,24 @@ +package utils + +// ResponseBean result结构 +type ResponseBean struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} + +type ResApiUtils struct { + Flag bool `json:"flag"` + Data interface{} `json:"data"` + Msg string `json:"msg"` +} + +// ResSudoku sudoku -------------------------------------------------------------------- +type ResSudoku struct { + Flag bool `json:"flag"` + Data resSudokuData +} +type resSudokuData struct { + Check bool `json:"check"` + Result string `json:"result"` +} diff --git a/api_file/utils/user.go b/api_file/utils/user.go new file mode 100644 index 0000000..6cc203f --- /dev/null +++ b/api_file/utils/user.go @@ -0,0 +1,73 @@ +package utils + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "strings" +) + +var UserList []model.Userinfo + +// GetLoginUser 根据token获取用户,返回用户信息 +func GetLoginUser(ctx iris.Context) model.Userinfo { + auth := ctx.GetHeader("Authorization") + fmt.Println(auth) + if auth == "" || !strings.Contains(auth, "Bearer") { + ctx.StatusCode(iris.StatusUnauthorized) + ctx.SetErr(errors.New("未登录")) + logrus.Warningln("请求未携带token信息") + return model.Userinfo{} + } + var tokens []model.JwtKeys + db := database.GetInstance().GetMysqlDb() + fmt.Println(strings.Split(auth, " ")[1]) + if err := db.Where("token = ?", strings.Split(auth, " ")[1]).Find(&tokens).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(tokens) == 0 { + ctx.StatusCode(iris.StatusUnauthorized) + ctx.SetErr(errors.New("未登录")) + logrus.Warningln(auth, "token信息无效") + return model.Userinfo{} + } else { + return GetUserInfo(tokens[0].Username) + } + //foobar := auth.Claims.(jwt.MapClaims) + //for key, value := range foobar { + // if key == "username" { + // return GetUserInfo(value.(string)) + // } + //} + //ctx.StatusCode(iris.StatusInternalServerError) + //ctx.SetErr(errors.New("系统错误,请联系管理员")) + //logrus.Errorln("token存在但获取用户信息失败") + //return model.Userinfo{} +} + +// GetUserInfo 根据用户名获取用户信息,先更新本地数据 +func GetUserInfo(username string) model.Userinfo { + if len(UserList) == 0 { + logrus.Warnln("暂存用户列表为空,刷新数据") + UpdateUserInfo() + } + for _, u := range UserList { + if u.Username == username { + return u + } + } + logrus.Warnln("未找到对应的用户信息") + return model.Userinfo{} +} + +// UpdateUserInfo 更新当前用户信息 +func UpdateUserInfo() { + db := database.GetInstance().GetMysqlDb() + if err := db.Find(&UserList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + logrus.Infoln("刷新暂存用户列表") +} diff --git a/api_file/utils/utils.go b/api_file/utils/utils.go new file mode 100644 index 0000000..0915ba0 --- /dev/null +++ b/api_file/utils/utils.go @@ -0,0 +1,235 @@ +package utils + +import ( + "bufio" + "encoding/json" + "fmt" + "github.com/kataras/iris/v12" + "github.com/shopspring/decimal" + "github.com/sirupsen/logrus" + "io" + "main/database" + "main/model" + "math/rand" + "net/http" + "net/url" + "os" + "path" + "reflect" + "regexp" + "runtime" + "strings" + "time" + "unsafe" +) + +// FormatRes 格式化result +func FormatRes(code int, msg string, data interface{}) ResponseBean { + return ResponseBean{ + Code: code, + Msg: msg, + Data: data, + } +} + +// GetEnvDefault 获取带默认值环境变量 +func GetEnvDefault(name string, defaultVal string) string { + val, ok := os.LookupEnv(name) + if ok { + return val + } else { + return defaultVal + } +} + +// FileRead 读取文件,返回行列表 +func FileRead(file string, condition bool) ([]string, error) { + f, err := os.Open(file) + var res []string + if err != nil { + return []string{}, err + } + defer func(f *os.File) { + err = f.Close() + if err != nil { + return + } + }(f) + reader := bufio.NewReader(f) + for { + line, _, err := reader.ReadLine() + if err != nil { + break + } + if condition && len(line) > 1 { + res = append(res, string(line)) + } + } + return res, nil +} + +func SendEmail(receiver []string, subject string, content string, test bool) error { + var emailUrl string + if !test { + emailUrl = fmt.Sprintf("https://git-ylsa0.cn/api_django/send_email/?subject=%s&receivers=%s&content=%s", url.QueryEscape(subject), strings.Join(receiver, ";"), url.QueryEscape(content)) + } else { + emailUrl = fmt.Sprintf("http://localhost:8000/api/send_email/?subject=%s&receivers=%s&content=%s", url.QueryEscape(subject), strings.Join(receiver, ";"), url.QueryEscape(content)) + } + resp, err := http.Get(emailUrl) + fmt.Println(emailUrl) + if err != nil { + logrus.Errorln("连接send_email接口失败:", err) + return err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + } + }(resp.Body) + body, _ := io.ReadAll(resp.Body) + var r ResApiUtils + //解析json结构 + err = json.Unmarshal(body, &r) + if err != nil { + logrus.Errorln("send_email接口结果json解析失败:", err) + return err + } + return nil +} + +// DataIsNil 判断数据是否为空 +func DataIsNil(arg interface{}) bool { + if reflect.ValueOf(arg).Kind().String() == "ptr" || reflect.ValueOf(arg).Kind().String() == "slice" { + if reflect.ValueOf(arg).IsValid() { + return true + } + } else { + if reflect.ValueOf(arg).IsZero() { + return true + } + } + return false +} + +// ErrHandle 错误处理 +func ErrHandle(ctx iris.Context, err error) bool { + if err != nil { + pc, _, _, _ := runtime.Caller(1) + f := runtime.FuncForPC(pc).Name() + db := database.GetInstance().GetMysqlDb() + if err1 := db.Create(&model.SysError{ + Username: GetLoginUser(ctx).Username, + Time: time.Now(), + Function: f, + ErrorInfo: err.Error(), + }); err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(err) + return true + } + return false +} + +// NewKey 取n位随机数 +func NewKey(n int) string { + const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890()-+*/~" + var src = rand.NewSource(time.Now().UnixNano()) + const ( + // 6 bits to represent a letter index + letterIdBits = 6 + // All 1-bits as many as letterIdBits + letterIdMask = 1<= 0; { + if remain == 0 { + cache, remain = src.Int63(), letterIdMax + } + if idx := int(cache & letterIdMask); idx < len(letters) { + b[i] = letters[idx] + i-- + } + cache >>= letterIdBits + remain-- + } + return *(*string)(unsafe.Pointer(&b)) +} + +// CheckListItem 判断item是否在list内 +func CheckListItem[T comparable](data []T, item T) bool { + for _, value := range data { + if value == item { + return true + } + } + return false +} + +// FileIsExist 判断路径是否存在 +func FileIsExist(path string) bool { + if _, err := os.Stat(path); os.IsNotExist(err) { + return false + } + return true +} + +// Round float取小数 +func Round(num float64, n int32) float64 { + res, _ := decimal.NewFromFloat(num).Round(n).Float64() + return res +} + +// GetFileType 获取文件类型 +func GetFileType(f string) string { + fileSuffix := path.Ext(f) + fileSuffix = strings.ToLower(fileSuffix) + patternFileSuffix := fmt.Sprintf("^%s,|,%s,|,%s$|%s", fileSuffix, fileSuffix, fileSuffix, fileSuffix) + regFileSuffix := regexp.MustCompile(patternFileSuffix) + for _, v := range SysSettings { + if strings.HasPrefix(v.Name, "fileType:") && regFileSuffix.MatchString(v.Value) { + return strings.Split(v.Name, "fileType:")[1] + } + } + //switch fileSuffix { + //case ".png", ".jpg", ".jpeg", ".bmp", ".gif": + // return "image" + //case ".mp4", ".m2v", ".mkv", ".rmvb", ".avi", ".flv", ".mov", ".m4v", ".wmv", ".f4v": + // return "video" + //case ".mp3", ".wav", ".flac": + // return "audio" + //case ".zip", ".rar", ".7z": + // return "zip" + //} + return "doc" +} + +// IntAbs 数字取绝对值 +func IntAbs(i int) int { + if i < 0 { + return -i + } else { + return i + } +} + +// Reverse 字符串反转 +func Reverse(s string) string { + a := []rune(s) + for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 { + a[i], a[j] = a[j], a[i] + } + return string(a) +} + +func GetRequestIp(ctx iris.Context) string { + realIp := ctx.Request().Header.Get("X-Real-IP") + if realIp != "" { + return realIp + } + ip := ctx.RemoteAddr() + return ip +} diff --git a/api_iris/Dockerfile b/api_iris/Dockerfile new file mode 100644 index 0000000..fd30816 --- /dev/null +++ b/api_iris/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:1.22.4 + +RUN mkdir -p /web \ + && mkdir /web/logs + +ENV GOPATH=/web +ENV GOPROXY=https://goproxy.cn,direct + +WORKDIR $GOPATH/api_iris + +COPY . $GOPATH/api_iris + +RUN go build . + +ENTRYPOINT ["./main"] \ No newline at end of file diff --git a/api_iris/config/config.dev.yaml b/api_iris/config/config.dev.yaml new file mode 100644 index 0000000..48d0a38 --- /dev/null +++ b/api_iris/config/config.dev.yaml @@ -0,0 +1,15 @@ +database: + dsn: web:Song1875.@tcp(43.154.168.226:3306)/web_vue?charset=utf8mb4&parseTime=True&loc=Local + prd: false + +logs: + log: logs + nginx: logs/nginx + +sys: + jwt: False + User: admin + +email: + username: 15822909392@163.com + password: RXWDMRGRNTZBNAML diff --git a/api_iris/config/config.go b/api_iris/config/config.go new file mode 100644 index 0000000..c9daa56 --- /dev/null +++ b/api_iris/config/config.go @@ -0,0 +1,31 @@ +package config + +import ( + "github.com/sirupsen/logrus" + "gopkg.in/yaml.v3" + "os" +) + +// Config 公共参数 +var Config settings + +// InitConfig 配置初始化 +func InitConfig(version string) error { + var file []byte + var err error + if version == "dev" { + file, err = os.ReadFile("./config/config.dev.yaml") + } else { + file, err = os.ReadFile("./config/config.prd.yaml") + } + if err != nil { + logrus.Errorln("Error reading config file:", err) + return err + } + err = yaml.Unmarshal(file, &Config) + if err != nil { + logrus.Errorln("Error parsing config file:", err) + return err + } + return nil +} diff --git a/api_iris/config/config.prd.yaml b/api_iris/config/config.prd.yaml new file mode 100644 index 0000000..3f993b3 --- /dev/null +++ b/api_iris/config/config.prd.yaml @@ -0,0 +1,15 @@ +database: + dsn: web_prd:SongPrd1875.@tcp(43.154.168.226:3306)/web_prd?charset=utf8mb4&parseTime=True&loc=Local + prd: true + +logs: + log: logs + nginx: logs/nginx + +sys: + jwt: True + User: + +email: + username: 15822909392@163.com + password: RXWDMRGRNTZBNAML diff --git a/api_iris/config/type.d.go b/api_iris/config/type.d.go new file mode 100644 index 0000000..1a437cc --- /dev/null +++ b/api_iris/config/type.d.go @@ -0,0 +1,22 @@ +package config + +type settings struct { + Logs *logs `yaml:"logs"` + Database *database `yaml:"database"` + Email *email `yaml:"email"` +} + +type logs struct { + Nginx string `yaml:"nginx"` + Log string `yaml:"log"` +} + +type database struct { + Dsn string `yaml:"dsn"` + Prd bool `yaml:"prd"` +} + +type email struct { + Username string `yaml:"username"` + Password string `yaml:"password"` +} diff --git a/api_iris/crontab/init.go b/api_iris/crontab/init.go new file mode 100644 index 0000000..a72b89e --- /dev/null +++ b/api_iris/crontab/init.go @@ -0,0 +1,40 @@ +package crontab + +import ( + "github.com/robfig/cron/v3" + "github.com/sirupsen/logrus" + "main/database" + "main/model" +) + +var MyCron *cron.Cron + +func InitAllCron() { + MyCron = cron.New(cron.WithSeconds()) + MyCron.Start() + db := database.GetInstance().GetMysqlDb() + var runningCron []model.RunningCrontab + if err := db.Where("deleted_at is null").Delete(&runningCron).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } +} + +func UpdateCronDb(id int, name string, status bool) { + db := database.GetInstance().GetMysqlDb() + var runningCron model.RunningCrontab + if status { + if err := db.Create(&model.RunningCrontab{ + Name: name, + CronId: id, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + } else { + if err := db.Delete(&runningCron, "cron_id = ?", id).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + } +} diff --git a/api_iris/crontab/nginxLog.go b/api_iris/crontab/nginxLog.go new file mode 100644 index 0000000..7d22f50 --- /dev/null +++ b/api_iris/crontab/nginxLog.go @@ -0,0 +1,70 @@ +package crontab + +import ( + "fmt" + "github.com/sirupsen/logrus" + "main/config" + "main/database" + "main/model" + "main/service/admin" + "main/utils" + "os" + "path" + "strings" + "time" +) + +// CornSaveNginxLog 定时任务处理nginx日志 +func CornSaveNginxLog() { + cPath, _ := os.Getwd() + logPath := path.Join(cPath, config.Config.Logs.Nginx) + fileList, _ := os.ReadDir(logPath) + db := database.GetInstance().GetMysqlDb() + var logDealList []model.LogFileDealLog + var resLogList []model.Logs + if err := db.Find(&logDealList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + for _, file := range fileList { + if strings.Contains(file.Name(), "access-") { + date := strings.Split(strings.Split(file.Name(), "access-")[1], ".")[0] + if getDateDealBool(date, logDealList) || date == time.Now().Format("2006-01-02") { + continue + } + logrus.Infoln(date, ":nginx日志开始处理") + if err := db.Where("time like ?", fmt.Sprintf("%s%%", date)).Delete(&resLogList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + logList, _ := utils.FileRead(path.Join(logPath, file.Name()), true) + for _, v := range logList { + c := make(chan model.Logs) + go admin.FormatLog(v, date, c) + resLogItem := <-c + if err := db.Create(&resLogItem).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + } + if err := db.Create(&model.LogFileDealLog{ + Date: date, + Success: true, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } + logrus.Infoln(date, ":nginx日志处理完成") + } + } +} + +// 获取当前日期是否已处理 +func getDateDealBool(date string, dealLog []model.LogFileDealLog) bool { + for _, v := range dealLog { + if v.Date == date && v.Success { + return true + } + } + return false +} diff --git a/api_iris/crontab/type.d.go b/api_iris/crontab/type.d.go new file mode 100644 index 0000000..c1d9b22 --- /dev/null +++ b/api_iris/crontab/type.d.go @@ -0,0 +1,5 @@ +package crontab + +type sysLogDateType struct { + Datetime string `json:"datetime"` +} diff --git a/api_iris/database/database.go b/api_iris/database/database.go new file mode 100644 index 0000000..5d22ef7 --- /dev/null +++ b/api_iris/database/database.go @@ -0,0 +1,85 @@ +package database + +import ( + "github.com/sirupsen/logrus" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "main/config" + "main/model" + "sync" +) + +var instance *MysqlConnectionPool +var once sync.Once +var db *gorm.DB +var err error + +// GetInstance 获取数据库连接池 +func GetInstance() *MysqlConnectionPool { + once.Do(func() { + instance = &MysqlConnectionPool{} + }) + return instance +} + +// InitDataPool 数据库初始化连接 +func (m *MysqlConnectionPool) InitDataPool() (isSuccess bool) { + dbConfig := config.Config.Database + if dbConfig.Prd { + db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{}) + } else { + db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Info), + }) + } + if err != nil { + logrus.Errorln("数据库配置失败:", err) + return false + } + return true +} + +// GetMysqlDb 获取数据库连接 +func (m *MysqlConnectionPool) GetMysqlDb() (dbCon *gorm.DB) { + return db +} + +// UpdateDbStruct 数据库数据结构更新 +func UpdateDbStruct() error { + err = db.AutoMigrate( + &model.Logs{}, + &model.Weather{}, + &model.DayKeys{}, + &model.JwtKeys{}, + &model.IpsLocation{}, + &model.User{}, + &model.Userinfo{}, + &model.UserAction{}, + &model.UserAutoLogin{}, + &model.LogFileDealLog{}, + &model.RunningCrontab{}, + &model.Balances{}, + &model.BalanceLogs{}, + &model.UserNotes{}, + &model.BackgammonRoom{}, + &model.SysInfo{}, + &model.SysInfoUpdateLog{}, + &model.ChessStatus{}, + &model.ChessStatusLog{}, + &model.Menus{}, + &model.SysIcons{}, + &model.SysSettings{}, + &model.SysError{}, + &model.Sudoku{}, + &model.SudokuStatus{}, + &model.SysLogs{}, + ) + if err != nil { + logrus.Errorln("数据库自动迁移失败:", err) + } + return err +} + +type MysqlConnectionPool struct { +} diff --git a/api_iris/go.mod b/api_iris/go.mod new file mode 100644 index 0000000..40c1c44 --- /dev/null +++ b/api_iris/go.mod @@ -0,0 +1,77 @@ +module main + +go 1.22.4 + +require ( + github.com/golang-jwt/jwt/v4 v4.5.1 + github.com/gorilla/websocket v1.5.3 + github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72 + github.com/jakehl/goid v1.1.0 + github.com/kataras/iris/v12 v12.2.11 + github.com/kataras/neffos v0.0.24-0.20240408172741-99c879ba0ede + github.com/robfig/cron/v3 v3.0.1 + github.com/shopspring/decimal v1.4.0 + gopkg.in/yaml.v3 v3.0.1 + gorm.io/driver/mysql v1.5.7 + gorm.io/gorm v1.25.10 +) + +require ( + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect + github.com/CloudyKit/jet/v6 v6.2.0 // indirect + github.com/Joker/jade v1.1.3 // indirect + github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/antonfisher/nested-logrus-formatter v1.3.1 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/flosch/pongo2/v4 v4.0.2 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.3.2 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/css v1.0.0 // indirect + github.com/iris-contrib/schema v0.0.6 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kataras/blocks v0.0.8 // indirect + github.com/kataras/golog v0.1.11 // indirect + github.com/kataras/pio v0.0.13 // indirect + github.com/kataras/sitemap v0.0.6 // indirect + github.com/kataras/tunnel v0.0.4 // indirect + github.com/klauspost/compress v1.17.7 // indirect + github.com/mailgun/raymond/v2 v2.0.48 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mediocregopher/radix/v3 v3.8.1 // indirect + github.com/microcosm-cc/bluemonday v1.0.26 // indirect + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/nats-io/nats.go v1.34.1 // indirect + github.com/nats-io/nkeys v0.4.7 // indirect + github.com/nats-io/nuid v1.0.1 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/schollz/closestmatch v2.1.0+incompatible // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/tdewolff/minify/v2 v2.20.19 // indirect + github.com/tdewolff/parse/v2 v2.7.12 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/yosssi/ace v0.0.5 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect +) diff --git a/api_iris/go.sum b/api_iris/go.sum new file mode 100644 index 0000000..ed3f525 --- /dev/null +++ b/api_iris/go.sum @@ -0,0 +1,234 @@ +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= +github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= +github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= +github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= +github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ= +github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= +github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.3.2 h1:zlnbNHxumkRvfPWgfXu8RBwyNR1x8wh9cf5PTOCqs9Q= +github.com/gobwas/ws v1.3.2/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 h1:4gjrh/PN2MuWCCElk8/I4OCKRKWCCo2zEct3VKCbibU= +github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/iris-contrib/httpexpect/v2 v2.15.2 h1:T9THsdP1woyAqKHwjkEsbCnMefsAFvk8iJJKokcJ3Go= +github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE= +github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72 h1:wbkA/QXv1RZmuY2iLvsgmHeiGq4DNvv2Rhj5PQ2oHTI= +github.com/iris-contrib/middleware/jwt v0.0.0-20240502084239-34f27409ce72/go.mod h1:hIyBTK1zUxUaC4Hu8Ba9Z70r2S5ET4+ZKNescqjXld0= +github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= +github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/jakehl/goid v1.1.0 h1:c08GO8z16wWJtfQhyiD8BQRFkpf1oDxaPmA+uYAG+50= +github.com/jakehl/goid v1.1.0/go.mod h1:V6bQh+tr2Oay5WHL0jmTTJWrABYIO+cs4/P6e1prV1o= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible h1:jdpOPRN1zP63Td1hDQbZW73xKmzDvZHzVdNYxhnTMDA= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kataras/blocks v0.0.8 h1:MrpVhoFTCR2v1iOOfGng5VJSILKeZZI+7NGfxEh3SUM= +github.com/kataras/blocks v0.0.8/go.mod h1:9Jm5zx6BB+06NwA+OhTbHW1xkMOYxahnqTN5DveZ2Yg= +github.com/kataras/golog v0.1.11 h1:dGkcCVsIpqiAMWTlebn/ZULHxFvfG4K43LF1cNWSh20= +github.com/kataras/golog v0.1.11/go.mod h1:mAkt1vbPowFUuUGvexyQ5NFW6djEgGyxQBIARJ0AH4A= +github.com/kataras/iris/v12 v12.2.11 h1:sGgo43rMPfzDft8rjVhPs6L3qDJy3TbBrMD/zGL1pzk= +github.com/kataras/iris/v12 v12.2.11/go.mod h1:uMAeX8OqG9vqdhyrIPv8Lajo/wXTtAF43wchP9WHt2w= +github.com/kataras/neffos v0.0.24-0.20240408172741-99c879ba0ede h1:ZnSJQ+ri9x46Yz15wHqSb93Q03yY12XMVLUFDJJ0+/g= +github.com/kataras/neffos v0.0.24-0.20240408172741-99c879ba0ede/go.mod h1:i0dtcTbpnw1lqIbojYtGtZlu6gDWPxJ4Xl2eJ6oQ1bE= +github.com/kataras/pio v0.0.13 h1:x0rXVX0fviDTXOOLOmr4MUxOabu1InVSTu5itF8CXCM= +github.com/kataras/pio v0.0.13/go.mod h1:k3HNuSw+eJ8Pm2lA4lRhg3DiCjVgHlP8hmXApSej3oM= +github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= +github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= +github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= +github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= +github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mediocregopher/radix/v3 v3.8.1 h1:rOkHflVuulFKlwsLY01/M2cM2tWCjDoETcMqKbAWu1M= +github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= +github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/nats-io/nats.go v1.34.1 h1:syWey5xaNHZgicYBemv0nohUPPmaLteiBEUT6Q5+F/4= +github.com/nats-io/nats.go v1.34.1/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8= +github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI= +github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= +github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= +github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= +github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tdewolff/minify/v2 v2.20.19 h1:tX0SR0LUrIqGoLjXnkIzRSIbKJ7PaNnSENLD4CyH6Xo= +github.com/tdewolff/minify/v2 v2.20.19/go.mod h1:ulkFoeAVWMLEyjuDz1ZIWOA31g5aWOawCFRp9R/MudM= +github.com/tdewolff/parse/v2 v2.7.12 h1:tgavkHc2ZDEQVKy1oWxwIyh5bP4F5fEh/JmBwPP/3LQ= +github.com/tdewolff/parse/v2 v2.7.12/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= +github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= +github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.10 h1:dQpO+33KalOA+aFYGlK+EfxcI5MbO7EP2yYygwh9h+s= +gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= +moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE= diff --git a/api_iris/jwtSet/jwt.go b/api_iris/jwtSet/jwt.go new file mode 100644 index 0000000..1785811 --- /dev/null +++ b/api_iris/jwtSet/jwt.go @@ -0,0 +1,78 @@ +package jwtSet + +import ( + "github.com/iris-contrib/middleware/jwt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "time" +) + +var Jwt *jwt.Middleware +var keys model.JwtKeys + +func GetJwtKeys() model.JwtKeys { + db := database.GetInstance().GetMysqlDb() + if utils.DataIsNil(keys) || keys.Date != time.Now().Format("2006-01-02") { + keys = model.JwtKeys{} + if err := db.Where("date = ? and token = ''", time.Now().Format("2006-01-02")).First(&keys).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + //return model.JwtKeys{} + } + } + if keys.Key == "" { + keys.Date = time.Now().Format("2006-01-02") + keys.Key = utils.NewKey(32) + if err := db.Create(&keys).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return model.JwtKeys{} + } + } + if !keys.Updated && !utils.DataIsNil(Jwt) { + UpdateJwt() + } + return keys +} +func Init() { + if utils.DataIsNil(keys) { + GetJwtKeys() + } + Jwt = jwt.New(jwt.Config{ + ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { + return []byte(keys.Key), nil + }, + ErrorHandler: func(context iris.Context, err error) { + if err == nil { + return + } + context.StopExecution() + context.StatusCode(iris.StatusUnauthorized) + context.SetErr(err) + }, + Extractor: jwt.FromAuthHeader, + SigningMethod: jwt.SigningMethodHS256, + }) + db := database.GetInstance().GetMysqlDb() + keys.Updated = true + if err := db.Updates(&keys).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } +} + +func UpdateJwt() { + if utils.DataIsNil(keys) { + GetJwtKeys() + } + Jwt.Config.ValidationKeyGetter = func(token *jwt.Token) (interface{}, error) { + return []byte(keys.Key), nil + } + db := database.GetInstance().GetMysqlDb() + keys.Updated = true + if err := db.Updates(&keys).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + return + } +} diff --git a/api_iris/main.go b/api_iris/main.go new file mode 100644 index 0000000..3a99e65 --- /dev/null +++ b/api_iris/main.go @@ -0,0 +1,119 @@ +package main + +import ( + "fmt" + nested "github.com/antonfisher/nested-logrus-formatter" + "github.com/kataras/iris/v12" + "github.com/kataras/iris/v12/middleware/accesslog" + "github.com/kataras/iris/v12/websocket" + "github.com/sirupsen/logrus" + "main/config" + "main/crontab" + "main/database" + "main/jwtSet" + "main/service" + "main/service/admin" + "main/service/ws" + "main/utils" + "os" + "path" + "time" +) + +func main() { + logrus.SetFormatter(&nested.Formatter{HideKeys: true, TimestampFormat: time.RFC3339}) + //配置文件初始化 + err := config.InitConfig(utils.GetEnvDefault("version", "dev")) + if err != nil { + logrus.Errorln("配置文件初始化失败:", err) + return + } + logrus.Infoln("配置文件初始化完成") + //日志初始化 + ac := makeAccessLog() + //应用初始化 + app := iris.New() + //应用ac-log + app.UseRouter(ac.Handler) + //错误处理 + app.OnAnyErrorCode(handler) + //数据库连接初始化 + if !database.GetInstance().InitDataPool() { + return + } + logrus.Infoln("数据库连接初始化完成") + if e := database.UpdateDbStruct(); e != nil { + logrus.Errorln("数据库初始化失败:", e) + return + } + //初始化用户信息,系统配置信息,菜单列表,本地IP地址信息 + utils.UpdateUserInfo() + utils.UpdateSysSettings() + utils.UpdateMenuList() + admin.UpdateLocalIpList() + logrus.Infoln("数据库结构初始化完成") + jwtSet.Init() + logrus.Infoln("jwt认证初始化完成") + crontab.InitAllCron() + id, err := crontab.MyCron.AddFunc("0 0 0 * * *", func() { + utils.UpdateUserInfo() + jwtSet.GetJwtKeys() + }) + if err != nil { + logrus.Errorln("cron任务添加失败:", err) + return + } + crontab.UpdateCronDb(int(id), "每天初始化jwt密钥", true) + if utils.GetEnvDefault("version", "dev") == "prd" { + //id, err = crontab.MyCron.AddFunc("0 10 * * * *", func() { + // crontab.UpdateSysInfo("") + //}) + //crontab.UpdateCronDb(int(id), "每小时10分同步历史系统信息记录", true) + id, err = crontab.MyCron.AddFunc("0 30 0 * * *", func() { + crontab.CornSaveNginxLog() + }) + crontab.UpdateCronDb(int(id), "每天00:30同步nginx日志", true) + } + logrus.Infoln("定时任务初始化完成") + //接口组 + app.PartyFunc("/api", service.Apis) + app.PartyFunc("/admin", service.Admin) + app.PartyFunc("/test", service.Test) + logrus.Infoln("接口组配置完成") + //启动websocket + wss := ws.SetupWebsocket() + app.Get("/ws", websocket.Handler(wss)) + logrus.Infoln("websocket配置完成") + //应用启动 + logrus.Infoln("应用启动") + err = app.Run(iris.Addr(":8080")) + if err != nil { + return + } +} + +// 生成acLog实例 +func makeAccessLog() *accesslog.AccessLog { + cPath, _ := os.Getwd() + ac := accesslog.File(path.Join(cPath, config.Config.Logs.Log, fmt.Sprintf("access-%s.log", time.Now().Format("2006-01-02")))) + ac.AddOutput(os.Stdout) + ac.IP = true + ac.Delim = ' ' + ac.ResponseBody = false + return ac +} + +// 接口错误处理 +func handler(ctx iris.Context) { + if ctx.GetErr() != nil { + err := ctx.JSON(utils.FormatRes(ctx.GetStatusCode(), ctx.GetErr().Error(), nil)) + if err != nil { + return + } + } else { + err := ctx.JSON(utils.FormatRes(ctx.GetStatusCode(), "", nil)) + if err != nil { + return + } + } +} diff --git a/api_iris/model/backgammon.go b/api_iris/model/backgammon.go new file mode 100644 index 0000000..0c2419d --- /dev/null +++ b/api_iris/model/backgammon.go @@ -0,0 +1,12 @@ +package model + +import "gorm.io/gorm" + +type BackgammonRoom struct { + RoomId int `json:"room_id"` + Player string `json:"player"` + Winner string `json:"winner"` + Current string `json:"current"` + PawnStatus string `json:"pawn_status"` + gorm.Model +} diff --git a/api_iris/model/balance.go b/api_iris/model/balance.go new file mode 100644 index 0000000..dce461a --- /dev/null +++ b/api_iris/model/balance.go @@ -0,0 +1,19 @@ +package model + +import "gorm.io/gorm" + +type Balances struct { + Username string `json:"username"` + Card string `json:"card"` + Type bool `gorm:"default:false" json:"type"` //1:支出型;0:收入型 + Balance float64 `json:"balance"` + gorm.Model +} + +type BalanceLogs struct { + Username string + Card string + Date string + Balance float64 + gorm.Model +} diff --git a/api_iris/model/chess.go b/api_iris/model/chess.go new file mode 100644 index 0000000..074a722 --- /dev/null +++ b/api_iris/model/chess.go @@ -0,0 +1,28 @@ +package model + +import ( + "gorm.io/gorm" + "time" +) + +type ChessStatus struct { + gorm.Model + Players string `json:"players"` + Current string `json:"current"` + IsEnd bool `json:"is_end"` + Status string `json:"status"` + Winner string `json:"winner"` + ChessId string `json:"chess_id"` +} + +type ChessStatusLog struct { + gorm.Model + RoomId uint `json:"roomId"` + Current string `json:"current"` + Players string `json:"players"` + IsEnd bool `json:"is_end"` + Status string `json:"status"` + Winner string `json:"winner"` + ChessId string `json:"chess_id"` + Time time.Time `json:"time"` +} diff --git a/api_iris/model/crontab.go b/api_iris/model/crontab.go new file mode 100644 index 0000000..2be7620 --- /dev/null +++ b/api_iris/model/crontab.go @@ -0,0 +1,9 @@ +package model + +import "gorm.io/gorm" + +type RunningCrontab struct { + Name string + CronId int + gorm.Model +} diff --git a/api_iris/model/keys.go b/api_iris/model/keys.go new file mode 100644 index 0000000..b23a4d3 --- /dev/null +++ b/api_iris/model/keys.go @@ -0,0 +1,20 @@ +package model + +import "gorm.io/gorm" + +// DayKeys 每天对应key表 +type DayKeys struct { + Date string + Key string + AesKey string + User string + gorm.Model +} +type JwtKeys struct { + Username string + Date string + Key string + Token string + Updated bool `gorm:"default:false"` + gorm.Model +} diff --git a/api_iris/model/logs.go b/api_iris/model/logs.go new file mode 100644 index 0000000..bd0e743 --- /dev/null +++ b/api_iris/model/logs.go @@ -0,0 +1,31 @@ +package model + +import "gorm.io/gorm" + +// Logs 日志表 +type Logs struct { + Method string `json:"method,omitempty"` + Path string `json:"path,omitempty"` + Status string `json:"status,omitempty"` + UserAgent string `json:"user_agent,omitempty"` + Time string `json:"time,omitempty"` + Location string `json:"location,omitempty"` + Ip string `json:"ip,omitempty"` + gorm.Model +} + +type LogFileDealLog struct { + Date string + Success bool + gorm.Model +} + +// SysLogs 系统容器日志表 +type SysLogs struct { + Time string `json:"time,omitempty"` + ContainerName string `json:"container_name,omitempty"` + ContainerImage string `json:"container_image,omitempty"` + Message string `json:"message,omitempty"` + Offset int `json:"offset,omitempty"` + gorm.Model +} diff --git a/api_iris/model/menus.go b/api_iris/model/menus.go new file mode 100644 index 0000000..11a5170 --- /dev/null +++ b/api_iris/model/menus.go @@ -0,0 +1,14 @@ +package model + +import "gorm.io/gorm" + +type Menus struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` + UserType string `json:"user_type"` + WhiteList string `json:"white_list"` + gorm.Model +} diff --git a/api_iris/model/note.go b/api_iris/model/note.go new file mode 100644 index 0000000..151bc92 --- /dev/null +++ b/api_iris/model/note.go @@ -0,0 +1,9 @@ +package model + +import "gorm.io/gorm" + +type UserNotes struct { + Username string `json:"username"` + Content string `json:"content"` + gorm.Model +} diff --git a/api_iris/model/sudoku.go b/api_iris/model/sudoku.go new file mode 100644 index 0000000..ca3f3e0 --- /dev/null +++ b/api_iris/model/sudoku.go @@ -0,0 +1,18 @@ +package model + +import "gorm.io/gorm" + +type Sudoku struct { + Sudoku string `json:"sudoku"` + Username string `json:"username"` + Result string `json:"result"` + gorm.Model +} + +type SudokuStatus struct { + SudokuId uint `json:"sudoku_id"` + Username string `json:"username"` + Status string `json:"status"` + Complete bool `json:"complete"` + gorm.Model +} diff --git a/api_iris/model/sysError.go b/api_iris/model/sysError.go new file mode 100644 index 0000000..0cc0806 --- /dev/null +++ b/api_iris/model/sysError.go @@ -0,0 +1,14 @@ +package model + +import ( + "gorm.io/gorm" + "time" +) + +type SysError struct { + Username string `json:"username"` + Time time.Time `json:"time"` + Function string `json:"function"` + ErrorInfo string `json:"error_info"` + gorm.Model +} diff --git a/api_iris/model/sysSettings.go b/api_iris/model/sysSettings.go new file mode 100644 index 0000000..368b367 --- /dev/null +++ b/api_iris/model/sysSettings.go @@ -0,0 +1,17 @@ +package model + +import "gorm.io/gorm" + +// SysIcons 系统图标库 +type SysIcons struct { + Icon string `json:"icon"` + gorm.Model +} + +type SysSettings struct { + Name string `json:"name"` + CnName string `json:"cn_name"` + Value string `json:"value"` + DType string `json:"d_type"` + gorm.Model +} diff --git a/api_iris/model/sysinfo.go b/api_iris/model/sysinfo.go new file mode 100644 index 0000000..bbded6a --- /dev/null +++ b/api_iris/model/sysinfo.go @@ -0,0 +1,55 @@ +package model + +import "gorm.io/gorm" + +type SysInfo struct { + Date string `json:"date" gorm:"index:select_info"` + Datetime string `json:"datetime" gorm:"index:datetime_index"` + Username string `json:"username" gorm:"index:select_info"` + Hostname string `json:"hostname"` + Ip string `json:"ip" gorm:"index:select_info"` + SysVersion string `json:"sysVersion"` + PhysicalCount int `json:"physicalCount"` + LogicalCount int `json:"logicalCount"` + CpuPer float64 `json:"cpuPer"` + MemTotal string `json:"memTotal"` + MemUsed string `json:"memUsed"` + MemPer float64 `json:"memPer"` + DiskPoint string `json:"diskPoint"` + DiskTotal string `json:"diskTotal"` + DiskUsed string `json:"diskUsed"` + DiskPer string `json:"diskPer"` + NetSent int64 `json:"netSent"` + NetRec int64 `json:"netRec"` + SentSpeed string `json:"sentSpeed"` + RecSpeed string `json:"recSpeed"` + gorm.Model +} + +type SysInfoOld struct { + Datetime string `json:"datetime" gorm:"index:datetime_index"` + Username string `json:"username"` + Hostname string `json:"hostname"` + Ip string `json:"ip"` + SysVersion string `json:"sysVersion"` + PhysicalCount int `json:"physicalCount"` + LogicalCount int `json:"logicalCount"` + CpuPer float64 `json:"cpuPer"` + MemTotal string `json:"memTotal"` + MemUsed string `json:"memUsed"` + MemPer float64 `json:"memPer"` + DiskPoint string `json:"diskPoint"` + DiskTotal string `json:"diskTotal"` + DiskUsed string `json:"diskUsed"` + DiskPer string `json:"diskPer"` + NetSent int64 `json:"netSent"` + NetRec int64 `json:"netRec"` + SentSpeed string `json:"sentSpeed"` + RecSpeed string `json:"recSpeed"` +} + +type SysInfoUpdateLog struct { + Datetime string `json:"datetime"` + Update bool `json:"update"` + gorm.Model +} diff --git a/api_iris/model/user.go b/api_iris/model/user.go new file mode 100644 index 0000000..c47771c --- /dev/null +++ b/api_iris/model/user.go @@ -0,0 +1,38 @@ +package model + +import "gorm.io/gorm" + +// User 用户登录信息表 +type User struct { + Username string + Password string + Date string + ConfirmCode string + gorm.Model +} + +// Userinfo 用户信息表 +type Userinfo struct { + Username string `json:"username"` + Avatar string `json:"avatar"` + Nickname string `json:"nickname"` + Mobile string `json:"mobile"` + Email string `json:"email"` + Location string `json:"location"` + Type string `json:"type"` + gorm.Model +} + +// UserAction 用户行为表 +type UserAction struct { + Username string + Action string + gorm.Model +} + +type UserAutoLogin struct { + Username string + DeviceId string + Location string + gorm.Model +} diff --git a/api_iris/model/utils.go b/api_iris/model/utils.go new file mode 100644 index 0000000..a52a5e3 --- /dev/null +++ b/api_iris/model/utils.go @@ -0,0 +1,10 @@ +package model + +import "gorm.io/gorm" + +// IpsLocation ip转地址表 +type IpsLocation struct { + Ip string + Location string + gorm.Model +} diff --git a/api_iris/model/weather.go b/api_iris/model/weather.go new file mode 100644 index 0000000..52cd3ce --- /dev/null +++ b/api_iris/model/weather.go @@ -0,0 +1,11 @@ +package model + +import "gorm.io/gorm" + +// Weather 每日天气表 +type Weather struct { + Date string + Location string + Weather string + gorm.Model +} diff --git a/api_iris/service/admin/init.go b/api_iris/service/admin/init.go new file mode 100644 index 0000000..b46cb57 --- /dev/null +++ b/api_iris/service/admin/init.go @@ -0,0 +1,25 @@ +package admin + +import ( + "errors" + "github.com/kataras/iris/v12" + "main/utils" +) + +func Admin(ctx iris.Context) { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "adminPage")) + if err != nil { + return + } +} + +// CheckAdmin 检查admin权限 +func checkAdmin(ctx iris.Context) { + user := utils.GetLoginUser(ctx) + if user.Type != "admin" { + ctx.StatusCode(iris.StatusForbidden) + ctx.SetErr(errors.New("权限不足")) + return + } + ctx.Next() +} diff --git a/api_iris/service/admin/logs.go b/api_iris/service/admin/logs.go new file mode 100644 index 0000000..e85b54b --- /dev/null +++ b/api_iris/service/admin/logs.go @@ -0,0 +1,199 @@ +package admin + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "gorm.io/gorm" + "main/config" + "main/database" + "main/model" + "main/utils" + "os" + "path" + "strconv" + "strings" + "time" +) + +var ipLocationList []model.IpsLocation + +func getLogStats(ctx iris.Context) { + var logStats []resLogStats + db := database.GetInstance().GetMysqlDb() + if err := db.Model(&model.Logs{}).Select("left(time, 10) name", "count(1) value").Order("left(time,10)").Group("left(time,10)").Scan(&logStats).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", logStats)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func getLogDetail(ctx iris.Context) { + var logs []model.Logs + date := ctx.URLParam("date") + db := database.GetInstance().GetMysqlDb() + if err := db.Where("left(time,10) = ?", date).Find(&logs).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", logs)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func getSysLogs(ctx iris.Context) { + var logs []model.SysLogs + var resLogs []model.SysLogs + startTime := ctx.URLParam("start_time") + endTime := ctx.URLParam("end_time") + containerName := ctx.URLParam("container_name") + message := ctx.URLParam("message") + db := database.GetInstance().GetMysqlDb() + //生成子查询 + query := db.Model(&model.SysLogs{}) + if startTime == "" { + startTime = time.Date(2000, 0, 1, 0, 0, 0, 0, time.Local).Format("2006-01-02 15:04:05") + } + if endTime == "" { + endTime = time.Now().Format("2006-01-02 15:04:05") + } + query.Where("time >= ? and time <= ?", startTime, endTime) + if containerName != "" { + query.Where("container_name = ?", containerName) + } + //查询,限制1000条日志 + if err := query.Order("time desc").Limit(1000).Find(&logs).Error; err != nil { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("系统错误,请联系管理员")) + logrus.Errorln("查询容器日志sql失败:", err, "查询参数:", startTime, endTime, containerName) + return + } + //过滤包含message内容 + if message != "" { + for _, log := range logs { + if strings.Contains(log.Message, message) { + resLogs = append(resLogs, log) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, strconv.Itoa(len(resLogs)), resLogs)) + if err != nil { + return + } + } else { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, strconv.Itoa(len(logs)), logs)) + if err != nil { + return + } + } +} + +// 获取日志容器名称列表 +func getSysLogsContainerList(ctx iris.Context) { + var list []string + db := database.GetInstance().GetMysqlDb() + if err := db.Model(&model.SysLogs{}).Distinct("container_name").Find(&list).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", list)) + if err != nil { + return + } +} + +// 手动保存日志 +func saveLogs(ctx iris.Context) { + cPath, _ := os.Getwd() + logPath := path.Join(path.Join(cPath, config.Config.Logs.Nginx)) + fileList, err := os.ReadDir(logPath) + if utils.ErrHandle(ctx, err) { + return + } + var resLogList []model.Logs + var logDealList []model.LogFileDealLog + db := database.GetInstance().GetMysqlDb() + if err1 := db.Find(&logDealList).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + for _, file := range fileList { + if strings.Contains(file.Name(), "access-") { + date := strings.Split(strings.Split(file.Name(), "access-")[1], ".")[0] + if checkDate(date, logDealList) { + continue + } + if err1 := db.Where("time like ?", fmt.Sprintf("%s%%", date)).Delete(&resLogList).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + logList, err := utils.FileRead(path.Join(logPath, file.Name()), true) + if utils.ErrHandle(ctx, err) { + return + } + for _, v := range logList { + c := make(chan model.Logs) + go FormatLog(v, date, c) + resLogItem := <-c + if err1 := db.Create(&resLogItem).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + resLogList = append(resLogList, resLogItem) + } + if err1 := db.Create(&model.LogFileDealLog{ + Date: date, + Success: true, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", resLogList)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 判断日期是否已处理 +func checkDate(date string, list []model.LogFileDealLog) bool { + for _, v := range list { + if v.Date == date && v.Success { + return true + } + } + return false +} + +// 格式化日志内时间格式 +func formatTime(date string, s string) string { + l := strings.Split(s, ":") + return fmt.Sprintf("%s %s:%s:%s", date, l[1], l[2], l[3]) +} + +// 从本地ipLocationList记录中获取IP对应地址 +func getLocalIpAddr(ip string) string { + for _, v := range ipLocationList { + if v.Ip == ip { + return v.Location + } + } + return "" +} + +// 从接口中获取IP对应地址 +func getIpAddr(ip string) (string, error) { + db := database.GetInstance().GetMysqlDb() + location, err := utils.GetIpLocation(ip) + if err != nil { + return "", err + } + ipItem := model.IpsLocation{ + Ip: ip, + Location: location, + Model: gorm.Model{}, + } + if err1 := db.Create(&ipItem).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + UpdateLocalIpList() + return location, nil +} diff --git a/api_iris/service/admin/logsExport.go b/api_iris/service/admin/logsExport.go new file mode 100644 index 0000000..62f38f6 --- /dev/null +++ b/api_iris/service/admin/logsExport.go @@ -0,0 +1,85 @@ +package admin + +import ( + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/jwtSet" + "main/model" + "main/utils" + "strings" +) + +func Logs(party iris.Party) { + party.Post("/", saveLogs) + party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getLogStats) + party.Get("/detail", jwtSet.Jwt.Serve, checkAdmin, getLogDetail) + party.Get("/sys", jwtSet.Jwt.Serve, checkAdmin, getSysLogs) + party.Get("/log-container-list", jwtSet.Jwt.Serve, checkAdmin, getSysLogsContainerList) +} + +// FormatLog 对日志内容切分,格式化数据 +func FormatLog(logItem string, date string, c chan model.Logs) { + var resLogItem model.Logs + resLogItem.Ip = strings.Split(logItem, " ")[0] + resLogItem.Location = GetIpLocation(resLogItem.Ip) + //resLogItem.Location = getLocalIpAddr(resLogItem.Ip) + //if resLogItem.Location == "" { + // resLogItem.Location, _ = getIpAddr(resLogItem.Ip) + //} + resLogItem.Time = formatTime(date, strings.Split(strings.Split(logItem, "[")[1], "]")[0]) + if strings.Split(logItem, "\"")[1] != "" { + if strings.Contains(strings.Split(logItem, "\"")[1], " /") { + resLogItem.Method = strings.Split(strings.Split(logItem, "\"")[1], " ")[0] + resLogItem.Path = strings.Split(strings.Split(logItem, "\"")[1], " ")[1] + } else { + resLogItem.Method = "" + resLogItem.Path = strings.Split(logItem, "\"")[1] + } + resLogItem.Status = strings.Split(strings.Split(logItem, "\" ")[1], " ")[0] + } + resLogItem.UserAgent = strings.Split(logItem, "\"")[5] + c <- resLogItem +} + +// GetIpLocation 获取IP对应的地址 +func GetIpLocation(ip string) string { + if len(ipLocationList) == 0 { + UpdateLocalIpList() + } + location := getLocalIpAddr(ip) + if location == "" { + location, _ = getIpAddr(ip) + } + return location +} + +func UpdateLocalIpList() { + var nullDataList []nullData + db := database.GetInstance().GetMysqlDb() + if err := db.Model(&model.Logs{}). + Distinct("logs.ip", "ips_locations.location"). + Where("ips_locations.location is null"). + Joins("left join ips_locations on logs.ip=ips_locations.ip"). + Scan(&nullDataList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(nullDataList) != 0 { + for _, data := range nullDataList { + location, err := utils.GetIpLocation(data.IP) + if err != nil { + logrus.Errorln(data.IP, "IP地址获取失败", err) + } + if err = db.Create(&model.IpsLocation{ + Ip: data.IP, + Location: location, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + } + if err := db.Distinct("ip, location").Find(&ipLocationList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + logrus.Infoln("更新本地IP地址列表") +} diff --git a/api_iris/service/admin/menus.go b/api_iris/service/admin/menus.go new file mode 100644 index 0000000..c392efb --- /dev/null +++ b/api_iris/service/admin/menus.go @@ -0,0 +1,103 @@ +package admin + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" +) + +func getMenu(ctx iris.Context) { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", utils.MenuList)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addMenu(ctx iris.Context) { + var param model.Menus + err := ctx.ReadJSON(¶m) + if utils.ErrHandle(ctx, err) || utils.DataIsNil(param) { + return + } + if (len(param.MenuId) != 3 && len(param.MenuId) != 5) || param.MenuId[0:3] == "000" { + utils.ErrHandle(ctx, errors.New("菜单ID格式错误")) + return + } + if checkMenuExist(param) { + utils.ErrHandle(ctx, errors.New("菜单ID已存在")) + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Create(¶m).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } + utils.UpdateMenuList() +} + +func updateMenu(ctx iris.Context) { + var param model.Menus + err := ctx.ReadJSON(¶m) + if utils.ErrHandle(ctx, err) || utils.DataIsNil(param) { + return + } + if (len(param.MenuId) != 3 && len(param.MenuId) != 5) || param.MenuId[0:3] == "000" { + utils.ErrHandle(ctx, errors.New("菜单ID格式错误")) + return + } + if !checkMenuIDExist(param) || checkMenuExist(param) { + utils.ErrHandle(ctx, errors.New("菜单ID已存在")) + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Save(¶m).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } + utils.UpdateMenuList() +} + +func deleteMenu(ctx iris.Context) { + menuId := ctx.URLParam("menu_id") + db := database.GetInstance().GetMysqlDb() + utils.UpdateMenuList() + for _, menu := range utils.MenuList { + if menu.MenuId == menuId || menu.MenuId[0:3] == menuId { + if err := db.Delete(&menu).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } + utils.UpdateMenuList() +} + +func checkMenuExist(menu model.Menus) bool { + for _, m := range utils.MenuList { + if menu.MenuId == m.MenuId && menu.ID != m.ID { + return true + } + } + return false +} + +func checkMenuIDExist(menu model.Menus) bool { + for _, m := range utils.MenuList { + if menu.ID == m.ID { + return true + } + } + return false +} diff --git a/api_iris/service/admin/menusExport.go b/api_iris/service/admin/menusExport.go new file mode 100644 index 0000000..17b8fc9 --- /dev/null +++ b/api_iris/service/admin/menusExport.go @@ -0,0 +1,13 @@ +package admin + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Menus(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getMenu) + party.Post("/", jwtSet.Jwt.Serve, checkAdmin, addMenu) + party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateMenu) + party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, deleteMenu) +} diff --git a/api_iris/service/admin/sysSettings.go b/api_iris/service/admin/sysSettings.go new file mode 100644 index 0000000..5e4f8f8 --- /dev/null +++ b/api_iris/service/admin/sysSettings.go @@ -0,0 +1,106 @@ +package admin + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "strings" +) + +func getSysSettings(ctx iris.Context) { + var res []resSysSettings + var resSysSettingsData []model.SysSettings + var currentList []string + name := ctx.Params().GetString("name") + for _, sysSetting := range utils.SysSettings { + if sysSetting.DType == "option" { + sysSetting.Name = strings.Split(sysSetting.Name, ":")[0] + } + if (name != "" && sysSetting.Name != name) || utils.CheckListItem(currentList, sysSetting.Name) { + continue + } else { + resSysSettingsData = nil + for _, v := range utils.SysSettings { + if strings.Split(v.Name, ":")[0] == sysSetting.Name { + resSysSettingsData = append(resSysSettingsData, v) + } + } + currentList = append(currentList, sysSetting.Name) + res = append(res, resSysSettings{Name: sysSetting.Name, Data: resSysSettingsData}) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addSysSettings(ctx iris.Context) { + var params model.SysSettings + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if !checkExist(params) { + if err1 := db.Create(¶ms).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + utils.UpdateSysSettings() + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func delSettings(ctx iris.Context) { + var params model.SysSettings + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Delete(¶ms).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + utils.UpdateSysSettings() + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func updateSettings(ctx iris.Context) { + var params model.SysSettings + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + if !checkExist(params) { + if utils.ErrHandle(ctx, errors.New("配置信息不存在")) { + return + } + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Save(¶ms).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + utils.UpdateSysSettings() + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func checkExist(setting model.SysSettings) bool { + for _, sysSetting := range utils.SysSettings { + if setting.Name == sysSetting.Name && setting.Value == sysSetting.Value { + return true + } + } + return false +} diff --git a/api_iris/service/admin/sysSettingsExport.go b/api_iris/service/admin/sysSettingsExport.go new file mode 100644 index 0000000..1aa58d7 --- /dev/null +++ b/api_iris/service/admin/sysSettingsExport.go @@ -0,0 +1,13 @@ +package admin + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func SysSettings(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getSysSettings) + party.Post("/", jwtSet.Jwt.Serve, checkAdmin, addSysSettings) + party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, delSettings) + party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateSettings) +} diff --git a/api_iris/service/admin/type.d.go b/api_iris/service/admin/type.d.go new file mode 100644 index 0000000..ac22666 --- /dev/null +++ b/api_iris/service/admin/type.d.go @@ -0,0 +1,27 @@ +package admin + +import "main/model" + +// logs----------------------------------------------------------------------------- +type resIpLocation struct { + Flag bool `json:"flag"` + Data resIpLocationData `json:"data"` +} +type resIpLocationData struct { + Ip string `json:"ip"` + Location string `json:"location"` +} +type nullData struct { + IP string `json:"ip"` + Location string `json:"location"` +} +type resLogStats struct { + Name string `json:"name"` + Value int `json:"value"` +} + +// sysSettings------------------------------------------------------------------------ +type resSysSettings struct { + Name string `json:"name"` + Data []model.SysSettings `json:"data"` +} diff --git a/api_iris/service/admin/user.go b/api_iris/service/admin/user.go new file mode 100644 index 0000000..42cc7a2 --- /dev/null +++ b/api_iris/service/admin/user.go @@ -0,0 +1,66 @@ +package admin + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" +) + +func getUserList(ctx iris.Context) { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", utils.UserList)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func updateUserInfo(ctx iris.Context) { + var userinfo model.Userinfo + err := ctx.ReadJSON(&userinfo) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Save(&userinfo).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + utils.UpdateUserInfo() + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func deleteUser(ctx iris.Context) { + loginUser := utils.GetLoginUser(ctx) + username := ctx.URLParam("username") + if username == loginUser.Username { + logrus.Errorln(loginUser.Username, "无法删除本人") + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("不可删除本人用户")) + return + } + db := database.GetInstance().GetMysqlDb() + var user []model.User + if err := db.Where("username = ?", username).Find(&user).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(user) == 0 { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("用户不存在")) + return + } + if err := db.Where("username = ?", username).Delete(&model.User{}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Where("username = ?", username).Delete(&model.Userinfo{}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + utils.UpdateUserInfo() + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} diff --git a/api_iris/service/admin/userExport.go b/api_iris/service/admin/userExport.go new file mode 100644 index 0000000..d6cca69 --- /dev/null +++ b/api_iris/service/admin/userExport.go @@ -0,0 +1,12 @@ +package admin + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func User(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, checkAdmin, getUserList) + party.Put("/", jwtSet.Jwt.Serve, checkAdmin, updateUserInfo) + party.Delete("/", jwtSet.Jwt.Serve, checkAdmin, deleteUser) +} diff --git a/api_iris/service/api/backgammon.go b/api_iris/service/api/backgammon.go new file mode 100644 index 0000000..b2e02ba --- /dev/null +++ b/api_iris/service/api/backgammon.go @@ -0,0 +1,313 @@ +package api + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "strconv" + "strings" +) + +// 初始化新棋盘 +var cols = 15 + +func getRooms(ctx iris.Context) { + db := database.GetInstance().GetMysqlDb() + var rooms []typeRoomStatus + if err := db.Model(&model.BackgammonRoom{}).Distinct("room_id").Order("room_id").Scan(&rooms).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for k, v := range rooms { + roomStatus, err := getRoomStatus(v.RoomId) + if utils.ErrHandle(ctx, err) { + return + } + rooms[k].Player = roomStatus.Player + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", rooms)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 删除房间 +func delRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id, err := strconv.Atoi(ctx.Params().Get("id")) + if utils.ErrHandle(ctx, err) { + return + } + roomStatus, err := getRoomStatus(id) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if roomStatus.Player == username.Username { + if err1 := db.Where("room_id = ?", id).Delete(&model.BackgammonRoom{}).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else if strings.Split(roomStatus.Player, ",")[0] == username.Username { + if err1 := db.Create(&model.BackgammonRoom{ + RoomId: roomStatus.RoomId, + Player: strings.Split(roomStatus.Player, ",")[1], + Winner: "", + Current: strings.Split(roomStatus.Player, ",")[1], + PawnStatus: initPawns(), + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else if strings.Split(roomStatus.Player, ",")[1] == username.Username { + if err1 := db.Create(&model.BackgammonRoom{ + RoomId: roomStatus.RoomId, + Player: strings.Split(roomStatus.Player, ",")[0], + Winner: "", + Current: strings.Split(roomStatus.Player, ",")[0], + PawnStatus: initPawns(), + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func initPawns() string { + var newPawns string + for i := 0; i < cols; i++ { + tmp := "0" + strings.Repeat(",0", cols-1) + if i == 0 { + newPawns = tmp + continue + } + newPawns += ";" + tmp + } + return newPawns +} + +// 新建房间 +func addRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var currentStatus model.BackgammonRoom + db := database.GetInstance().GetMysqlDb() + if err := db.Order("room_id desc").First(¤tStatus).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + newPawns := initPawns() + if err := db.Create(&model.BackgammonRoom{ + RoomId: currentStatus.RoomId + 1, + Player: username.Username, + Current: username.Username, + Winner: "", + PawnStatus: newPawns, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", currentStatus.RoomId+1)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func joinRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id, err := strconv.Atoi(ctx.Params().Get("id")) + if utils.ErrHandle(ctx, err) { + return + } + roomStatus, err := getRoomStatus(id) + if utils.ErrHandle(ctx, err) { + return + } + if utils.CheckListItem(strings.Split(roomStatus.Player, ","), username.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("无法重复加入房间")) + return + } + if !utils.CheckListItem(strings.Split(roomStatus.Player, ","), username.Username) && len(strings.Split(roomStatus.Player, ",")) > 2 { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间人数已满")) + return + } + roomStatus.Player = roomStatus.Player + "," + username.Username + db := database.GetInstance().GetMysqlDb() + if err1 := db.Model(&model.BackgammonRoom{}).Where("id = ?", roomStatus.ID).Updates(&roomStatus).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func getRoomStatus(roomId int) (model.BackgammonRoom, error) { + var status model.BackgammonRoom + db := database.GetInstance().GetMysqlDb() + if err := db.Where("room_id = ?", roomId).Order("id desc").First(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(status) { + return model.BackgammonRoom{}, errors.New("房间号不存在") + } + return status, nil +} + +// 获取房间棋盘状态 +func getStatus(ctx iris.Context) { + id, err := strconv.Atoi(ctx.Params().Get("id")) + if utils.ErrHandle(ctx, err) { + return + } + roomStatus, err := getRoomStatus(id) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", roomStatus)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 新增棋子 +func addPawn(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id, err := strconv.Atoi(ctx.Params().Get("id")) + if utils.ErrHandle(ctx, err) { + return + } + roomStatus, err := getRoomStatus(id) + if utils.ErrHandle(ctx, err) { + return + } + var tmpT string + if roomStatus.Winner != "" { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("对局已结束")) + return + } + if len(strings.Split(roomStatus.Player, ",")) != 2 { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("当前房间,玩家人数不足")) + return + } + if roomStatus.Current != username.Username { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("现在不是你的回合")) + return + } + if strings.Split(roomStatus.Player, ",")[0] == username.Username { + tmpT = "1" + } else if strings.Split(roomStatus.Player, ",")[1] == username.Username { + tmpT = "-1" + } else { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("非玩家,无法进行游戏")) + return + } + place := strings.Split(ctx.URLParam("place"), ",") + var newPawn []int + for _, i := range place { + tmp, _ := strconv.Atoi(i) + newPawn = append(newPawn, tmp) + } + var pawnStatus [][]string + for _, i := range strings.Split(roomStatus.PawnStatus, ";") { + var tmp []string + for _, j := range strings.Split(i, ",") { + tmp = append(tmp, j) + } + pawnStatus = append(pawnStatus, tmp) + } + if pawnStatus[newPawn[0]][newPawn[1]] != "0" { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("该位置已有棋子")) + return + } + winner := getWinner(pawnStatus, tmpT, [2]int{newPawn[0], newPawn[1]}) + if winner { + roomStatus.Winner = username.Username + } + pawnStatus[newPawn[0]][newPawn[1]] = tmpT + var tmp []string + for _, i := range pawnStatus { + tmp = append(tmp, strings.Join(i, ",")) + } + roomStatus.PawnStatus = strings.Join(tmp, ";") + roomStatus.Current = strings.Replace(strings.Replace(roomStatus.Player, username.Username, "", 1), ",", "", 1) + db := database.GetInstance().GetMysqlDb() + if err1 := db.Create(&model.BackgammonRoom{ + RoomId: roomStatus.RoomId, + Player: roomStatus.Player, + Winner: roomStatus.Winner, + Current: roomStatus.Current, + PawnStatus: roomStatus.PawnStatus, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", roomStatus)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 判断当前是否存在winner +func getWinner(pawns [][]string, t string, pawn [2]int) bool { + pawnAround := [8][2]int{{pawn[0] - 1, pawn[1] - 1}, {pawn[0], pawn[1] - 1}, {pawn[0] + 1, pawn[1] - 1}, {pawn[0] - 1, pawn[1]}, + {pawn[0] + 1, pawn[1]}, {pawn[0] - 1, pawn[1] + 1}, {pawn[0], pawn[1] + 1}, {pawn[0] + 1, pawn[1] + 1}} + around := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + for i, p := range pawnAround { + if p[0] >= 0 && p[1] >= 0 && p[0] < cols && p[1] < cols && pawns[p[0]][p[1]] == t { + current := [2]int{p[0], p[1]} + for j := 0; j < 3; j++ { + switch i { + case 0: + current[0]-- + current[1]-- + case 1: + current[1]-- + case 2: + current[0]++ + current[1]-- + case 3: + current[0]-- + case 4: + current[0]++ + case 5: + current[0]-- + current[1]++ + case 6: + current[1]++ + case 7: + current[0]++ + current[1]++ + } + //fmt.Println(current) + if current[0] < 0 || current[0] > cols-1 || current[1] < 0 || current[1] > cols-1 || pawns[current[0]][current[1]] != t { + around[i] = j + 1 + break + } + around[i] = j + 2 + } + } + } + if around[0]+around[7] >= 4 || around[1]+around[6] >= 4 || around[2]+around[5] >= 4 || around[3]+around[4] >= 4 { + return true + } + return false +} diff --git a/api_iris/service/api/backgammonExport.go b/api_iris/service/api/backgammonExport.go new file mode 100644 index 0000000..6a61b66 --- /dev/null +++ b/api_iris/service/api/backgammonExport.go @@ -0,0 +1,15 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Backgammon(party iris.Party) { + party.Get("/", getRooms) + party.Post("/", jwtSet.Jwt.Serve, addRoom) + party.Get("/{id:int}", getStatus) + party.Put("/{id:int}", jwtSet.Jwt.Serve, joinRoom) + party.Delete("/{id:int}", jwtSet.Jwt.Serve, delRoom) + party.Post("/{id:int}", jwtSet.Jwt.Serve, addPawn) +} diff --git a/api_iris/service/api/chess.go b/api_iris/service/api/chess.go new file mode 100644 index 0000000..b8b4e06 --- /dev/null +++ b/api_iris/service/api/chess.go @@ -0,0 +1,614 @@ +package api + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "io" + "main/database" + "main/model" + "main/utils" + "math/rand" + "net/http" + "net/url" + "sort" + "strconv" + "strings" + "time" +) + +var initChessPawns = model.ChessStatus{ + Current: "", + IsEnd: false, + Status: "0,1,2,3,4,5,6,7,8;-1,-1,-1,-1,-1,-1,-1,-1,-1;-1,9,-1,-1,-1,-1,-1,10,-1;11,-1,12,-1,13,-1,14,-1,15;-1,-1,-1,-1,-1,-1,-1,-1,-1;-1,-1,-1,-1,-1,-1,-1,-1,-1;31,-1,30,-1,29,-1,28,-1,27;-1,26,-1,-1,-1,-1,-1,25,-1;-1,-1,-1,-1,-1,-1,-1,-1,-1;24,23,22,21,20,19,18,17,16", + Winner: "", + ChessId: "", +} + +func addAiChessPlayer(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if username.Username == "" { + return + } + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if status.Players != username.Username { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房主方可添加机器人")) + return + } + status.Players += ",ai--" + id + status.Status = initChessPawns.Status + status.Current = username.Username + status.IsEnd = initChessPawns.IsEnd + status.Winner = initChessPawns.Winner + status.ChessId = initChessPawns.ChessId + db := database.GetInstance().GetMysqlDb() + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} +func updateChessAiStep(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if username.Username == "" { + return + } + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if players := strings.Split(status.Players, ","); players[0] != username.Username || players[1] != "ai--"+id { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间人员配置错误")) + return + } + if status.Current != "ai--"+id { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("当前非ai回合")) + return + } + stepList := strings.Split(getAiChessStep(chessPawnStatusToFen(chessPawnStrToSlice(status.Status)), "queryall", "b"), "|") + var tmpNum int + if strings.Index(stepList[0], "score:??") != -1 { + rand.NewSource(time.Now().Unix()) + tmpNum = rand.Intn(len(stepList)) + } else { + tmpNum = 0 + } + stepTmp := strings.Split(stepList[tmpNum], ",")[0] + //fmt.Println(stepTmp, chessPawnStatusToFen(chessPawnStrToSlice(status.Status))) + if strings.Index(stepTmp, "move:") == -1 { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("机器人无合适步骤,对局结束")) + return + } + step := strings.Split(stepTmp, "move:")[1] + tmp := "abcdefghi0123456789" + statusList := chessPawnStrToSlice(status.Status) + start0 := 8 - strings.IndexByte(tmp, step[0]) + end0 := 8 - strings.IndexByte(tmp, step[2]) + start1 := strings.IndexByte(tmp, step[1]) - 9 + end1 := strings.IndexByte(tmp, step[3]) - 9 + statusList[end1][end0] = statusList[start1][start0] + statusList[start1][start0] = "-1" + status.Status = chessPawnSliceToStr(statusList) + status.ChessId = statusList[end1][end0] + status.Current = username.Username + db := database.GetInstance().GetMysqlDb() + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(200, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func testChess(ctx iris.Context) { + var res [][]string + db := database.GetInstance().GetMysqlDb() + var status []model.ChessStatus + if err := db.Find(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for _, s := range status { + stepTmp := getAiChessStep(chessPawnStatusToFen(chessPawnStrToSlice(s.Status)), "queryall", "b") + //fmt.Println(s.Status, chessPawnStatusToFen(chessPawnStrToSlice(s.Status))) + step := strings.Split(stepTmp, "move:")[1] + tmp := "abcdefghi0123456789" + //statusList := chessPawnStrToSlice(status.Status) + start0 := strings.IndexByte(tmp, step[0]) + end0 := strings.IndexByte(tmp, step[2]) + start1 := strings.IndexByte(tmp, step[1]) - 9 + end1 := strings.IndexByte(tmp, step[3]) - 9 + statusTmp := chessPawnStrToSlice(s.Status) + start := statusTmp[start1][start0] + end := statusTmp[end1][end0] + res = append(res, []string{start, end}) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func resetRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if username.Username == "" { + return + } + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if utils.DataIsNil(status) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间号不存在")) + return + } + if strings.Split(status.Players, ",")[0] != username.Username { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房主方可重置房间")) + return + } + db := database.GetInstance().GetMysqlDb() + status.Status = initChessPawns.Status + status.Current = username.Username + status.IsEnd = initChessPawns.IsEnd + status.Winner = initChessPawns.Winner + status.ChessId = initChessPawns.ChessId + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 新建房间 +func newChessRoom(ctx iris.Context) { + creator := utils.GetLoginUser(ctx) + if creator.Username == "" { + return + } + db := database.GetInstance().GetMysqlDb() + status := model.ChessStatus{ + Players: creator.Username, + Current: creator.Username, + IsEnd: initChessPawns.IsEnd, + Status: initChessPawns.Status, + Winner: initChessPawns.Winner, + ChessId: initChessPawns.ChessId, + } + if err := db.Create(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status.ID)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取所有房间 +func getChessRooms(ctx iris.Context) { + db := database.GetInstance().GetMysqlDb() + var rooms []model.ChessStatus + if err := db.Find(&rooms).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", rooms)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 加入房间 +func joinChessRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if utils.DataIsNil(status) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间号不存在")) + return + } + if len(strings.Split(status.Players, ",")) >= 2 { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间人数已满")) + return + } + if utils.CheckListItem(strings.Split(status.Players, ","), username.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("不可重复加入房间")) + return + } + status.Players += fmt.Sprintf(",%s", username.Username) + db := database.GetInstance().GetMysqlDb() + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Create(&model.ChessStatusLog{ + RoomId: status.ID, + Players: status.Players, + Current: status.Current, + IsEnd: status.IsEnd, + Status: status.Status, + Winner: status.Winner, + ChessId: status.ChessId, + Time: status.CreatedAt, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 离开房间 +func leaveChessRoom(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if utils.DataIsNil(status) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间号不存在")) + return + } + if !utils.CheckListItem(strings.Split(status.Players, ","), username.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未加入该房间")) + return + } + for _, v := range strings.Split(status.Players, ",") { + if v != username.Username { + status.Players = v + } + } + db := database.GetInstance().GetMysqlDb() + if status.Players == username.Username || status.Players == "ai--"+id { + if err := db.Delete(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } else { + status.Current = status.Players + status.ChessId = initChessPawns.ChessId + status.IsEnd = initChessPawns.IsEnd + status.Winner = initChessPawns.Winner + status.Status = initChessPawns.Status + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取房间状态接口 +func getChessRoom(ctx iris.Context) { + id := ctx.Params().Get("id") + status := getChessRoomStatus(id) + if utils.DataIsNil(status) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间号不存在")) + return + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 更新棋盘状态 +func updateChessStatus(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + id := ctx.Params().Get("id") + pawn := ctx.URLParam("pawn") + des := ctx.URLParam("des") + status := getChessRoomStatus(id) + if utils.DataIsNil(status) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间号不存在")) + return + } + if len(strings.Split(status.Players, ",")) < 2 { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("房间人数不足")) + return + } + pawnNum, _ := strconv.Atoi(pawn) + if (strings.Split(status.Players, ",")[0] == username.Username && pawnNum > 15) || (strings.Split(status.Players, ",")[1] == username.Username && pawnNum < 16) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只能移动自己的棋子")) + return + } + if status.Current != username.Username { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("当前不是你的回合")) + return + } + if checkChessStep(pawn, status.Status, des) { + tmpStatus := chessPawnStrToSlice(status.Status) + locTmp := getPawnLoc(status.Status, pawn) + toTmp0, _ := strconv.Atoi(strings.Split(des, ",")[0]) + toTmp1, _ := strconv.Atoi(strings.Split(des, ",")[1]) + tmpStatus[locTmp[0]][locTmp[1]] = "-1" + tmpStatus[toTmp0][toTmp1] = pawn + status.Status = chessPawnSliceToStr(tmpStatus) + status.ChessId = pawn + for _, v := range strings.Split(status.Players, ",") { + if v != username.Username { + status.Current = v + } + } + if checkWinner(status.Status) == 1 { + status.Winner = username.Username + status.IsEnd = true + status.Current = "" + } + } else { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("当前无法移到该位置")) + return + } + db := database.GetInstance().GetMysqlDb() + if checkWinner(status.Status) == 2 { + for _, v := range strings.Split(status.Players, ",") { + if v != username.Username { + status.Winner = v + status.IsEnd = true + } + } + } + if err := db.Save(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Create(&model.ChessStatusLog{ + RoomId: status.ID, + Current: status.Current, + Players: status.Players, + IsEnd: status.IsEnd, + Status: status.Status, + Winner: status.Winner, + ChessId: status.ChessId, + Time: status.CreatedAt, + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", status)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取房间状态方法 +func getChessRoomStatus(id string) model.ChessStatus { + db := database.GetInstance().GetMysqlDb() + var status model.ChessStatus + if err := db.Where("id = ?", id).First(&status).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + return status +} + +func checkWinner(status string) int { + if utils.DataIsNil(getPawnLoc(status, "4")) || utils.DataIsNil(getPawnLoc(status, "20")) { + return 1 + } + if checkNullPath(chessPawnStrToSlice(status), getPawnLoc(status, "4"), getPawnLoc(status, "20")) { + return 2 + } + return 0 +} + +// 获取棋子位置 +func getPawnLoc(statusStr string, pawn string) [2]int { + var res [2]int + status := chessPawnStrToSlice(statusStr) + for row, i := range status { + for col, j := range i { + if j == pawn { + res[0] = row + res[1] = col + } + } + } + return res +} + +// 判断棋子是否可移动 +func checkChessStep(pawn string, statusStr string, to string) bool { + locList := getPawnLoc(statusStr, pawn) + status := chessPawnStrToSlice(statusStr) + locTmp0 := locList[0] + locTmp1 := locList[1] + toTmp := strings.Split(to, ",") + toTmp0, _ := strconv.Atoi(toTmp[0]) + toTmp1, _ := strconv.Atoi(toTmp[1]) + //目标位置超出棋盘 + if toTmp0 < 0 || toTmp1 < 0 || toTmp0 > 10 || toTmp1 > 8 { + return false + } + pawnNum, _ := strconv.Atoi(pawn) + toPawnNum, _ := strconv.Atoi(status[toTmp0][toTmp1]) + if (pawnNum < 16 && toPawnNum < 16 && toPawnNum >= 0) || (pawnNum > 15 && toPawnNum > 15) { + return false + } + switch pawn { + case "0", "8", "16", "24": //车:同行列,路径为空 + if (toTmp0 == locTmp0 && toTmp1 != locTmp1) || (toTmp1 == locTmp1 && toTmp0 != locTmp0) && checkNullPath(status, [2]int{locTmp0, locTmp1}, [2]int{toTmp0, toTmp1}) { + return true + } + case "1", "7", "17", "23": //马:日字,前后左右无子 + if (utils.IntAbs(toTmp0-locTmp0) == 1 && utils.IntAbs(toTmp1-locTmp1) == 2 && status[locTmp0][(locTmp1+toTmp1)/2] == "-1") || (utils.IntAbs(toTmp0-locTmp0) == 2 && utils.IntAbs(toTmp1-locTmp1) == 1 && status[(locTmp0+toTmp0)/2][locTmp1] == "-1") { + return true + } + case "2", "6", "18", "22": //象:田字,不过河,中间格子为空 + if utils.IntAbs(toTmp0-locTmp0) == 2 && utils.IntAbs(toTmp1-locTmp1) == 2 && ((locTmp0 < 5 && toTmp0 < 5) || (locTmp0 > 4 && toTmp0 > 4)) && status[(locTmp0+toTmp0)/2][(locTmp1+toTmp1)/2] == "-1" { + return true + } + case "3", "5", "19", "21": //士:斜着走,不超出方格 + if toTmp1 < 3 || toTmp1 > 5 || (locTmp0 < 5 && toTmp0 > 2) || (locTmp0 > 4 && toTmp0 < 7) { + return false + } + if utils.IntAbs(toTmp0-locTmp0) == 1 && utils.IntAbs(toTmp1-locTmp1) == 1 { + return true + } + case "4", "20": //将:走一步,不超出方格 + if toTmp1 < 3 || toTmp1 > 5 || (locTmp0 < 5 && toTmp0 > 2) || (locTmp0 > 4 && toTmp0 < 7) { + return false + } + if utils.IntAbs(toTmp0-locTmp0)+utils.IntAbs(toTmp1-locTmp1) == 1 { + return true + } + case "9", "10", "25", "26": //炮:同行列,路径不为空,目标位置不为空 + if ((toTmp0 == locTmp0 && toTmp1 != locTmp1) || (toTmp1 == locTmp1 && toTmp0 != locTmp0)) && ((!checkNullPath(status, [2]int{locTmp0, locTmp1}, [2]int{toTmp0, toTmp1}) && status[toTmp0][toTmp1] != "-1") || (checkNullPath(status, [2]int{locTmp0, locTmp1}, [2]int{toTmp0, toTmp1}) && status[toTmp0][toTmp1] == "-1")) { + return true + } + case "11", "12", "13", "14", "15": //兵:走一步,过河后可横移 + if (toTmp0 < 5 && toTmp1 == locTmp1 && toTmp0-locTmp0 == 1) || (toTmp0 > 4 && utils.IntAbs(toTmp0-locTmp0+toTmp1-locTmp1) == 1) { + return true + } + case "27", "28", "29", "30", "31": //兵:走一步,过河后可横移 + if (toTmp0 > 4 && toTmp1 == locTmp1 && toTmp0-locTmp0 == -1) || (toTmp0 < 5 && utils.IntAbs(toTmp0-locTmp0+toTmp1-locTmp1) == 1) { + return true + } + default: + return false + } + return false +} + +// 棋盘状态字符串转数组 +func chessPawnStrToSlice(status string) [][]string { + var res [][]string + for _, i := range strings.Split(status, ";") { + var colList []string + for _, j := range strings.Split(i, ",") { + colList = append(colList, j) + } + res = append(res, colList) + } + return res +} + +// 棋盘状态数组转字符串 +func chessPawnSliceToStr(status [][]string) string { + var resList []string + for _, i := range status { + resList = append(resList, strings.Join(i, ",")) + } + res := strings.Join(resList, ";") + return res +} + +func chessPawnStatusToFen(status [][]string) string { + var res []string + for _, i := range status { + resTmp := "" + count := 0 + for col, j := range i { + if j == "-1" && col == len(i)-1 { + resTmp += strconv.Itoa(count + 1) + } else if j == "-1" { + count += 1 + } else { + if count != 0 { + resTmp += strconv.Itoa(count) + count = 0 + } + switch j { + case "0", "8": + resTmp += "R" + case "1", "7": + resTmp += "N" + case "2", "6": + resTmp += "B" + case "3", "5": + resTmp += "A" + case "4": + resTmp += "K" + case "9", "10": + resTmp += "C" + case "11", "12", "13", "14", "15": + resTmp += "P" + case "16", "24": + resTmp += "r" + case "17", "23": + resTmp += "n" + case "18", "22": + resTmp += "b" + case "19", "21": + resTmp += "a" + case "20": + resTmp += "k" + case "25", "26": + resTmp += "c" + case "27", "28", "29", "30", "31": + resTmp += "p" + } + } + } + res = append(res, resTmp) + } + return utils.Reverse(strings.Join(res, "/")) +} + +// 判断路径是否为空 +func checkNullPath(status [][]string, start [2]int, end [2]int) bool { + if start[0] == end[0] { + path := []int{start[1], end[1]} + sort.Ints(path) + for i := path[0] + 1; i < path[1]; i++ { + if status[start[0]][i] != "-1" { + return false + } + } + return true + } + if start[1] == end[1] { + path := []int{start[0], end[0]} + sort.Ints(path) + for i := path[0] + 1; i < path[1]; i++ { + if status[i][start[1]] != "-1" { + return false + } + } + return true + } + return false +} + +func getAiChessStep(fenStatus string, t string, p string) string { + urlPath, err := url.Parse("http://www.chessdb.cn/chessdb.php") + params := url.Values{} + params.Set("action", t) + params.Set("board", fmt.Sprintf("%s %s", fenStatus, p)) + params.Set("showall", "1") + urlPath.RawQuery = params.Encode() + res, err := http.Get(urlPath.String()) + if err != nil { + return err.Error() + } + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + } + }(res.Body) + + body, _ := io.ReadAll(res.Body) + return string(body) +} diff --git a/api_iris/service/api/chessExport.go b/api_iris/service/api/chessExport.go new file mode 100644 index 0000000..764d74d --- /dev/null +++ b/api_iris/service/api/chessExport.go @@ -0,0 +1,19 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Chess(party iris.Party) { + party.Post("/", jwtSet.Jwt.Serve, newChessRoom) + party.Get("/", getChessRooms) + party.Get("/{id:int}", getChessRoom) + party.Post("/{id:int}", jwtSet.Jwt.Serve, joinChessRoom) + party.Delete("/{id:int}", jwtSet.Jwt.Serve, leaveChessRoom) + party.Put("/{id:int}", jwtSet.Jwt.Serve, updateChessStatus) + party.Get("/{id:int}/reset", jwtSet.Jwt.Serve, resetRoom) + party.Post("/{id:int}/ai", jwtSet.Jwt.Serve, addAiChessPlayer) + party.Put("/{id:int}/ai", jwtSet.Jwt.Serve, updateChessAiStep) + party.Get("/test", testChess) +} diff --git a/api_iris/service/api/file.go b/api_iris/service/api/file.go new file mode 100644 index 0000000..1b7f2a2 --- /dev/null +++ b/api_iris/service/api/file.go @@ -0,0 +1,319 @@ +package api + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "mime/multipart" + "os" + "path" + "path/filepath" + "strings" + "time" +) + +func getRootFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + userPath := fmt.Sprintf("./upload/%s", username.Username) + if !utils.FileIsExist(userPath) { + err := os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + var files filesRes + fileList, err := os.ReadDir(userPath) + if utils.ErrHandle(ctx, err) { + return + } + for _, file := range fileList { + if file.IsDir() { + files.Dirs = append(files.Dirs, file.Name()) + } else { + var item fileItem + item.Name = file.Name() + f, err := os.Stat(path.Join(userPath, file.Name())) + if utils.ErrHandle(ctx, err) { + return + } + item.Size = f.Size() + item.Type = utils.GetFileType(f.Name()) + files.Files = append(files.Files, item) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", files)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取指定目录下文件 +func getFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New(userPath + ":目录不存在")) + return + } + var files filesRes + fileList, err := os.ReadDir(userPath) + if utils.ErrHandle(ctx, err) { + return + } + for _, file := range fileList { + if file.IsDir() { + files.Dirs = append(files.Dirs, file.Name()) + } else { + var item fileItem + item.Name = file.Name() + f, err := os.Stat(path.Join(userPath, file.Name())) + if utils.ErrHandle(ctx, err) { + return + } + item.Size = f.Size() + item.Type = utils.GetFileType(f.Name()) + files.Files = append(files.Files, item) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", files)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 删除文件或目录 +func deleteFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("目录不存在")) + return + } + if info, _ := os.Stat(userPath); info.IsDir() { + err := os.RemoveAll(userPath) + if utils.ErrHandle(ctx, err) { + return + } + } else { + err := os.Remove(userPath) + if utils.ErrHandle(ctx, err) { + return + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 上传头像 +func uploadAvatar(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + file, info, err := ctx.FormFile("file") + if utils.ErrHandle(ctx, err) { + return + } + defer func(file multipart.File) { + err = file.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(file) + userPath := fmt.Sprintf("./static/%s", username.Username) + if !utils.FileIsExist(userPath) { + err = os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + fileType := strings.Split(info.Filename, ".")[len(strings.Split(info.Filename, "."))-1] + avatarName := fmt.Sprintf("./static/%s/avatar-%s.%s", username.Username, time.Now().Format("2006-01-02"), fileType) + _, err = ctx.SaveFormFile(info, avatarName) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", avatarName[1:])) + if utils.ErrHandle(ctx, err) { + return + } +} + +func uploadDir(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("目录已存在")) + return + } + err := os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 上传文件 +func uploadFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + filePath := ctx.Params().Get("path") + file, info, err := ctx.FormFile("file") + if utils.ErrHandle(ctx, err) { + return + } + defer func(file multipart.File) { + err = file.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(file) + userPath := fmt.Sprintf("./upload/%s/%s", username.Username, filePath) + if !utils.FileIsExist(userPath) { + err = os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + _, err = ctx.SaveFormFile(info, fmt.Sprintf("./upload/%s/%s/%s", username.Username, filePath, info.Filename)) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 文件下载,转到nginx-upload目录 +func downloadFile(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", userToken.Username, filePath) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("文件不存在")) + return + } + if info, _ := os.Stat(userPath); info.IsDir() { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只可下载文件")) + return + } + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload/%s/%s", userToken.Username, filePath)) + ctx.Recorder().Header().Add("X-Accel-Charset", "utf-8") + ctx.Recorder().Header().Add("Content-Disposition", "attachment") + ctx.Recorder().Header().Add("Content-Type", "application/octet-stream; charset=utf-8") + return +} + +func getDownloadFileType(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + var res videoM3u8 + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + username := userToken.Username + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username, filePath) + currentPath, _ := filepath.Split(filePath) + filename := strings.TrimSuffix(path.Base(userPath), path.Ext(userPath)) + res.Video = utils.GetFileType(userPath) == "video" + res.M3u8 = utils.FileIsExist(fmt.Sprintf("./upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if err != nil { + return + } + return +} + +func downloadVideo(ctx iris.Context) { + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + username := userToken.Username + filePath := ctx.Params().Get("path") + userPath := fmt.Sprintf("./upload/%s/%s", username, filePath) + currentPath, _ := filepath.Split(filePath) + filename := strings.TrimSuffix(path.Base(userPath), path.Ext(userPath)) + //fmt.Println(filePath, currentPath, filename) + if path.Ext(userPath) != ".ts" && !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("文件不存在")) + return + } + if info, err := os.Stat(userPath); err == nil && info.IsDir() { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只可下载文件")) + return + } + if utils.GetFileType(userPath) == "video" && utils.FileIsExist(fmt.Sprintf("./upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) { + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload-video/%s/%s%s/%s.m3u8", username, currentPath, filename, filename)) + } else if utils.GetFileType(userPath) == "video" { + ctx.Recorder().Header().Add("X-Accel-Redirect", fmt.Sprintf("/upload/%s/%s", username, filePath)) + } else { + tsPath := fmt.Sprintf("./upload-video/%s/%s%s/%s.ts", username, currentPath, filename[:len(filename)-6], filename) + ctx.Recorder().Header().Add("X-Accel-Redirect", tsPath[1:]) + } + ctx.Recorder().Header().Add("X-Accel-Charset", "utf-8") + ctx.Recorder().Header().Add("Content-Disposition", "attachment") + ctx.Recorder().Header().Add("Content-Type", "application/octet-stream; charset=utf-8") + return +} diff --git a/api_iris/service/api/fileExport.go b/api_iris/service/api/fileExport.go new file mode 100644 index 0000000..9ace297 --- /dev/null +++ b/api_iris/service/api/fileExport.go @@ -0,0 +1,18 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func File(party iris.Party) { + party.Get("/upload", jwtSet.Jwt.Serve, getRootFile) + party.Get("/upload/{path:path}", jwtSet.Jwt.Serve, getFile) + party.Post("/upload/{path:path}", jwtSet.Jwt.Serve, uploadDir) + party.Post("/upload-file/{path:path}", jwtSet.Jwt.Serve, uploadFile) + party.Delete("/upload/{path:path}", jwtSet.Jwt.Serve, deleteFile) + party.Post("/static/avatar", jwtSet.Jwt.Serve, uploadAvatar) + party.Get("/download/{path:path}", downloadFile) + party.Get("/download-video-check/{path:path}", getDownloadFileType) + party.Get("/download-video/{path:path}", downloadVideo) +} diff --git a/api_iris/service/api/init.go b/api_iris/service/api/init.go new file mode 100644 index 0000000..6d888f1 --- /dev/null +++ b/api_iris/service/api/init.go @@ -0,0 +1,13 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/utils" +) + +func Apis(ctx iris.Context) { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "allApis")) + if err != nil { + return + } +} diff --git a/api_iris/service/api/menus.go b/api_iris/service/api/menus.go new file mode 100644 index 0000000..3a1167c --- /dev/null +++ b/api_iris/service/api/menus.go @@ -0,0 +1,55 @@ +package api + +import ( + "fmt" + "github.com/kataras/iris/v12" + "main/utils" + "regexp" +) + +func getMenu(ctx iris.Context) { + var resTmp []subMenu + var res []resMenu + user := utils.GetLoginUser(ctx) + if utils.DataIsNil(user) { + return + } + if len(utils.MenuList) == 0 { + utils.UpdateMenuList() + } + resTmp = append(resTmp, subMenu{MenuId: "000", Name: "首页", Icon: "bi-emoji-wink", Path: "/", RouteOnly: false}) + for _, menu := range utils.MenuList { + patternWhiteList := fmt.Sprintf("^%s,|,%s,|,%s$|%s", user.Username, user.Username, user.Username, user.Username) + regWhiteList := regexp.MustCompile(patternWhiteList) + patternUserType := fmt.Sprintf("^%s,|,%s,|,%s$|%s", user.Type, user.Type, user.Type, user.Type) + regUserType := regexp.MustCompile(patternUserType) + if match := regWhiteList.MatchString(menu.WhiteList); match || regUserType.MatchString(menu.UserType) { + resTmp = append(resTmp, subMenu{ + MenuId: menu.MenuId, + Name: menu.Name, + Icon: menu.Icon, + Path: menu.Path, + RouteOnly: menu.RouteOnly, + }) + } + } + for _, menu := range resTmp { + if menu.RouteOnly { + res = append(res, resMenu{MenuId: menu.MenuId, Name: menu.Name, Icon: menu.Icon, Path: menu.Path, RouteOnly: menu.RouteOnly}) + continue + } + if len(menu.MenuId) == 3 { + var tmp []subMenu + for _, sub := range resTmp { + if len(sub.MenuId) == 5 && sub.MenuId[0:3] == menu.MenuId && !sub.RouteOnly { + tmp = append(tmp, sub) + } + } + res = append(res, resMenu{MenuId: menu.MenuId, Name: menu.Name, Icon: menu.Icon, Path: menu.Path, Detail: tmp}) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} diff --git a/api_iris/service/api/menusExport.go b/api_iris/service/api/menusExport.go new file mode 100644 index 0000000..12d1f7e --- /dev/null +++ b/api_iris/service/api/menusExport.go @@ -0,0 +1,10 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Menus(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, getMenu) +} diff --git a/api_iris/service/api/notes.go b/api_iris/service/api/notes.go new file mode 100644 index 0000000..40d82a2 --- /dev/null +++ b/api_iris/service/api/notes.go @@ -0,0 +1,210 @@ +package api + +import ( + "errors" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "mime/multipart" + "os" + "time" +) + +func getNotesList(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var notes []model.UserNotes + var res []noteParam + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ?", username.Username).Select("id", "content").Find(¬es).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for _, item := range notes { + if len(item.Content) > 100 { + item.Content = item.Content[:30] + "\n......" + } + res = append(res, noteParam{ + ID: item.ID, + Content: item.Content, + }) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addNote(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var note noteParam + err := ctx.ReadJSON(¬e) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Create(&model.UserNotes{ + Username: username.Username, + Content: note.Content, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + var newNote model.UserNotes + if err1 := db.Where("username = ?", username.Username).Order("id desc").First(&newNote).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", newNote.ID)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func getNote(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + db := database.GetInstance().GetMysqlDb() + var note model.UserNotes + if err := db.Where("username = ? and id = ?", username.Username, ctx.Params().Get("id")).Find(¬e).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(note) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("not found")) + return + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", note)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func deleteNote(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var note model.UserNotes + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ? and id = ?", username.Username, ctx.Params().Get("id")).Find(¬e).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(note) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("not found")) + return + } + if err := db.Delete(¬e).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func updateNote(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var note model.UserNotes + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ? and id = ?", username.Username, ctx.Params().Get("id")).Find(¬e).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(note) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("not found")) + return + } + var newNote noteParam + err := ctx.ReadJSON(&newNote) + if utils.ErrHandle(ctx, err) { + return + } + if err1 := db.Model(¬e).Updates(model.UserNotes{ + Content: newNote.Content, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func uploadNoteFile(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + noteId := ctx.Params().Get("id") + userPath := fmt.Sprintf("./upload-note/%s/%s", username.Username, noteId) + if !utils.FileIsExist(userPath) { + err := os.MkdirAll(userPath, 0755) + if utils.ErrHandle(ctx, err) { + return + } + } + file, info, err := ctx.FormFile("file") + if utils.ErrHandle(ctx, err) { + return + } + defer func(file multipart.File) { + err = file.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(file) + filePath := fmt.Sprintf("%s/%s", userPath, info.Filename) + _, err = ctx.SaveFormFile(info, filePath) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", fmt.Sprintf("/api/notes/%s/file/%s", noteId, info.Filename))) + if utils.ErrHandle(ctx, err) { + return + } +} + +func getNoteFile(ctx iris.Context) { + noteId := ctx.Params().Get("id") + authToken := ctx.GetCookie("token") + activeTime := time.Now().Add(-2 * time.Hour) + var userToken model.JwtKeys + db := database.GetInstance().GetMysqlDb() + if err := db.Where("token = ? and created_at >= ?", authToken, activeTime).First(&userToken).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(userToken.Username) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("未登录")) + return + } + filename := ctx.Params().Get("filename") + userPath := fmt.Sprintf("./upload-note/%s/%s/%s", userToken.Username, noteId, filename) + if !utils.FileIsExist(userPath) { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("文件不存在")) + return + } + if info, _ := os.Stat(userPath); info.IsDir() { + ctx.StatusCode(iris.StatusBadRequest) + ctx.SetErr(errors.New("只可下载文件")) + return + } + ctx.Recorder().Header().Add("X-Accel-Redirect", userPath[1:]) + ctx.Recorder().Header().Add("X-Accel-Charset", "utf-8") + ctx.Recorder().Header().Add("Content-Disposition", "attachment") + ctx.Recorder().Header().Add("Content-Type", "application/octet-stream; charset=utf-8") + return +} diff --git a/api_iris/service/api/notesExport.go b/api_iris/service/api/notesExport.go new file mode 100644 index 0000000..aa92a36 --- /dev/null +++ b/api_iris/service/api/notesExport.go @@ -0,0 +1,16 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Notes(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, getNotesList) + party.Post("/", jwtSet.Jwt.Serve, addNote) + party.Get("/{id:int}", jwtSet.Jwt.Serve, getNote) + party.Put("/{id:int}", jwtSet.Jwt.Serve, updateNote) + party.Delete("/{id:int}", jwtSet.Jwt.Serve, deleteNote) + party.Post("/{id:int}/file", jwtSet.Jwt.Serve, uploadNoteFile) + party.Get("/{id:int}/file/{filename:string}", getNoteFile) +} diff --git a/api_iris/service/api/public.go b/api_iris/service/api/public.go new file mode 100644 index 0000000..2801110 --- /dev/null +++ b/api_iris/service/api/public.go @@ -0,0 +1,88 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/utils" + "strconv" + "strings" + "time" +) + +// 获取节假日信息 +func getHolidays(ctx iris.Context) { + yearParam := ctx.URLParam("year") + if yearParam == "" { + yearParam = strconv.Itoa(time.Now().Year()) + } + logrus.Infoln("假期查询年份:", yearParam) + year, err := strconv.Atoi(yearParam) + var res []utils.ResHolidays + if utils.ErrHandle(ctx, err) { + return + } + if utils.ErrHandle(ctx, err) { + return + } + startDate := time.Date(year, 1, 1, 0, 0, 0, 0, time.Local) + for startDate.Year() == year { + isHoliday, name := utils.CheckHoliday(startDate.Format("2006-01-02")) + if startDate.Weekday() == time.Saturday || startDate.Weekday() == time.Sunday { + res = append(res, utils.ResHolidays{ + Date: startDate.Format("2006-01-02"), + HolidayNameCn: "周末", + }) + } else if isHoliday { + res = append(res, utils.ResHolidays{ + Date: startDate.Format("2006-01-02"), + HolidayNameCn: name, + }) + } + startDate = startDate.AddDate(0, 0, 1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if err != nil { + return + } +} + +// 获取IP归属地 +func getIpLocation(ctx iris.Context) { + var ip string + if ctx.URLParam("ip") != "" { + ip = ctx.URLParam("ip") + } else { + ip = utils.GetRequestIp(ctx) + } + ipLocation, err := utils.GetIpLocation(ip) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", ipLocationData{ + Ip: ip, + Location: ipLocation, + })) + if err != nil { + return + } +} + +// 邮件发送 +func sendEmail(ctx iris.Context) { + receiver := strings.Split(ctx.URLParam("receiver"), ";") + subject := ctx.URLParam("subject") + content := ctx.URLParam("content") + err := utils.SendEmail(receiver, subject, content) + if utils.ErrHandle(ctx, err) { + logrus.Errorln(err) + return + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "发送成功")) + if err != nil { + return + } +} + +func getSudokuCheck(ctx iris.Context) { + +} diff --git a/api_iris/service/api/publicExport.go b/api_iris/service/api/publicExport.go new file mode 100644 index 0000000..eab0faa --- /dev/null +++ b/api_iris/service/api/publicExport.go @@ -0,0 +1,10 @@ +package api + +import "github.com/kataras/iris/v12" + +func PublicApis(party iris.Party) { + party.Get("/holidays", getHolidays) + party.Get("/send_email", sendEmail) + party.Get("/get_ip_location", getIpLocation) + party.Get("/get_sudoku_check", getSudokuCheck) +} diff --git a/api_iris/service/api/sudoku.go b/api_iris/service/api/sudoku.go new file mode 100644 index 0000000..5416322 --- /dev/null +++ b/api_iris/service/api/sudoku.go @@ -0,0 +1,170 @@ +package api + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "strings" +) + +func getSudokuList(ctx iris.Context) { + var resSudokuList resSudokuListType + var startingSudokuList []sudokuListType + var newSudokuList []model.Sudoku + db := database.GetInstance().GetMysqlDb() + if err := db.Where("id not in (?)", db.Table("sudoku_statuses").Distinct("sudoku_id").Where("username = ? and deleted_at is null", "admin")).Find(&newSudokuList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for _, v := range newSudokuList { + resSudokuList.New = append(resSudokuList.New, sudokuListType{Sudoku: v.Sudoku, SudokuId: v.ID, Complete: false}) + } + queryId := db.Table("sudoku_statuses").Select("max(id)").Where("username = ? and deleted_at is null", "admin").Group("sudoku_id") + if queryId.Error != nil { + logrus.Errorln("sql执行失败:", queryId.Error) + } + queryStatus := db.Table("sudoku_statuses").Where("id in (?)", queryId) + if queryStatus.Error != nil { + logrus.Errorln("sql执行失败:", queryStatus.Error) + } + if err := db.Model(&model.Sudoku{}).Select("sudokus.sudoku, q.*").Joins("left join (?) q on sudokus.id = q.sudoku_id", queryStatus).Scan(&startingSudokuList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for _, v := range startingSudokuList { + if v.Complete { + resSudokuList.Complete = append(resSudokuList.Complete, v) + } else { + resSudokuList.Starting = append(resSudokuList.Starting, v) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", resSudokuList)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addSudokuGame(ctx iris.Context) { + var sudokuParam addSudokuParam + var dbCheck model.Sudoku + var sudokuResult [9][9]string + err := ctx.ReadJSON(&sudokuParam) + if utils.ErrHandle(ctx, err) { + return + } + if sudokuParam.Result != "" { + sudokuResult, err = sudokuStringToList(sudokuParam.Result) + if utils.ErrHandle(ctx, err) { + return + } + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Where("sudoku = ?", sudokuParam.Sudoku).First(&dbCheck).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if !utils.DataIsNil(dbCheck) { + utils.ErrHandle(ctx, errors.New("棋盘已存在")) + return + } + err, r := utils.CheckSudoku(sudokuParam.Sudoku) + if utils.ErrHandle(ctx, err) { + return + } + if r.Data.Check || checkSudokuCompleted(sudokuResult) { + if r.Data.Check { + if err1 := db.Create(&model.Sudoku{Sudoku: sudokuParam.Sudoku, Username: "admin", Result: r.Data.Result}).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else { + if err1 := db.Create(&model.Sudoku{Sudoku: sudokuParam.Sudoku, Username: "admin", Result: sudokuParam.Result}).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } + } else { + utils.ErrHandle(ctx, errors.New("检测题目无法完成,请上传解题结果")) + return + } +} + +func sudokuStringToList(sudoku string) ([9][9]string, error) { + var res [9][9]string + sudokuRows := strings.Split(sudoku, ";") + if len(sudokuRows) != 9 { + return res, errors.New("棋盘格式错误") + } + for r, row := range sudokuRows { + sudokuCols := strings.Split(row, ",") + if len(sudokuCols) != 9 { + return res, errors.New("棋盘格式错误") + } + for c, col := range sudokuCols { + if len(col) > 1 || strings.Index("123456789", col) == -1 { + return res, errors.New("棋盘格式错误") + } + res[r][c] = col + } + } + return res, nil +} + +func sudokuListToString(sudoku [9][9]string) string { + var res string + for r, _ := range sudoku { + var tmp string + for c, _ := range sudoku[r] { + if tmp == "" { + tmp = sudoku[r][c] + } else { + tmp += "," + sudoku[r][c] + } + } + if res == "" { + res = tmp + } else { + res += ";" + tmp + } + } + return res +} + +// 检查题目是否已完成 +func checkSudokuCompleted(sudoku [9][9]string) bool { + for r, _ := range sudoku { + for c, _ := range sudoku[r] { + if sudoku[r][c] == "" || !checkNum(r, c, sudoku) { + return false + } + } + } + return true +} + +// 检查题目当前位置是否符合要求 +func checkNum(r int, c int, sudoku [9][9]string) bool { + if sudoku[r][c] == "" { + return true + } + for i, n := range sudoku[r] { + if n == sudoku[r][c] && i != c { + return false + } + } + for i, _ := range sudoku { + if sudoku[i][c] == sudoku[r][c] && i != r { + return false + } + } + for row := (r % 3) * 3; row < (r%3)*3+2; row++ { + for col := (c % 3) * 3; col < (c%3)*3+2; col++ { + if sudoku[row][col] == sudoku[r][c] && row != r && col != c { + return false + } + } + } + return true +} diff --git a/api_iris/service/api/sudokuExport.go b/api_iris/service/api/sudokuExport.go new file mode 100644 index 0000000..1cd55a0 --- /dev/null +++ b/api_iris/service/api/sudokuExport.go @@ -0,0 +1,10 @@ +package api + +import ( + "github.com/kataras/iris/v12" +) + +func Sudoku(party iris.Party) { + party.Get("/", getSudokuList) + party.Post("/", addSudokuGame) +} diff --git a/api_iris/service/api/sysSettings.go b/api_iris/service/api/sysSettings.go new file mode 100644 index 0000000..a7ee50b --- /dev/null +++ b/api_iris/service/api/sysSettings.go @@ -0,0 +1,59 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "strings" +) + +func getSysIcons(ctx iris.Context) { + var icons []model.SysIcons + db := database.GetInstance().GetMysqlDb() + if err := db.Find(&icons).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", icons)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addSysIcons(ctx iris.Context) { + var params sysIconsParam + var icons []model.SysIcons + var sysIcons []model.SysIcons + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Find(&sysIcons).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + for _, iconStr := range strings.Split(params.Icons, ",") { + icon := strings.Join([]string{"bi", iconStr}, "-") + if !checkIconExist(icon, sysIcons) { + icons = append(icons, model.SysIcons{Icon: icon}) + sysIcons = append(sysIcons, model.SysIcons{Icon: icon}) + } + } + if err1 := db.Create(&icons).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func checkIconExist(icon string, sysIcons []model.SysIcons) bool { + for _, sysIcon := range sysIcons { + if sysIcon.Icon == icon { + return true + } + } + return false +} diff --git a/api_iris/service/api/sysSettingsExport.go b/api_iris/service/api/sysSettingsExport.go new file mode 100644 index 0000000..b3cf1ce --- /dev/null +++ b/api_iris/service/api/sysSettingsExport.go @@ -0,0 +1,8 @@ +package api + +import "github.com/kataras/iris/v12" + +func SysSettings(party iris.Party) { + party.Get("/icon", getSysIcons) + party.Post("/icon", addSysIcons) +} diff --git a/api_iris/service/api/sysinfo.go b/api_iris/service/api/sysinfo.go new file mode 100644 index 0000000..9e801fa --- /dev/null +++ b/api_iris/service/api/sysinfo.go @@ -0,0 +1,96 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "strconv" + "strings" +) + +func getSystem(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + date := ctx.URLParam("date") + //username := "admin" + db := database.GetInstance().GetMysqlDb() + var systemList []resSystem + var ids []int + if err := db.Model(&model.SysInfo{}).Select("max(id)").Where("date = ? and username = ?", date, username.Username).Group("ip").Scan(&ids).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Model(&model.SysInfo{}).Where("id in (?)", ids).Find(&systemList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", systemList)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取当前系统信息 +func getSysInfo(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + //username := "admin" + date := ctx.URLParam("date") + ip := ctx.URLParam("ip") + db := database.GetInstance().GetMysqlDb() + var sysInfoList []model.SysInfo + var res []resSysInfo + if err := db.Where("username = ? and date = ? and ip = ?", username.Username, date, ip).Find(&sysInfoList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + for _, sysInfo := range sysInfoList { + var diskList []resDisk + diskLists := strings.Split(sysInfo.DiskPoint, ",") + for i, disk := range diskLists { + if strings.Contains(disk, "docker") { + continue + } + diskPer, err := strconv.ParseFloat(strings.Split(sysInfo.DiskPer, ",")[i], 64) + if utils.ErrHandle(ctx, err) { + return + } + diskList = append(diskList, resDisk{ + Point: disk, + Total: strings.Split(sysInfo.DiskTotal, ",")[i], + Used: strings.Split(sysInfo.DiskUsed, ",")[i], + Per: utils.Round(diskPer, 2), + }) + } + res = append(res, resSysInfo{ + Datetime: sysInfo.Datetime, + CpuPer: utils.Round(sysInfo.CpuPer, 2), + Mem: resMem{ + MemPer: utils.Round(sysInfo.MemPer, 2), + MemUsed: sysInfo.MemUsed, + MemTotal: sysInfo.MemTotal, + }, + Disk: diskList, + Net: resNet{ + Sent: sysInfo.SentSpeed, + Rec: sysInfo.RecSpeed, + }, + }) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +//func updateSysInfo(ctx iris.Context) { +// date := ctx.URLParam("date") +// crontab.UpdateSysInfo(date) +// err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", fmt.Sprintf("%s 日期数据同步完成", date))) +// if utils.ErrHandle(ctx, err) { +// return +// } +//} diff --git a/api_iris/service/api/sysinfoExport.go b/api_iris/service/api/sysinfoExport.go new file mode 100644 index 0000000..e0f8c01 --- /dev/null +++ b/api_iris/service/api/sysinfoExport.go @@ -0,0 +1,12 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func SysInfo(party iris.Party) { + party.Get("/server", jwtSet.Jwt.Serve, getSystem) + party.Get("/", jwtSet.Jwt.Serve, getSysInfo) + //party.Get("/update", updateSysInfo) +} diff --git a/api_iris/service/api/type.d.go b/api_iris/service/api/type.d.go new file mode 100644 index 0000000..c5506de --- /dev/null +++ b/api_iris/service/api/type.d.go @@ -0,0 +1,178 @@ +package api + +import "time" + +// user----------------------------------------------------------------------------------------------- +type result struct { + Date string + Password string + ConfirmCode string + UpdatedAt time.Time + Key string + AesKey string +} + +// weather--------------------------------------------------------------------------------------------- +type resWeather struct { + Status int `json:"status"` + Message string `json:"message"` + Data resData `json:"data"` +} +type resData struct { + Forecast24h resDate `json:"forecast_24h"` +} +type resDate struct { + D0 res24h `json:"1"` + D1 res24h `json:"2"` +} +type res24h struct { + Time string `json:"time"` + MaxDegree string `json:"max_degree"` + MinDegree string `json:"min_degree"` + DayWeather string `json:"day_weather"` + DayWindDirection string `json:"day_wind_direction"` + DayWindPower string `json:"day_wind_power"` + NightWeather string `json:"night_weather"` + NightWindPower string `json:"night_wind_power"` + NightWindDirection string `json:"night_wind_direction"` +} +type resLocation struct { + Data map[string]string `json:"data"` + Message string `json:"message"` + Status int `json:"status"` +} + +// backgammon----------------------------------------------------------------------------------------------- +type typeRoomStatus struct { + RoomId int `json:"room_id"` + Player string `json:"player"` +} + +// file----------------------------------------------------------------------------------------------------- +type filesRes struct { + Dirs []string `json:"dirs"` + Files []fileItem `json:"files"` +} +type fileItem struct { + Name string `json:"name"` + Type string `json:"type"` + Size int64 `json:"size"` +} +type videoM3u8 struct { + Video bool `json:"video"` + M3u8 bool `json:"m3u8"` +} + +// notes------------------------------------------------------------------------------------------------------ +type noteParam struct { + ID uint `json:"id"` + Content string `json:"content"` +} + +// sysInfo------------------------------------------------------------------------------------------------------ +type resSysInfo struct { + Datetime string `json:"datetime"` + CpuPer float64 `json:"cpu_per"` + Mem resMem `json:"mem"` + Disk []resDisk `json:"disk"` + Net resNet `json:"net"` +} +type resMem struct { + MemTotal string `json:"mem_total"` + MemUsed string `json:"mem_used"` + MemPer float64 `json:"mem_per"` +} +type resDisk struct { + Point string `json:"point"` + Total string `json:"total"` + Used string `json:"used"` + Per float64 `json:"per"` +} +type resNet struct { + Sent string `json:"sent"` + Rec string `json:"rec"` +} +type resSystem struct { + Hostname string `json:"hostname"` + Ip string `json:"ip"` +} +type sysInfoIDs struct { + IDs []int `json:"ids"` +} + +// yeb---------------------------------------------------------------------------------------------------------- +type paramsBalance struct { + Card string `json:"card"` + Type bool `json:"type"` + Balance float64 `json:"balance"` +} + +type paramSZBalance struct { + Card string `json:"card"` + Type bool `json:"type"` // 1-支出;0-收入 + Amount float64 `json:"amount"` +} + +// 月余额 +type dateLog struct { + Date string `json:"date"` + Duration string `json:"duration"` + Changes float64 `json:"changes"` + Balance float64 `json:"balance"` + Detail []cardLog `json:"detail"` +} + +// 详情 +type cardLog struct { + Card string `json:"card"` + Balance float64 `json:"balance"` + Changes float64 `json:"changes"` +} + +// menus----------------------------------------------------------------------------- +type resMenu struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` + Detail []subMenu `json:"detail"` +} + +type subMenu struct { + MenuId string `json:"menu_id"` + Name string `json:"name"` + Icon string `json:"icon"` + Path string `json:"path"` + RouteOnly bool `json:"route_only"` +} + +type sysIconsParam struct { + Icons string `json:"icons"` +} + +// sudoku----------------------------------------------------------------------------- +type resSudokuListType struct { + New []sudokuListType `json:"new"` + Starting []sudokuListType `json:"starting"` + Complete []sudokuListType `json:"complete"` +} + +type sudokuListType struct { + Sudoku string `json:"sudoku"` + SudokuId uint `json:"sudokuId"` + Username string `json:"username"` + Status string `json:"status"` + Complete bool `json:"complete"` + Id uint `json:"id"` +} +type addSudokuParam struct { + Sudoku string `json:"sudoku"` + Result string `json:"result"` +} + +// public ------------------------------------------------------------------------------ +type ipLocationData struct { + Ip string `json:"ip"` + Location string `json:"location"` +} diff --git a/api_iris/service/api/user.go b/api_iris/service/api/user.go new file mode 100644 index 0000000..09a45cd --- /dev/null +++ b/api_iris/service/api/user.go @@ -0,0 +1,365 @@ +package api + +import ( + "errors" + "fmt" + "github.com/golang-jwt/jwt/v4" + "github.com/jakehl/goid" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/jwtSet" + "main/model" + "main/service/admin" + "main/utils" + "math/rand" + "strconv" + "strings" + "time" +) + +// 返回加密后用户信息 +func userinfo(ctx iris.Context) { + user := utils.GetLoginUser(ctx) + if utils.DataIsNil(user) { + return + } + if user.Email != "" { + user.Email = fmt.Sprintf("%s****%s", user.Email[0:2], user.Email[len(user.Email)-7:]) + } + if user.Mobile != "" { + user.Mobile = fmt.Sprintf("%s****%s", user.Mobile[0:2], user.Mobile[len(user.Mobile)-4:]) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", user)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 更新用户信息 +func updateUserinfo(ctx iris.Context) { + username := utils.GetLoginUser(ctx) + if utils.DataIsNil(username) { + return + } + var params model.Userinfo + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if strings.Contains(params.Email, "*") { + params.Email = "" + } + if strings.Contains(params.Mobile, "*") { + params.Mobile = "" + } + if err1 := db.Model(&model.Userinfo{}).Where("username = ?", username.Username).Updates(params).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + for i, u := range utils.UserList { + if u.Username == username.Username { + utils.UserList[i] = params + } + } + utils.UpdateUserInfo() + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 用户登录 +func login(ctx iris.Context) (string, error) { + username := ctx.URLParam("username") + password := ctx.URLParam("password") + confirmCode := ctx.URLParam("confirmCode") + auto := ctx.URLParam("auto") + var res result + db := database.GetInstance().GetMysqlDb() + if err := db. + Model(&model.User{}). + Select("users.password, users.confirm_code, users.updated_at, day_keys.key, day_keys.aes_key"). + Joins("left join day_keys on day_keys.user = users.username and day_keys.date = users.date"). + Where("users.username = ?", username). + Order("users.date desc"). + Scan(&res).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if utils.DataIsNil(res) { + return "", errors.New("用户不存在") + } + rsaDePass, err := utils.RsaDecrypt(password, res.Key) + if err != nil { + return "", err + } + if confirmCode == "" { + aesDePass, err := utils.DecryptByAes(res.Password, []byte(res.AesKey)) + if err != nil { + return "", err + } + //fmt.Println(string(aesDePass), rsaDePass) + if string(aesDePass) != rsaDePass { + return "", errors.New("用户信息错误") + } + } else if res.ConfirmCode != confirmCode { + return "", errors.New("验证码错误") + } else if res.ConfirmCode != "" && time.Now().After(res.UpdatedAt.Add(time.Minute*5)) { + return "", errors.New("验证码已过期") + } + priKeys, _ := utils.GetPrivateKeys(username, time.Now().Format("2006-01-02")) + newPwd, _ := utils.EncryptByAes([]byte(rsaDePass), []byte(priKeys.AesKey)) + if err1 := db. + Model(&model.User{}). + Where("username = ?", username). + Updates(map[string]interface{}{ + "password": newPwd, + "date": time.Now().Format("2006-01-02"), + "confirm_code": "", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + rand1 := rand.New(rand.NewSource(time.Now().UnixNano())) + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "username": username, + "iat": time.Now().Unix(), + "jti": strconv.Itoa(rand1.Int()), + "exp": time.Now().Add(2 * time.Hour).Unix(), + }) + jwtKey := jwtSet.GetJwtKeys().Key + tokenString, err := token.SignedString([]byte(jwtKey)) + if err != nil { + return "", err + } + ctx.SetCookieKV("is_login", "1", iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + ctx.SetCookieKV("token", tokenString, iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + ctx.SetCookieKV("loginTime", strconv.FormatInt(time.Now().UnixMilli(), 10), iris.CookieHTTPOnly(false)) + if err1 := db.Create(&model.UserAction{ + Username: username, + Action: "用户登录", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if err1 := db.Create(&model.JwtKeys{ + Username: username, + Date: time.Now().Format("2006-01-02"), + Key: jwtKey, + Token: tokenString, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if auto == "true" { + deviceId := goid.NewV4UUID() + location := admin.GetIpLocation(utils.GetRequestIp(ctx)) + ctx.SetCookieKV("deviceId", deviceId.String(), iris.CookieHTTPOnly(false)) + if err1 := db.Create(&model.UserAutoLogin{ + Username: username, + DeviceId: deviceId.String(), + Location: location, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + return tokenString, nil +} + +// 用户注册 +func register(ctx iris.Context) (string, error) { + username := ctx.URLParam("username") + password := ctx.URLParam("password") + priKeys, err := utils.GetPrivateKeys(username, time.Now().Format("2006-01-02")) + if err != nil { + return "", err + } + dePass, err := utils.RsaDecrypt(password, priKeys.Key) + if err != nil { + return "", err + } + enPass, err := utils.EncryptByAes([]byte(dePass), []byte(priKeys.AesKey)) + if err != nil { + return "", err + } + db := database.GetInstance().GetMysqlDb() + var user []model.User + if err1 := db.Where("username = ?", username).Find(&user).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if len(user) > 0 { + err = errors.New("user exists") + return "", err + } + if err1 := db.Create(&model.User{ + Username: username, + Password: enPass, + Date: time.Now().Format("2006-01-02"), + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if len(utils.UserList) == 0 { + if err1 := db.Create(&model.Userinfo{ + Username: username, + Type: "admin", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else { + if err1 := db.Create(&model.Userinfo{ + Username: username, + Type: "user", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + utils.UpdateUserInfo() + rand1 := rand.New(rand.NewSource(time.Now().UnixNano())) + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "username": username, + "iat": time.Now().Unix(), + "jti": strconv.Itoa(rand1.Int()), + "exp": time.Now().Add(2 * time.Hour).Unix(), + }) + jwtKey := jwtSet.GetJwtKeys().Key + tokenString, err := token.SignedString([]byte(jwtKey)) + if err != nil { + return "", err + } + ctx.SetCookieKV("is_login", "1", iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + ctx.SetCookieKV("token", tokenString, iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + ctx.SetCookieKV("loginTime", strconv.FormatInt(time.Now().UnixMilli(), 10), iris.CookieHTTPOnly(false)) + if err1 := db.Create(&model.UserAction{ + Username: username, + Action: "用户注册并登录", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if err1 := db.Create(&model.JwtKeys{ + Username: username, + Date: time.Now().Format("2006-01-02"), + Key: jwtKey, + Token: tokenString, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + return tokenString, nil +} + +// 退出登录 +func logout(ctx iris.Context) { + db := database.GetInstance().GetMysqlDb() + username := utils.GetLoginUser(ctx) + auth := ctx.Values().Get("jwt") + deviceId := ctx.GetCookie("deviceId") + if auth == nil { + ctx.StatusCode(iris.StatusUnauthorized) + ctx.SetErr(errors.New("未登录")) + return + } + if err := db.Where("token = ?", auth.(*jwt.Token).Raw).Delete(&model.JwtKeys{}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + ctx.RemoveCookie("is_login") + ctx.RemoveCookie("token") + if deviceId != "" { + ctx.RemoveCookie("deviceId") + if err := db.Where("device_id = ? and username = ?", deviceId, username).Delete(&model.UserAutoLogin{}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + if err := db.Create(&model.UserAction{ + Username: username.Username, + Action: "用户注销登录", + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 重置密码 +func resetPwd(ctx iris.Context) { + username := ctx.URLParam("username") + //var user model.Userinfo + db := database.GetInstance().GetMysqlDb() + user := utils.GetUserInfo(username) + if utils.DataIsNil(user) { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("用户不存在")) + return + } + confirmCode := utils.NewKey(8) + if err := db.Model(&model.User{}).Where("username = ?", username).Updates(model.User{ConfirmCode: confirmCode}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := utils.SendEmail([]string{user.Email}, "密码重置", fmt.Sprintf("验证码为:%s\n您正在进行密码重置,验证码5分钟内有效,如非本人操作,请忽略本邮件", confirmCode)) + if utils.ErrHandle(ctx, err) { + return + } + if err1 := db.Create(&model.UserAction{ + Username: username, + Action: "获取重置密码验证码", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", fmt.Sprintf("%s****%s", user.Email[0:2], user.Email[7:]))) + if utils.ErrHandle(ctx, err) { + return + } +} + +func autoLogin(ctx iris.Context) { + var user []model.UserAutoLogin + location := admin.GetIpLocation(utils.GetRequestIp(ctx)) + deviceId := ctx.GetCookie("deviceId") + if deviceId == "" || location == "" { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "自动登录未设置", false)) + if utils.ErrHandle(ctx, err) { + return + } + return + } + db := database.GetInstance().GetMysqlDb() + if err := db.Where("device_id = ? and location = ?", deviceId, location).Find(&user).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(user) == 0 { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "自动登录未设置", false)) + if utils.ErrHandle(ctx, err) { + return + } + return + } + rand1 := rand.New(rand.NewSource(time.Now().UnixNano())) + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "username": user[0].Username, + "iat": time.Now().Unix(), + "jti": strconv.Itoa(rand1.Int()), + "exp": time.Now().Add(2 * time.Hour).Unix(), + }) + jwtKey := jwtSet.GetJwtKeys().Key + tokenString, err := token.SignedString([]byte(jwtKey)) + if utils.ErrHandle(ctx, err) { + return + } + ctx.SetCookieKV("is_login", "1", iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + ctx.SetCookieKV("token", tokenString, iris.CookieHTTPOnly(false), iris.CookieExpires(2*time.Hour)) + if err1 := db.Create(&model.UserAction{ + Username: user[0].Username, + Action: "用户自动登录", + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if err1 := db.Create(&model.JwtKeys{ + Username: user[0].Username, + Date: time.Now().Format("2006-01-02"), + Key: jwtKey, + Token: tokenString, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", tokenString)) + if utils.ErrHandle(ctx, err) { + return + } +} diff --git a/api_iris/service/api/userExport.go b/api_iris/service/api/userExport.go new file mode 100644 index 0000000..a84092a --- /dev/null +++ b/api_iris/service/api/userExport.go @@ -0,0 +1,46 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" + "main/utils" +) + +func User(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, userinfo) + party.Put("/", jwtSet.Jwt.Serve, updateUserinfo) + party.Post("/", func(context iris.Context) { + token, err := register(context) + if utils.ErrHandle(context, err) { + return + } + err = context.JSON(utils.FormatRes(iris.StatusOK, "", token)) + if err != nil { + return + } + }) + party.Get("/login", func(context iris.Context) { + user := context.URLParam("username") + pubKey, err := utils.GetPublicKey(user) + if utils.ErrHandle(context, err) { + return + } + err = context.JSON(utils.FormatRes(200, "", pubKey)) + if err != nil { + return + } + }) + party.Post("/login", func(ctx iris.Context) { + token, err := login(ctx) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(200, "", token)) + if err != nil { + return + } + }) + party.Delete("/login", jwtSet.Jwt.Serve, logout) + party.Get("/reset", resetPwd) + party.Get("/auto", autoLogin) +} diff --git a/api_iris/service/api/weather.go b/api_iris/service/api/weather.go new file mode 100644 index 0000000..326e0cb --- /dev/null +++ b/api_iris/service/api/weather.go @@ -0,0 +1,171 @@ +package api + +import ( + "encoding/json" + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "io" + "main/database" + "main/model" + "main/utils" + "net/http" + "net/url" + "strings" + "time" +) + +// 获取location +func getLocation(ctx iris.Context) { + param := ctx.URLParam("location") + res, err := http.Get(fmt.Sprintf("https://wis.qq.com/city/like?source=pc&city=%s", param)) + if utils.ErrHandle(ctx, err) { + return + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if utils.ErrHandle(ctx, err) { + return + } + }(res.Body) + body, _ := io.ReadAll(res.Body) + var r resLocation + //解析json结构 + err = json.Unmarshal(body, &r) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(200, "", r.Data)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取天气方法 +func getWeather(ctx iris.Context) { + user := utils.GetLoginUser(ctx) + if utils.DataIsNil(user) { + return + } + var info model.Userinfo + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ?", user.Username).First(&info).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + var location []string + if info.Location == "" { + location = []string{"北京", "北京", "顺义"} + } else { + info.Location = strings.ReplaceAll(info.Location, " ", "") + location = strings.Split(info.Location, ",") + if len(location) < 3 { + location = append(location, "") + } + } + res, err := getMyWeather(location[0], location[1], location[2]) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(200, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取地点对应地址天气 +func getMyWeather(province string, city string, county string) (string, error) { + var weather []model.Weather + var respWeather string + db := database.GetInstance().GetMysqlDb() + if err := db.Where(&model.Weather{Date: time.Now().Format("2006-01-02"), Location: fmt.Sprintf("%s,%s,%s", province, city, county)}).Find(&weather).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(weather) == 0 { + resp, err := http.Get(fmt.Sprintf("https://wis.qq.com/weather/common?"+ + "source=pc&weather_type=forecast_24h&province=%s&city=%s&county=%s", url.QueryEscape(province), url.QueryEscape(city), url.QueryEscape(county))) + if err != nil { + return "", err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + } + }(resp.Body) + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println(err) + } + var r resWeather + //解析json结构 + err = json.Unmarshal(body, &r) + if err != nil { + //fmt.Println(fmt.Sprintf("https://wis.qq.com/weather/common?"+ + // "source=pc&weather_type=forecast_24h&province=%s&city=%s&county=%s", url.QueryEscape(province), url.QueryEscape(city), url.QueryEscape(county))) + //fmt.Println(resp.Body, "----------", string(body), "----------", err) + return "", err + } + todayWeather := formatWeather(r.Data.Forecast24h.D0) + tomWeather := formatWeather(r.Data.Forecast24h.D1) + respWeather = fmt.Sprintf("%s;%s", todayWeather, tomWeather) + if err1 := db.Create(&model.Weather{ + Date: time.Now().Format("2006-01-02"), + Location: fmt.Sprintf("%s,%s,%s", province, city, county), + Weather: respWeather, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else { + respWeather = weather[0].Weather + } + return respWeather, nil +} + +// 天气格式化 +func formatWeather(data res24h) string { + var weather string + var windPower string + var windDirection string + var degree string + if data.DayWeather == data.NightWeather { + weather = data.DayWeather + } else { + weather = fmt.Sprintf("%s转%s", data.NightWeather, data.DayWeather) + } + if data.DayWindDirection == data.NightWindDirection { + windDirection = data.DayWindDirection + } else { + windDirection = fmt.Sprintf("%s转%s", data.NightWindDirection, data.DayWindDirection) + } + if data.DayWindPower == data.NightWindPower { + windPower = data.DayWindPower + "级" + } else { + windPower = fmt.Sprintf("%s~%s级", data.NightWindPower, data.DayWindPower) + } + degree = fmt.Sprintf("%s~%s℃", data.MinDegree, data.MaxDegree) + return fmt.Sprintf("%s, %s, %s %s", weather, degree, windDirection, windPower) +} + +func testWeather(ctx iris.Context) { + var location []string + loc := ctx.URLParam("location") + fmt.Println(loc) + if loc == "" { + location = []string{"北京", "北京", "顺义"} + fmt.Println(location) + } else { + loc = strings.ReplaceAll(loc, " ", "") + location = strings.Split(loc, ",") + if len(location) < 3 { + location = append(location, "") + } + fmt.Println(location) + } + res, err := getMyWeather(location[0], location[1], location[2]) + if utils.ErrHandle(ctx, err) { + return + } + err = ctx.JSON(utils.FormatRes(200, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} diff --git a/api_iris/service/api/weatherExport.go b/api_iris/service/api/weatherExport.go new file mode 100644 index 0000000..56d3725 --- /dev/null +++ b/api_iris/service/api/weatherExport.go @@ -0,0 +1,12 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Weather(p iris.Party) { + p.Get("/", jwtSet.Jwt.Serve, getWeather) + p.Get("/location", getLocation) + p.Get("/test", testWeather) +} diff --git a/api_iris/service/api/yeb.go b/api_iris/service/api/yeb.go new file mode 100644 index 0000000..dca3d26 --- /dev/null +++ b/api_iris/service/api/yeb.go @@ -0,0 +1,206 @@ +package api + +import ( + "errors" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "time" +) + +func getYeb(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + var balances []model.Balances + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ?", username).Order("card").Find(&balances).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", balances)) + if utils.ErrHandle(ctx, err) { + return + } +} + +func addYeb(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + var balance paramsBalance + var tmpBalance []model.Balances + err := ctx.ReadJSON(&balance) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Where("username = ? and card = ?", username, balance.Card).Find(&tmpBalance).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if len(tmpBalance) > 0 { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("card已存在")) + return + } + if err1 := db.Create(&model.Balances{ + Username: username, + Card: balance.Card, + Type: balance.Type, + Balance: balance.Balance, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if balance.Type { + balance.Balance = -balance.Balance + } + if err1 := db.Create(&model.BalanceLogs{ + Username: username, + Card: balance.Card, + Date: time.Now().Format("2006-01-02"), + Balance: balance.Balance, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func updateYeb(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + var params paramsBalance + var balances []model.Balances + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Where("username = ? and card = ?", username, params.Card).Find(&balances).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if len(balances) == 0 { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("card 不存在")) + return + } + balances[0].Balance = params.Balance + balances[0].Type = params.Type + if err1 := db.Save(&balances[0]).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + //if err1 := db.Model(&balances).Update("balance", params.Balance).Error; err1 != nil { + // logrus.Errorln("sql执行失败:", err1) + //} + if params.Type { + params.Balance = -params.Balance + } + if err1 := db.Create(&model.BalanceLogs{ + Username: username, + Card: params.Card, + Date: time.Now().Format("2006-01-02"), + Balance: params.Balance, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func deleteYeb(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + var params paramsBalance + var balances []model.Balances + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Where("username = ? and card = ?", username, params.Card).Find(&balances).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if len(balances) == 0 { + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("card 不存在")) + return + } + if err1 := db.Delete(&balances).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if err1 := db.Create(&model.BalanceLogs{ + Username: username, + Card: params.Card, + Date: time.Now().Format("2006-01-02"), + Balance: 0, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} + +func szYeb(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + var params paramSZBalance + var balance model.Balances + err := ctx.ReadJSON(¶ms) + if utils.ErrHandle(ctx, err) { + return + } + db := database.GetInstance().GetMysqlDb() + if err1 := db.Where("username = ? and card = ?", username, params.Card).Find(&balance).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if utils.DataIsNil(balance) { + utils.ErrHandle(ctx, errors.New("card 不存在")) + return + } + if balance.Type == params.Type { + balance.Balance = utils.Round(balance.Balance+params.Amount, 2) + } else { + balance.Balance = utils.Round(balance.Balance-params.Amount, 2) + } + if err1 := db.Save(&balance).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + if balance.Type { + if err1 := db.Create(&model.BalanceLogs{ + Username: username, + Card: params.Card, + Date: time.Now().Format("2006-01-02"), + Balance: -balance.Balance, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } else { + if err1 := db.Create(&model.BalanceLogs{ + Username: username, + Card: params.Card, + Date: time.Now().Format("2006-01-02"), + Balance: balance.Balance, + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + } + err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success")) + if utils.ErrHandle(ctx, err) { + return + } +} diff --git a/api_iris/service/api/yebExport.go b/api_iris/service/api/yebExport.go new file mode 100644 index 0000000..dc96439 --- /dev/null +++ b/api_iris/service/api/yebExport.go @@ -0,0 +1,14 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func Yeb(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, getYeb) + party.Post("/", jwtSet.Jwt.Serve, addYeb) + party.Put("/", jwtSet.Jwt.Serve, updateYeb) + party.Delete("/", jwtSet.Jwt.Serve, deleteYeb) + party.Post("/sz", jwtSet.Jwt.Serve, szYeb) +} diff --git a/api_iris/service/api/yebLog.go b/api_iris/service/api/yebLog.go new file mode 100644 index 0000000..32eb16f --- /dev/null +++ b/api_iris/service/api/yebLog.go @@ -0,0 +1,220 @@ +package api + +import ( + "fmt" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "main/utils" + "math" + "sort" + "strings" + "time" +) + +// 按月返回余额 +func monthLog(ctx iris.Context) { + var balanceLogs []model.BalanceLogs + var res []dateLog + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ?", username).Order("id").Find(&balanceLogs).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(balanceLogs) == 0 { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if err != nil { + return + } + return + } + monthList := getMonthList(balanceLogs) + cardList := getCardList(balanceLogs) + for index, month := range monthList { + var cardLogs []cardLog + var balanceTmp float64 + for _, card := range cardList { + b := getMonthBalance(balanceLogs, month, card) + if index == 0 { + cardLogs = append(cardLogs, cardLog{ + Card: card, + Balance: b, + Changes: 0, + }) + } else { + bTmp := getMonthBalance(balanceLogs, monthList[index-1], card) + cardLogs = append(cardLogs, cardLog{ + Card: card, + Balance: b, + Changes: utils.Round(b-bTmp, 2), + }) + } + balanceTmp += b + } + //cardLogs 排序 + sort.Slice(cardLogs, func(i, j int) bool { + return math.Abs(cardLogs[i].Changes) > math.Abs(cardLogs[j].Changes) + }) + if index == 0 { + res = append(res, dateLog{ + Date: month, + Duration: "", + Changes: 0, + Balance: utils.Round(balanceTmp, 2), + Detail: cardLogs, + }) + } else { + res = append(res, dateLog{ + Date: month, + Duration: fmt.Sprintf("%s~%s", res[index-1].Date, month), + Changes: utils.Round(balanceTmp-res[index-1].Balance, 2), + Balance: utils.Round(balanceTmp, 2), + Detail: cardLogs, + }) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if err != nil { + return + } +} + +// 获取时间段内详情 +func detailLog(ctx iris.Context) { + username := utils.GetLoginUser(ctx).Username + if username == "" { + return + } + startDate := ctx.URLParam("start") + endDate := ctx.URLParam("end") + var res []dateLog + var balanceLogs []model.BalanceLogs + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ? ", username).Find(&balanceLogs).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(balanceLogs) == 0 { + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } + return + } + dateList := getDateList(balanceLogs, startDate, endDate) + cardList := getCardList(balanceLogs) + for index, date := range dateList { + var cardLogs []cardLog + var balanceTmp float64 + for _, card := range cardList { + b := getMonthBalance(balanceLogs, date, card) + if index == 0 { + cardLogs = append(cardLogs, cardLog{ + Card: card, + Balance: b, + Changes: 0, + }) + } else { + bTmp := getMonthBalance(balanceLogs, dateList[index-1], card) + cardLogs = append(cardLogs, cardLog{ + Card: card, + Balance: b, + Changes: utils.Round(b-bTmp, 2), + }) + } + balanceTmp += b + } + //cardLogs 排序 + sort.Slice(cardLogs, func(i, j int) bool { + return math.Abs(cardLogs[i].Changes) > math.Abs(cardLogs[j].Changes) + }) + if index == 0 { + res = append(res, dateLog{ + Date: date, + Duration: "", + Changes: 0, + Balance: utils.Round(balanceTmp, 2), + Detail: cardLogs, + }) + } else { + res = append(res, dateLog{ + Date: date, + Duration: fmt.Sprintf("%s~%s", res[index-1].Date, date), + Changes: utils.Round(balanceTmp-res[index-1].Balance, 2), + Balance: utils.Round(balanceTmp, 2), + Detail: cardLogs, + }) + } + } + err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", res)) + if utils.ErrHandle(ctx, err) { + return + } +} + +// 获取数据中card截至month时的余额 +func getMonthBalance(data []model.BalanceLogs, month string, card string) float64 { + var res float64 + for _, v := range data { + if v.Card == card && v.Date <= month { + res = v.Balance + } else if v.Date > month { + break + } + } + return utils.Round(res, 2) +} + +// 获取card列表 +func getCardList(data []model.BalanceLogs) []string { + var resTmp []string + var res []string + for _, v := range data { + card := v.Card + if !utils.CheckListItem(resTmp, card) { + resTmp = append(resTmp, card) + res = append(res, card) + } + } + return res +} + +// 获取月份列表 +func getMonthList(data []model.BalanceLogs) []string { + var resTmp []string + var res []string + for _, v := range data { + month := fmt.Sprintf("%s-%s-01", strings.Split(v.Date, "-")[0], strings.Split(v.Date, "-")[1]) + if !utils.CheckListItem(resTmp, month) { + resTmp = append(resTmp, month) + res = append(res, month) + } + } + t, _ := time.Parse("2006-01-02", data[len(data)-1].Date) + res = append(res, t.AddDate(0, 1, 0).Format("2006-01")+"-01") + return res +} + +// 获取日期列表 +func getDateList(data []model.BalanceLogs, start string, end string) []string { + var resTmp []string + var res []string + res = append(res, start) + for _, v := range data { + date := v.Date + if date <= start { + continue + } else if date >= end { + break + } + if !utils.CheckListItem(resTmp, date) { + resTmp = append(resTmp, date) + res = append(res, date) + } + } + res = append(res, end) + return res +} diff --git a/api_iris/service/api/yebLogExport.go b/api_iris/service/api/yebLogExport.go new file mode 100644 index 0000000..b3c4b3a --- /dev/null +++ b/api_iris/service/api/yebLogExport.go @@ -0,0 +1,11 @@ +package api + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" +) + +func YebLog(party iris.Party) { + party.Get("/", jwtSet.Jwt.Serve, monthLog) + party.Get("/detail", jwtSet.Jwt.Serve, detailLog) +} diff --git a/api_iris/service/init.go b/api_iris/service/init.go new file mode 100644 index 0000000..b326926 --- /dev/null +++ b/api_iris/service/init.go @@ -0,0 +1,38 @@ +package service + +import ( + "github.com/kataras/iris/v12" + "main/jwtSet" + "main/service/admin" + "main/service/api" + "main/service/test" +) + +func Apis(p iris.Party) { + p.Get("/", api.Apis) + p.PartyFunc("/weather", api.Weather) + p.PartyFunc("/user", api.User) + p.PartyFunc("/yeb", api.Yeb) + p.PartyFunc("/yeb_log", api.YebLog) + p.PartyFunc("/notes", api.Notes) + p.PartyFunc("/file", api.File) + p.PartyFunc("/backgammon", api.Backgammon) + p.PartyFunc("/sys_info", api.SysInfo) + p.PartyFunc("/chess", api.Chess) + p.PartyFunc("/menu", api.Menus) + p.PartyFunc("/sys", api.SysSettings) + p.PartyFunc("/sudoku", api.Sudoku) + p.PartyFunc("/public", api.PublicApis) +} + +func Admin(p iris.Party) { + p.Get("/", jwtSet.Jwt.Serve, admin.Admin) + p.PartyFunc("/logs", admin.Logs) + p.PartyFunc("/menus", admin.Menus) + p.PartyFunc("/user", admin.User) + p.PartyFunc("/sys", admin.SysSettings) +} + +func Test(party iris.Party) { + party.Get("/send", test.TestSend) +} diff --git a/api_iris/service/test/test.go b/api_iris/service/test/test.go new file mode 100644 index 0000000..875c14e --- /dev/null +++ b/api_iris/service/test/test.go @@ -0,0 +1,24 @@ +package test + +import ( + "fmt" + "github.com/kataras/iris/v12" + "main/database" + "main/model" +) + +func TestSend(ctx iris.Context) { + var d []data + db := database.GetInstance().GetMysqlDb() + //query := db.Distinct("ip").Find(&model.Logs{}) + //query.Select("logs.ip,ips_locations.location").Where("ips_locations.location is null").Joins("left join ips_locations on logs.ip=ip_locations.ip").Scan(&d) + //db.Model(&model.IpsLocation{}).Select("a.ip,ips_locations.location").Where("ips_locations.location is null").Joins("right join (?) a on a.ip=ips_locations.ip", query).Scan(&d) + //query.Model(&model.IpsLocation{}).Select("logs.ip,ips_locations.location").Where("ips_locations.location is null").Joins("left join ips_locations on logs.ip=ips_locations.ip").Scan(&d) + db.Model(&model.Logs{}).Distinct("logs.ip", "ips_locations.location").Where("ips_locations.location is null").Joins("left join ips_locations on logs.ip=ips_locations.ip").Scan(&d) + fmt.Println(len(d)) +} + +type data struct { + IP string `json:"ip"` + Location string `json:"location"` +} diff --git a/api_iris/service/ws/websocket.go b/api_iris/service/ws/websocket.go new file mode 100644 index 0000000..9309efd --- /dev/null +++ b/api_iris/service/ws/websocket.go @@ -0,0 +1,71 @@ +package ws + +import ( + websocket1 "github.com/gorilla/websocket" + "github.com/kataras/iris/v12/websocket" + "github.com/kataras/neffos" + "github.com/sirupsen/logrus" + "net/http" + "strconv" +) + +func checkOrigin(_ *http.Request) bool { + return true +} + +func PopItem(l []string, item string) []string { + var tmp []string + for _, v := range l { + if v == item { + continue + } else { + tmp = append(tmp, v) + } + } + return tmp +} + +func SetupWebsocket() *neffos.Server { + Upgrader := websocket1.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: checkOrigin, + } + var userList []string + ws := websocket.New(websocket.GorillaUpgrader(Upgrader), websocket.Events{ + websocket.OnNativeMessage: func(conn *websocket.NSConn, message websocket.Message) error { + mg := websocket.Message{ + Body: []byte(strconv.Itoa(len(userList))), + IsNative: true, + } + conn.Conn.Write(mg) + return nil + }, + }) + ws.OnConnect = func(c *websocket.Conn) error { + userList = append(userList, c.ID()) + mg := websocket.Message{ + Body: []byte(strconv.Itoa(len(userList))), + IsNative: true, + } + c.Write(mg) + for _, cli := range ws.GetConnections() { + cli.Write(mg) + } + return nil + } + ws.OnDisconnect = func(c *websocket.Conn) { + userList = PopItem(userList, c.ID()) + mg := websocket.Message{ + Body: []byte(strconv.Itoa(len(userList))), + IsNative: true, + } + for _, cli := range ws.GetConnections() { + cli.Write(mg) + } + } + ws.OnUpgradeError = func(err error) { + logrus.Errorln("ws初始化失败:", err) + } + return ws +} diff --git a/api_iris/utils/aes.go b/api_iris/utils/aes.go new file mode 100644 index 0000000..8806b56 --- /dev/null +++ b/api_iris/utils/aes.go @@ -0,0 +1,70 @@ +package utils + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "encoding/base64" + "errors" +) + +func pkcs7Padding(data []byte, blockSize int) []byte { + padding := blockSize - len(data)%blockSize + padText := bytes.Repeat([]byte{byte(padding)}, padding) + return append(data, padText...) +} + +func pkcs7UnPadding(data []byte) ([]byte, error) { + length := len(data) + if length == 0 { + return nil, errors.New("加密字符串为空!") + } + unPadding := int(data[length-1]) + return data[:(length - unPadding)], nil +} + +func aesEncrypt(data []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + blockSize := block.BlockSize() + encryptBytes := pkcs7Padding(data, blockSize) + encrypted := make([]byte, len(encryptBytes)) + blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) + blockMode.CryptBlocks(encrypted, encryptBytes) + return encrypted, nil +} + +func aesDecrypt(data []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + blockSize := block.BlockSize() + blockMode := cipher.NewCBCDecrypter(block, key[:blockSize]) + decrypted := make([]byte, len(data)) + blockMode.CryptBlocks(decrypted, data) + //fmt.Println(data, decrypted) + decrypted, err = pkcs7UnPadding(decrypted) + if err != nil { + return nil, err + } + return decrypted, err +} + +func EncryptByAes(data []byte, key []byte) (string, error) { + res, err := aesEncrypt(data, key) + if err != nil { + return "", err + } + return base64.StdEncoding.EncodeToString(res), nil +} + +func DecryptByAes(data string, key []byte) ([]byte, error) { + dataByte, err := base64.StdEncoding.DecodeString(data) + if err != nil { + return nil, err + } + return aesDecrypt(dataByte, key) +} diff --git a/api_iris/utils/holidays.go b/api_iris/utils/holidays.go new file mode 100644 index 0000000..7525502 --- /dev/null +++ b/api_iris/utils/holidays.go @@ -0,0 +1,55 @@ +package utils + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "strconv" +) + +var holidays []ResHolidays + +func CheckHoliday(date string) (bool, string) { + year, err := strconv.Atoi(date[:4]) + if len(holidays) == 0 { + err = getHolidays(year) + if err != nil { + return false, "" + } + } + for _, holiday := range holidays { + if date == holiday.Date { + return true, holiday.HolidayNameCn + } + } + return false, "" +} + +func getHolidays(year int) error { + var res map[string]resHolidaysApi + //var holidays []ResHolidays + data, err := http.Get(fmt.Sprintf("https://api.jiejiariapi.com/v1/holidays/%s", strconv.Itoa(year))) + if err != nil { + return err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + return + } + }(data.Body) + body, _ := io.ReadAll(data.Body) + //解析json结构 + err = json.Unmarshal(body, &res) + if err != nil { + return err + } + for _, j := range res { + holidays = append(holidays, ResHolidays{ + Date: j.Date, + HolidayNameCn: j.Name, + }) + } + return nil +} diff --git a/api_iris/utils/menus.go b/api_iris/utils/menus.go new file mode 100644 index 0000000..ce2fdb2 --- /dev/null +++ b/api_iris/utils/menus.go @@ -0,0 +1,43 @@ +package utils + +import ( + "github.com/sirupsen/logrus" + "main/database" + "main/model" +) + +var MenuList []model.Menus + +func UpdateMenuList() { + db := database.GetInstance().GetMysqlDb() + if err := db.Order("menu_id").Find(&MenuList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + logrus.Infoln("更新暂存MenuList列表") + if len(MenuList) == 0 { + logrus.Warningln("数据库MenuList为空,添加初始数据") + if err := db.Create(&model.Menus{ + MenuId: "999", + Name: "系统管理", + Icon: "bi-gear", + Path: "", + UserType: "admin", + WhiteList: "", + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Create(&model.Menus{ + MenuId: "99901", + Name: "菜单管理", + Icon: "bi-list", + Path: "/admin/menus", + UserType: "admin", + WhiteList: "", + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Order("menu_id").Find(&MenuList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } +} diff --git a/api_iris/utils/rsa.go b/api_iris/utils/rsa.go new file mode 100644 index 0000000..1251bd8 --- /dev/null +++ b/api_iris/utils/rsa.go @@ -0,0 +1,127 @@ +package utils + +import ( + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "github.com/sirupsen/logrus" + "main/database" + "main/model" + "reflect" + "time" +) + +func GetPrivateKeys(user string, date string) (model.DayKeys, error) { + var resKey model.DayKeys + //today := time.Now().Format("2006-01-02") + db := database.GetInstance().GetMysqlDb() + if err := db.Where("date = ? and user = ?", date, user).Order("id").First(&resKey).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if reflect.DeepEqual(resKey, model.DayKeys{}) { + privateKey, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + return model.DayKeys{}, err + } + x509PrivateKey := x509.MarshalPKCS1PrivateKey(privateKey) + base64PrivateKey := base64.StdEncoding.EncodeToString(x509PrivateKey) + resKey = model.DayKeys{ + Date: date, + Key: base64PrivateKey, + AesKey: NewKey(32), + User: user, + } + if err1 := db.Create(&resKey).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1) + } + logrus.Warnln(date + "resKey为空,创建resKey") + return resKey, nil + } else { + if err := db.Where("date = ? and user = ? and id <> ?", date, user, resKey.ID).Delete(&model.DayKeys{}).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + logrus.Infoln("resKey存在,返回私钥") + return resKey, nil +} + +func GetPublicKey(user string) (string, error) { + var userLogin model.User + db := database.GetInstance().GetMysqlDb() + if err := db.Where("username = ?", user).First(&userLogin).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if userLogin.Date == "" { + logrus.Infoln(user + ":用户之前未登录系统") + userLogin.Date = time.Now().Format("2006-01-02") + } + sPrivateKey, err := GetPrivateKeys(user, userLogin.Date) + if err != nil { + return "", err + } + deBase64privateKey, err := base64.StdEncoding.DecodeString(sPrivateKey.Key) + if err != nil { + return "", err + } + privateKey, err := x509.ParsePKCS1PrivateKey(deBase64privateKey) + if err != nil { + return "", err + } + publicKey := privateKey.PublicKey + x509PublicKey, err := x509.MarshalPKIXPublicKey(&publicKey) + if err != nil { + return "", err + } + base64PublicKey := base64.StdEncoding.EncodeToString(x509PublicKey) + logrus.Infoln(user + ":获取公钥成功") + return base64PublicKey, nil +} + +func RsaEncrypt(s string, user string) (string, error) { + sPublicKey, err := GetPublicKey(user) + if err != nil { + return "", err + } + deBase64Public, err := base64.StdEncoding.DecodeString(sPublicKey) + if err != nil { + return "", err + } + publicKey, err := x509.ParsePKIXPublicKey(deBase64Public) + if err != nil { + return "", err + } + res, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey.(*rsa.PublicKey), []byte(s)) + if err != nil { + return "", err + } + return base64.StdEncoding.EncodeToString(res), nil +} + +func RsaDecrypt(s string, sPrivateKey string) (string, error) { + //sPrivateKey, err := GetPrivateKeys(user) + //if err != nil { + // return "", err + //} + deBase64Private, err := base64.StdEncoding.DecodeString(sPrivateKey) + if err != nil { + logrus.Errorln("rsa私钥: base64 decode err:", err) + return "", err + } + privateKey, err := x509.ParsePKCS1PrivateKey(deBase64Private) + if err != nil { + logrus.Errorln("rsa私钥: x509 decode err:", err) + return "", err + } + des, err := base64.StdEncoding.DecodeString(s) + if err != nil { + logrus.Errorln("rsa: base64 decode err:", err) + return "", err + } + res, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, des) + if err != nil { + logrus.Errorln("rsa: 解密失败:", err) + return "", err + } + return string(res), nil +} diff --git a/api_iris/utils/sudoku.go b/api_iris/utils/sudoku.go new file mode 100644 index 0000000..14cc363 --- /dev/null +++ b/api_iris/utils/sudoku.go @@ -0,0 +1,34 @@ +package utils + +import ( + "encoding/json" + "fmt" + "github.com/sirupsen/logrus" + "io" + "net/http" + "net/url" +) + +func CheckSudoku(sudoku string) (error, ResSudoku) { + resp, err := http.Get(fmt.Sprintf("https://git-ylsa0.cn/api_ylsa/get_sudoku_check/?sudoku=%s", url.QueryEscape(sudoku))) + if err != nil { + logrus.Errorln("请求get_sudoku_check接口失败:", err) + return err, ResSudoku{} + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + logrus.Errorln(err.Error()) + } + }(resp.Body) + body, _ := io.ReadAll(resp.Body) + var r ResSudoku + //解析json结构 + err = json.Unmarshal(body, &r) + if err != nil { + logrus.Errorln("请求结果json解析失败:", err) + return err, ResSudoku{} + } + logrus.Infoln("数独检查完成") + return nil, r +} diff --git a/api_iris/utils/sysSettings.go b/api_iris/utils/sysSettings.go new file mode 100644 index 0000000..daec43a --- /dev/null +++ b/api_iris/utils/sysSettings.go @@ -0,0 +1,38 @@ +package utils + +import ( + "github.com/sirupsen/logrus" + "main/database" + "main/model" +) + +var SysSettings []model.SysSettings + +func UpdateSysSettings() { + db := database.GetInstance().GetMysqlDb() + if err := db.Order("name").Find(&SysSettings).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(SysSettings) == 0 { + if err := db.Create(&model.SysSettings{ + Name: "user_type", + CnName: "系统管理员", + Value: "admin", + DType: "", + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Create(&model.SysSettings{ + Name: "user_type", + CnName: "系统用户", + Value: "user", + DType: "", + }).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if err := db.Order("name").Find(&SysSettings).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + } + logrus.Infoln("更新系统配置列表") +} diff --git a/api_iris/utils/type.d.go b/api_iris/utils/type.d.go new file mode 100644 index 0000000..50fe983 --- /dev/null +++ b/api_iris/utils/type.d.go @@ -0,0 +1,45 @@ +package utils + +// ResponseBean result结构 +type ResponseBean struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} + +type ResApiUtils struct { + Flag bool `json:"flag"` + Data interface{} `json:"data"` + Msg string `json:"msg"` +} + +// ResSudoku sudoku -------------------------------------------------------------------- +type ResSudoku struct { + Flag bool `json:"flag"` + Data resSudokuData +} +type resSudokuData struct { + Check bool `json:"check"` + Result string `json:"result"` +} + +// ResHolidays holidays ------------------------------------------------------------------- +type ResHolidays struct { + Date string `json:"date"` + HolidayNameCn string `json:"holiday_name_cn"` +} +type resHolidaysApi struct { + Date string `json:"date"` + Name string `json:"name"` + IsOffDay bool `json:"isOffDay"` +} + +// ipLocation +type resIpLocation struct { + Status string `json:"status"` + Data []resIpLocationData `json:"data"` +} +type resIpLocationData struct { + OriginQuery string `json:"origin_query"` + Location string `json:"location"` +} diff --git a/api_iris/utils/user.go b/api_iris/utils/user.go new file mode 100644 index 0000000..7776ed6 --- /dev/null +++ b/api_iris/utils/user.go @@ -0,0 +1,68 @@ +package utils + +import ( + "errors" + "github.com/golang-jwt/jwt/v4" + "github.com/kataras/iris/v12" + "github.com/sirupsen/logrus" + "main/database" + "main/model" +) + +var UserList []model.Userinfo + +// GetLoginUser 根据token获取用户,返回用户信息 +func GetLoginUser(ctx iris.Context) model.Userinfo { + if ctx.Values().Get("jwt") == nil { + ctx.StatusCode(iris.StatusUnauthorized) + ctx.SetErr(errors.New("未登录")) + logrus.Warningln("请求未携带token信息") + return model.Userinfo{} + } + var tokens []model.JwtKeys + db := database.GetInstance().GetMysqlDb() + auth := ctx.Values().Get("jwt").(*jwt.Token) + if err := db.Where("token = ?", auth.Raw).Find(&tokens).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + if len(tokens) == 0 { + ctx.StatusCode(iris.StatusUnauthorized) + ctx.SetErr(errors.New("未登录")) + logrus.Warningln("token信息无效") + return model.Userinfo{} + } + foobar := auth.Claims.(jwt.MapClaims) + for key, value := range foobar { + if key == "username" { + return GetUserInfo(value.(string)) + } + } + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(errors.New("系统错误,请联系管理员")) + logrus.Errorln("token存在但获取用户信息失败") + return model.Userinfo{} +} + +// GetUserInfo 根据用户名获取用户信息,先更新本地数据 +func GetUserInfo(username string) model.Userinfo { + if len(UserList) == 0 { + logrus.Warnln("暂存用户列表为空,刷新数据") + UpdateUserInfo() + } + for _, u := range UserList { + if u.Username == username { + return u + } + } + logrus.Warnln("未找到对应的用户信息") + return model.Userinfo{} +} + +// UpdateUserInfo 更新当前用户信息 +func UpdateUserInfo() { + db := database.GetInstance().GetMysqlDb() + if err := db.Find(&UserList).Error; err != nil { + logrus.Errorln("sql执行失败:", err) + } + logrus.Infoln("刷新暂存用户列表") +} diff --git a/api_iris/utils/utils.go b/api_iris/utils/utils.go new file mode 100644 index 0000000..1284fff --- /dev/null +++ b/api_iris/utils/utils.go @@ -0,0 +1,255 @@ +package utils + +import ( + "bufio" + "encoding/json" + "errors" + "fmt" + "github.com/jordan-wright/email" + "github.com/kataras/iris/v12" + "github.com/shopspring/decimal" + "github.com/sirupsen/logrus" + "io" + "main/config" + "main/database" + "main/model" + "math/rand" + "net/http" + "net/smtp" + "os" + "path" + "reflect" + "regexp" + "runtime" + "strings" + "time" + "unsafe" +) + +// FormatRes 格式化result +func FormatRes(code int, msg string, data interface{}) ResponseBean { + return ResponseBean{ + Code: code, + Msg: msg, + Data: data, + } +} + +// GetEnvDefault 获取带默认值环境变量 +func GetEnvDefault(name string, defaultVal string) string { + val, ok := os.LookupEnv(name) + if ok { + return val + } else { + return defaultVal + } +} + +// FileRead 读取文件,返回行列表 +func FileRead(file string, condition bool) ([]string, error) { + f, err := os.Open(file) + var res []string + if err != nil { + return []string{}, err + } + defer func(f *os.File) { + err = f.Close() + if err != nil { + return + } + }(f) + reader := bufio.NewReader(f) + for { + line, _, err := reader.ReadLine() + if err != nil { + break + } + if condition && len(line) > 1 { + res = append(res, string(line)) + } + } + return res, nil +} + +func SendEmail(receiver []string, subject string, content string) error { + emailConfig := config.Config.Email + sender := fmt.Sprintf("ylsa <%s>", emailConfig.Username) + message := email.NewEmail() + message.From = sender + message.To = receiver + message.Subject = subject + message.Text = []byte(content) + logrus.Infoln("发送邮件:", sender, receiver) + err := message.Send("smtp.163.com:25", smtp.PlainAuth("", emailConfig.Username, emailConfig.Password, "smtp.163.com")) + if err != nil { + return err + } + return nil +} + +// DataIsNil 判断数据是否为空 +func DataIsNil(arg interface{}) bool { + if reflect.ValueOf(arg).Kind().String() == "ptr" || reflect.ValueOf(arg).Kind().String() == "slice" { + if reflect.ValueOf(arg).IsValid() { + return true + } + } else { + if reflect.ValueOf(arg).IsZero() { + return true + } + } + return false +} + +// ErrHandle 错误处理 +func ErrHandle(ctx iris.Context, err error) bool { + if err != nil { + pc, _, _, _ := runtime.Caller(1) + f := runtime.FuncForPC(pc).Name() + db := database.GetInstance().GetMysqlDb() + if err1 := db.Create(&model.SysError{ + Username: GetLoginUser(ctx).Username, + Time: time.Now(), + Function: f, + ErrorInfo: err.Error(), + }).Error; err1 != nil { + logrus.Errorln("sql执行失败:", err1.Error()) + } + ctx.StatusCode(iris.StatusInternalServerError) + ctx.SetErr(err) + return true + } + return false +} + +// NewKey 取n位随机数 +func NewKey(n int) string { + const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890()-+*/~" + var src = rand.NewSource(time.Now().UnixNano()) + const ( + // 6 bits to represent a letter index + letterIdBits = 6 + // All 1-bits as many as letterIdBits + letterIdMask = 1<= 0; { + if remain == 0 { + cache, remain = src.Int63(), letterIdMax + } + if idx := int(cache & letterIdMask); idx < len(letters) { + b[i] = letters[idx] + i-- + } + cache >>= letterIdBits + remain-- + } + return *(*string)(unsafe.Pointer(&b)) +} + +// CheckListItem 判断item是否在list内 +func CheckListItem[T comparable](data []T, item T) bool { + for _, value := range data { + if value == item { + return true + } + } + return false +} + +// FileIsExist 判断路径是否存在 +func FileIsExist(path string) bool { + if _, err := os.Stat(path); os.IsNotExist(err) { + return false + } + return true +} + +// Round float取小数 +func Round(num float64, n int32) float64 { + res, _ := decimal.NewFromFloat(num).Round(n).Float64() + return res +} + +// GetFileType 获取文件类型 +func GetFileType(f string) string { + fileSuffix := path.Ext(f) + fileSuffix = strings.ToLower(fileSuffix) + patternFileSuffix := fmt.Sprintf("^%s,|,%s,|,%s$|%s", fileSuffix, fileSuffix, fileSuffix, fileSuffix) + regFileSuffix := regexp.MustCompile(patternFileSuffix) + for _, v := range SysSettings { + if strings.HasPrefix(v.Name, "fileType:") && regFileSuffix.MatchString(v.Value) { + return strings.Split(v.Name, "fileType:")[1] + } + } + //switch fileSuffix { + //case ".png", ".jpg", ".jpeg", ".bmp", ".gif": + // return "image" + //case ".mp4", ".m2v", ".mkv", ".rmvb", ".avi", ".flv", ".mov", ".m4v", ".wmv", ".f4v": + // return "video" + //case ".mp3", ".wav", ".flac": + // return "audio" + //case ".zip", ".rar", ".7z": + // return "zip" + //} + return "doc" +} + +// IntAbs 数字取绝对值 +func IntAbs(i int) int { + if i < 0 { + return -i + } else { + return i + } +} + +// Reverse 字符串反转 +func Reverse(s string) string { + a := []rune(s) + for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 { + a[i], a[j] = a[j], a[i] + } + return string(a) +} + +func GetRequestIp(ctx iris.Context) string { + realIp := ctx.Request().Header.Get("X-Real-IP") + if realIp != "" { + return realIp + } + ip := ctx.RemoteAddr() + return ip +} + +func GetIpLocation(ip string) (string, error) { + var ipLocation resIpLocation + data, err := http.Get(fmt.Sprintf("https://opendata.baidu.com/api.php?query=%s&co=&resource_id=6006&oe=utf8", ip)) + if err != nil { + logrus.Errorln(ip, "ip地址请求失败", err) + return "", err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + return + } + }(data.Body) + body, err := io.ReadAll(data.Body) + if err != nil { + logrus.Errorln(ip, "获取IP地址请求读取失败:", err) + return "", err + } + err = json.Unmarshal(body, &ipLocation) + if err != nil { + logrus.Errorln(ip, "IP地址请求结果解析失败:", err) + return "", err + } + if len(ipLocation.Data) == 0 { + logrus.Errorln(ip, "ip地址无效:") + return "", errors.New("ip地址无效") + } + return ipLocation.Data[0].Location, nil +} diff --git a/build_file/dev/Dockerfile b/build_file/dev/Dockerfile new file mode 100644 index 0000000..cf133f6 --- /dev/null +++ b/build_file/dev/Dockerfile @@ -0,0 +1,11 @@ +FROM nginx +RUN mkdir -p /data \ + && cd /data \ + && mkdir static \ + && mkdir upload \ + && mkdir upload-video \ + && mkdir upload-note + +COPY default.conf /etc/nginx/conf.d/default.conf +COPY nginx.conf /etc/nginx/nginx.conf +COPY dist /usr/share/nginx/html \ No newline at end of file diff --git a/build_file/dev/build.py b/build_file/dev/build.py new file mode 100644 index 0000000..bb573f4 --- /dev/null +++ b/build_file/dev/build.py @@ -0,0 +1,54 @@ +# coding=utf-8 +import datetime +import os + + +def cp_file(rsc, des): + file_list = os.listdir(rsc) + for i in file_list: + if i in ['venv', '.idea', '.gitignore', 'static', 'migrations', '.git', '__pycache__', 'upload', 'templates', 'logs', 'upload-video', 'build.py', 'move.sh']: + continue + if os.path.isfile(os.path.join(rsc, i)): + os.system('copy /Y %s %s' % (os.path.join(rsc, i), os.path.join(des, i))) + else: + os.makedirs(os.path.join(des, i)) + cp_file(os.path.join(rsc, i), os.path.join(des, i)) + + +# 程序执行会将前后端程序复制到部署文件夹 +if __name__ == '__main__': + os.system('chcp 65001') + build_dir = r'C:\Users\m1582\Documents\vmshare\build' + date = datetime.datetime.today().date().strftime('%Y-%m-%d') + # 公共api + rsc_dir = r'..\..\api_django' + des_dir = r'%s\api_django' % build_dir + if os.path.exists(des_dir): + if not os.path.exists(r'%s\zzzz_bak' % build_dir): + os.makedirs(r'%s\zzzz_bak' % build_dir) + if os.path.exists(r'%s\zzzz_bak\%s_api_django' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_api_django' % (build_dir, date)) + os.system(r'move %s %s\zzzz_bak\%s_api_django' % (des_dir, build_dir, date)) + os.makedirs(des_dir) + cp_file(rsc_dir, des_dir) + # 后端 + rsc_dir = r'..\..\api_iris' + des_dir = r'%s\api_iris' % build_dir + if os.path.exists(des_dir): + if not os.path.exists(r'%s\zzzz_bak' % build_dir): + os.makedirs(r'%s\zzzz_bak' % build_dir) + if os.path.exists(r'%s\zzzz_bak\%s_api_iris' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_api_iris' % (build_dir, date)) + os.system(r'move %s %s\zzzz_bak\%s_api_iris' % (des_dir, build_dir, date)) + os.makedirs(des_dir) + cp_file(rsc_dir, des_dir) + # 前端 + rsc_dir_web = r'C:\Users\m1582\Documents\project\web_ylsa\web_vue\dist' + if os.path.exists(rsc_dir_web): + if os.path.exists(r'%s\dist' % build_dir): + if os.path.exists(r'%s\zzzz_bak\%s_dist' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_dist' % (build_dir, date)) + os.system(r'move %s/dist %s\zzzz_bak\%s_dist' % (build_dir, build_dir, date)) + os.system('move %s %s' % (rsc_dir_web, build_dir)) + # 配置文件 + cp_file(r".\\", build_dir) diff --git a/build_file/dev/default.conf b/build_file/dev/default.conf new file mode 100644 index 0000000..5aa73e8 --- /dev/null +++ b/build_file/dev/default.conf @@ -0,0 +1,86 @@ +upstream api_iris { + server api_iris:8080; +} +upstream api_django { + server api_django:8000; +} +server { + listen 80; + + proxy_read_timeout 600; + client_max_body_size 9000m; + autoindex on; + autoindex_exact_size off; + set_real_ip_from 192.168.0.0/16; + real_ip_header proxy_protocol; + autoindex_localtime on; + charset utf-8; + root /usr/share/nginx/html; + + location /api/ { + proxy_pass http://api_iris/api/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /api_django/ { + proxy_pass http://api_django/api/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /admin/ { + proxy_pass http://api_iris/admin/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /static/ { + alias /data/static/; + } + location /upload/ { + internal; + alias /data/upload/; + sendfile on; + charset utf-8; + } + location /upload-note/ { + internal; + alias /data/upload-note/; + sendfile on; + charset utf-8; + } + location /upload-video/ { + internal; + alias /data/upload-video/; + sendfile on; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Credentials' 'true'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + charset utf-8; + } + + location ^~/ws { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_pass http://api_iris/ws; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect off; + } + + location / { + try_files $uri /index.html; + autoindex on; + } +} diff --git a/build_file/dev/docker-compose.yml b/build_file/dev/docker-compose.yml new file mode 100644 index 0000000..1ecd034 --- /dev/null +++ b/build_file/dev/docker-compose.yml @@ -0,0 +1,60 @@ +version: "3" + +services: + api_iris: + image: api_iris:1.0 + container_name: api_iris + restart: always + environment: + - version=dev + healthcheck: + test: + [ + "CMD-SHELL", + "curl -sS 'http://127.0.0.1:8080/api' || kill 1" + ] + interval: 5m + timeout: 10s + retries: 3 + volumes: + - "/mnt/static:/web/api_iris/static/" + - "/mnt/upload:/web/api_iris/upload/" + - "/mnt/upload-note:/web/api_iris/upload-note/" + - "/mnt/upload-video:/web/api_iris/upload-video/" + - "/mnt/log/api_iris:/web/api_iris/logs/" + - "/mnt/log/nginx_vue:/web/api_iris/logs/nginx" + - "/etc/localtime:/etc/localtime" + + api_django: + image: api_django:1.0 + container_name: api_django + restart: always + command: /bin/bash -c "uwsgi --ini uwsgi.ini" + healthcheck: + test: + [ + "CMD-SHELL", + "curl -sS 'http://127.0.0.1:8000/api' || kill 1" + ] + interval: 5m + timeout: 10s + retries: 3 + volumes: + - "/etc/localtime:/etc/localtime" + + web_ylsa: + image: web_ylsa:1.0 + container_name: web_ylsa + restart: always + volumes: + - "/mnt/static:/data/static/" + - "/mnt/upload:/data/upload/" + - "/mnt/upload-note:/data/upload-note/" + - "/mnt/upload-video:/data/upload-video/" + - "/mnt/log/nginx-vue:/var/log/nginx/" + - "/etc/localtime:/etc/localtime" + ports: + - "80:80" + depends_on: + - api_iris + - api_django diff --git a/build_file/dev/move-o.sh b/build_file/dev/move-o.sh new file mode 100644 index 0000000..5cf65ce --- /dev/null +++ b/build_file/dev/move-o.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [[ -n $(docker ps -q -f "name=api_iris") ]]; then + cd /data/web/myweb + docker-compose down +fi +cd /data/web +if [[ -d "myweb_$(date +%Y%m%d)" ]]; then + rm -rf myweb_$(date +%Y%m%d) +fi +if [[ -d "myweb" ]]; then + mv myweb myweb_$(date +%Y%m%d) +fi +mkdir myweb +cp /mnt/build/build.zip myweb +cd myweb +unzip build.zip +chmod 755 -R /data/web/myweb +cd /data/web/myweb +sh update.sh diff --git a/build_file/dev/move.sh b/build_file/dev/move.sh new file mode 100644 index 0000000..3e3daea --- /dev/null +++ b/build_file/dev/move.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [[ -n $(docker ps -qa -f "name=api_iris") ]]; then + cd /data/web/myweb + docker-compose down +fi +cd /data/web +if [[ -d "myweb_$(date +%Y%m%d)" ]]; then + rm -rf myweb_$(date +%Y%m%d) +fi +if [[ -d "myweb" ]]; then + mv myweb myweb_$(date +%Y%m%d) +fi +mkdir myweb +cp /mnt/build/build.zip myweb +cd myweb +unzip build.zip +chmod 755 -R /data/web/myweb +cd /data/web/myweb +bash update.sh $@ diff --git a/build_file/dev/nginx.conf b/build_file/dev/nginx.conf new file mode 100644 index 0000000..b9c11ab --- /dev/null +++ b/build_file/dev/nginx.conf @@ -0,0 +1,46 @@ +user root; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + map $time_iso8601 $logDate { + '~^(?\d{4}-\d{2}-\d{2})' $ymd; + default 'date-not-found'; + } + + access_log /var/log/nginx/access-$logDate.log main; + open_log_file_cache max=10; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 600; + client_header_timeout 600; + client_body_timeout 600; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 16k; + gzip_http_version 1.1; + gzip_comp_level 9; + gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; + gzip_disable "MSIE [1-6]\."; + gzip_vary on; + + include /etc/nginx/conf.d/*.conf; +} diff --git a/build_file/dev/update-o.sh b/build_file/dev/update-o.sh new file mode 100644 index 0000000..56cc7ef --- /dev/null +++ b/build_file/dev/update-o.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +if [ "$(sudo docker images -q web_ylsa:1.0 2> /dev/null)" != "" ]; +then + echo web_ylsa------remove + sudo docker rmi web_ylsa:1.0 +fi + +if [ "$(sudo docker images -q api_iris:1.0 2> /dev/null)" != "" ]; +then + echo api_iris------remove + sudo docker rmi api_iris:1.0 +fi + +if [ "$(sudo docker images -q api_django:1.0 2> /dev/null)" != "" ]; +then + echo api_django------remove + sudo docker rmi api_django:1.0 +fi + +echo web_ylsa------building +sudo docker build -t web_ylsa:1.0 . +echo web_ylsa------complete + +echo api_iris------building +sudo docker build -t api_iris:1.0 ./api_iris +echo api_iris------complete + +echo api_django------building +docker build -t api_django:1.0 ./api_django +echo api_django------complete + +docker-compose up -d +echo complete diff --git a/build_file/dev/update.sh b/build_file/dev/update.sh new file mode 100644 index 0000000..419a417 --- /dev/null +++ b/build_file/dev/update.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# == 0 ];then + args=("web_vue" "api_iris" "api_django") +else + args=$@ +fi +for arg in ${args[*]};do + if [ $arg == "" ]; then + continue + fi + if [ "$(sudo docker images -q $arg:1.0 2> /dev/null)" != "" ]; + then + echo $arg------remove + sudo docker rmi $arg:1.0 + fi + echo $arg------building + if [ $arg == "web_vue" ];then + sudo docker build -t $arg:1.0 . + else + sudo docker build -t $arg:1.0 ./$arg + fi + echo $arg------complete +done + +docker-compose up -d +echo complete diff --git a/build_file/prd/Dockerfile b/build_file/prd/Dockerfile new file mode 100644 index 0000000..0d23829 --- /dev/null +++ b/build_file/prd/Dockerfile @@ -0,0 +1,12 @@ +FROM nginx +RUN mkdir -p /static/myDocs \ + && cd /static/myDocs \ + && mkdir static \ + && mkdir upload \ + && mkdir upload-video + +#COPY git-ylsa0.cn.key /etc/nginx/git-ylsa0.cn.key +#COPY git-ylsa0.cn_bundle.crt /etc/nginx/git-ylsa0.cn_bundle.crt +COPY default.conf /etc/nginx/conf.d/default.conf +COPY nginx.conf /etc/nginx/nginx.conf +COPY dist /usr/share/nginx/html \ No newline at end of file diff --git a/build_file/prd/build.py b/build_file/prd/build.py new file mode 100644 index 0000000..3a42c62 --- /dev/null +++ b/build_file/prd/build.py @@ -0,0 +1,66 @@ +# coding=utf-8 +import datetime +import os + + +def cp_file(rsc, des): + file_list = os.listdir(rsc) + for i in file_list: + if i in ['venv', '.idea', '.gitignore', 'static', 'migrations', '.git', '__pycache__', 'upload', 'templates', 'logs', 'upload-video', 'build.py', 'move.sh']: + continue + if os.path.isfile(os.path.join(rsc, i)): + os.system('copy /Y %s %s' % (os.path.join(rsc, i), os.path.join(des, i))) + else: + os.makedirs(os.path.join(des, i)) + cp_file(os.path.join(rsc, i), os.path.join(des, i)) + + +# 程序执行会将前后端程序复制到部署文件夹 +if __name__ == '__main__': + os.system('chcp 65001') + build_dir = r'C:\Users\m1582\Documents\vmshare\build-prd' + date = datetime.datetime.today().date().strftime('%Y-%m-%d') + # # 公共api + # rsc_dir = r'..\..\api_django' + # des_dir = r'%s\api_django' % build_dir + # if os.path.exists(des_dir): + # if not os.path.exists(r'%s\zzzz_bak' % build_dir): + # os.makedirs(r'%s\zzzz_bak' % build_dir) + # if os.path.exists(r'%s\zzzz_bak\%s_api_django' % (build_dir, date)): + # os.system(r'rd /s /q %s\zzzz_bak\%s_api_django' % (build_dir, date)) + # os.system(r'move %s %s\zzzz_bak\%s_api_django' % (des_dir, build_dir, date)) + # os.makedirs(des_dir) + # cp_file(rsc_dir, des_dir) + # 后端 + rsc_dir = r'..\..\api_iris' + des_dir = r'%s\api_iris' % build_dir + if os.path.exists(des_dir): + if not os.path.exists(r'%s\zzzz_bak' % build_dir): + os.makedirs(r'%s\zzzz_bak' % build_dir) + if os.path.exists(r'%s\zzzz_bak\%s_api_iris' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_api_iris' % (build_dir, date)) + os.system(r'move %s %s\zzzz_bak\%s_api_iris' % (des_dir, build_dir, date)) + os.makedirs(des_dir) + cp_file(rsc_dir, des_dir) + # 后端 + rsc_dir = r'..\..\api_file' + des_dir = r'%s\api_file' % build_dir + if os.path.exists(des_dir): + if not os.path.exists(r'%s\zzzz_bak' % build_dir): + os.makedirs(r'%s\zzzz_bak' % build_dir) + if os.path.exists(r'%s\zzzz_bak\%s_api_file' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_api_file' % (build_dir, date)) + os.system(r'move %s %s\zzzz_bak\%s_api_file' % (des_dir, build_dir, date)) + os.makedirs(des_dir) + cp_file(rsc_dir, des_dir) + # 前端 + rsc_dir_web = r'..\..\web_vue\dist' + if os.path.exists(rsc_dir_web): + if os.path.exists(r'%s\dist' % build_dir): + if os.path.exists(r'%s\zzzz_bak\%s_dist' % (build_dir, date)): + os.system(r'rd /s /q %s\zzzz_bak\%s_dist' % (build_dir, date)) + os.system(r'move %s/dist %s\zzzz_bak\%s_dist' % (build_dir, build_dir, date)) + os.system(r'xcopy /E /C /I /H /Y %s %s\dist' % (rsc_dir_web, build_dir)) + os.system(r'rd /s /q %s' % rsc_dir_web) + # 配置文件 + cp_file(r".\\", build_dir) diff --git a/build_file/prd/default.conf b/build_file/prd/default.conf new file mode 100644 index 0000000..98f4f23 --- /dev/null +++ b/build_file/prd/default.conf @@ -0,0 +1,96 @@ +upstream api_iris { + server api_iris:8080; +} +upstream api_file { + server api_file:8081; +} +server { + listen 80; + server_name git-ylsa0.cn; + return 301 https://$server_name$request_uri; +} +server { + listen 443 ssl; + server_name git-ylsa0.cn; + ssl_certificate git-ylsa0.cn_bundle.crt; + ssl_certificate_key git-ylsa0.cn.key; + ssl_session_timeout 5m; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; + ssl_prefer_server_ciphers on; + + proxy_read_timeout 600; + client_max_body_size 9000m; + autoindex on; + autoindex_exact_size off; + autoindex_localtime on; + charset utf-8; + + location /api/ { + proxy_pass http://api_iris/api/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /api_file/ { + proxy_pass http://api_file/api/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /admin/ { + proxy_pass http://api_iris/admin/; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + location /static/ { + alias /static/static/; + } + location /upload/ { + internal; + alias /static/upload/; + sendfile on; + charset utf-8; + } + location /upload-note/ { + internal; + alias /static/upload-note/; + sendfile on; + charset utf-8; + } + location /upload-video/ { + internal; + alias /static/upload-video/; + sendfile on; + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Credentials' 'true'; + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + charset utf-8; + } + + location ^~/ws { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_pass http://api_iris/ws; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect off; + } + + location / { + root /usr/share/nginx/html; + try_files $uri /index.html; + autoindex on; + } +} diff --git a/build_file/prd/docker-compose.yml b/build_file/prd/docker-compose.yml new file mode 100644 index 0000000..98e2ef5 --- /dev/null +++ b/build_file/prd/docker-compose.yml @@ -0,0 +1,89 @@ +version: "3" + +services: + api_iris: + image: api_iris:1.0 + container_name: api_iris + restart: always + environment: + - version=prd + healthcheck: + test: + [ + "CMD-SHELL", + "curl -sS 'http://127.0.0.1:8080/api' || kill 1" + ] + interval: 5m + timeout: 10s + retries: 3 + volumes: + - "/data/share/static:/web/api_iris/static/" + - "/data/share/upload:/web/api_iris/upload/" + - "/data/share/upload-note:/web/api_iris/upload-note/" + - "/data/share-video/upload-video:/web/api_iris/upload-video/" + - "/data/share/log/backend-iris:/web/api_iris/logs/" + - "/data/share/log/nginx-vue:/web/api_iris/logs/nginx" + - "/etc/localtime:/etc/localtime" + + api_file: + image: api_file:1.0 + container_name: api_file + restart: always + environment: + - version=prd + healthcheck: + test: + [ + "CMD-SHELL", + "curl -sS 'http://127.0.0.1:8081/api' || kill 1" + ] + interval: 5m + timeout: 10s + retries: 3 + volumes: + - "/data/share/static:/web/api_file/static/" + - "/data/share/upload:/web/api_file/upload/" + - "/data/share/upload-note:/web/api_file/upload-note/" + - "/data/share-video/upload-video:/web/api_file/upload-video/" + - "/data/share/log/backend-iris:/web/api_file/logs/" + - "/data/share/log/nginx-vue:/web/api_file/logs/nginx" + - "/etc/localtime:/etc/localtime" + +# api_django: +# image: api_django:1.0 +# container_name: api_django +# restart: always +# command: /bin/bash -c "uwsgi --ini uwsgi.ini" +# healthcheck: +# test: +# [ +# "CMD-SHELL", +# "curl -sS 'http://127.0.0.1:8000/api' || kill 1" +# ] +# interval: 5m +# timeout: 10s +# retries: 3 +# volumes: +# - "/data/share/log/backend-iris:/web/api_django/logs/" +# - "/data/share/log/nginx-vue:/web/api_django/logs/nginx" +# - "/data/share/log/backend-django:/var/log/uwsgi" +# - "/etc/localtime:/etc/localtime" + + web_vue: + image: web_vue:1.0 + container_name: web_vue + restart: always + volumes: + - "/root/build/git-ylsa0.cn.key:/etc/nginx/git-ylsa0.cn.key" + - "/root/build/git-ylsa0.cn_bundle.crt:/etc/nginx/git-ylsa0.cn_bundle.crt" + - "/data/share/static:/static/static/" + - "/data/share/upload:/static/upload/" + - "/data/share/upload-note:/static/upload-note/" + - "/data/share-video/upload-video:/static/upload-video/" + - "/data/share/log/nginx-vue:/var/log/nginx/" + - "/etc/localtime:/etc/localtime" + ports: + - "80:80" + - "443:443" + depends_on: + - api_iris diff --git a/build_file/prd/git-ylsa0.cn.key b/build_file/prd/git-ylsa0.cn.key new file mode 100644 index 0000000..001139c --- /dev/null +++ b/build_file/prd/git-ylsa0.cn.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAy1gPde5WafiSzPYYBngf8vognefu/DPC0g+YGWBVOxm72D78 +tL9fWUQEqbh6nhSoveEAGJwX/ixudHbFck7pbXmj539Twi9XI/y20yBa88JxuiWl +x/Brn4Uv9GW1AAOUEUgDLOFMHS+hAi/oEQ0vN0EgiXTwHn0hl2vxfZW01w7M9gGJ +E9+NAnM8TAQBUxwJeAioJpi08AWQCJaLRhqVNKjzBZGS1Ffm5n5AHQZVn4UWyUC9 +7HxSkYFs20DdM7tPdlzqvGs56+bcAydt0iuV8MYhHWOUbUIUBrqcJgW9Ov4g3IRR +KOdh65y9gbjTlHnMecKVxeY0aLYjucP2iEWs3wIDAQABAoIBAQCaqkhYMwiXYfKG +40gy43upnIbilF86hURR8nqGErfBVDmEqaQc9tLXWt0RGrhpNN2ET3d7QH8fXTxG +aXCVGWCDXFpG4poawVdOkBGfVKTZc7R9GdWW1k+F7hAjnJinghFFc7i2kkcKjAez +Wizxi022gVr2MnPRPOwn+HqeQxhh2gwk2zd3Uvy1X7bukZwzqbZbB18jLVVAFRVn +yb1tmpXGLWmHR7q96ohdfZoJT1K5a+rGzS7uY1xJb20CW6V5I/ik5wt/exMke3lO +k9V26XOtS92Wco0Bz/+X1GXSekHmEY2NzO+f4M5KrPfN1+aETsoKlcMNrfGyCrfc +JxJXM7cBAoGBANR4K4k9fk2OImCPdy71Ote0+WJO2fnEbnLv36kwaf96Nrkyj97J +4dMSaeV9wOksPJLGQS2fwEVu+cv7VG0ALnM0vVPdcnqX2WK9A472WdN14t84stZx +KJZr/V/LJFnUF0ULv/I9Gfaqt39TlZFq+8hh/FJwQrOdWlYuyV9iyrdxAoGBAPUB +RRIbblVPRpCkY6549x+T/PAV4i9pqFdUdMq19j9dKsffKUx6WXM6Oh0KnnmX+qNi ++Qr1/hoiWK0mYX1yfCExO2wb8vDhBaNLFcH2PhZXOndAL42wBpWZUmLQ9UA7SwFJ +yldgulLp0eERQa4SC+6EKE3Anl7mPx2qC2bhaaFPAoGAINTc7V0aOkO/XiptIU11 +pUVqz90dY7IN2ybj6dH4Xyj0cdO1VZjek24h/PtcputWBNwr0DACVvhaE0In/pvr +kZPRubbbbMQwLEjG1v2MTdfGkfXB9M8RlYTkZzwNxu+2FM5G/9ifPXWN21gAIbNl +asZxZg/Azt5+yhh6t4mdh5ECgYAbOSLlmiquS/q5Q6rXzhUXayglvSi+v+y2l2nK +xGEyNTX1s3QxTT73MLcYVv+43ww4b1zgvOiZGsvjoWofuELWpVPG9WwPG9G2jTdD +sArCDLswWO9vvOleYgTnefRmSLBS2lIjV1ocsGJjsbkskFDHFeQsj4SJYugMccKG +kfFcvQKBgAq749ZtR55zAp/MygSlovhujbMQWOCRjfmpfAPNADKVKkts7Hz0UkYi +vRPA6JMO837DDAyh/5wi9Tplh6jBM7ZR7JNBmk5foY6K9yYWec1CH1HDD1SDPKQY +NiuucE7AE1F9FOrShfXmKfJGJGBwsR7/2K6ox9xNEExzDdrZls41 +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/build_file/prd/git-ylsa0.cn_bundle.crt b/build_file/prd/git-ylsa0.cn_bundle.crt new file mode 100644 index 0000000..dd66ca6 --- /dev/null +++ b/build_file/prd/git-ylsa0.cn_bundle.crt @@ -0,0 +1,72 @@ +-----BEGIN CERTIFICATE----- +MIIG5jCCBM6gAwIBAgIQCPyCK2kRd66nPH7hb0N6OzANBgkqhkiG9w0BAQsFADBb +MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg +SW5jLjElMCMGA1UEAxMcVHJ1c3RBc2lhIERWIFRMUyBSU0EgQ0EgMjAyNTAeFw0y +NTA0MTgwMDAwMDBaFw0yNTA3MTcyMzU5NTlaMBcxFTATBgNVBAMTDGdpdC15bHNh +MC5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtYD3XuVmn4ksz2 +GAZ4H/L6IJ3n7vwzwtIPmBlgVTsZu9g+/LS/X1lEBKm4ep4UqL3hABicF/4sbnR2 +xXJO6W15o+d/U8IvVyP8ttMgWvPCcbolpcfwa5+FL/RltQADlBFIAyzhTB0voQIv +6BENLzdBIIl08B59IZdr8X2VtNcOzPYBiRPfjQJzPEwEAVMcCXgIqCaYtPAFkAiW +i0YalTSo8wWRktRX5uZ+QB0GVZ+FFslAvex8UpGBbNtA3TO7T3Zc6rxrOevm3AMn +bdIrlfDGIR1jlG1CFAa6nCYFvTr+INyEUSjnYeucvYG405R5zHnClcXmNGi2I7nD +9ohFrN8CAwEAAaOCAugwggLkMB8GA1UdIwQYMBaAFLQSKKW0wB2fKXFpPNkRlkp1 +aVDAMB0GA1UdDgQWBBTlGvVqmm0T+17WOjXf+bRDROQk0DApBgNVHREEIjAgggxn +aXQteWxzYTAuY26CEHd3dy5naXQteWxzYTAuY24wPgYDVR0gBDcwNTAzBgZngQwB +AgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4G +A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIweQYI +KwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j +b20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9UcnVz +dEFzaWFEVlRMU1JTQUNBMjAyNS5jcnQwDAYDVR0TAQH/BAIwADCCAX0GCisGAQQB +1nkCBAIEggFtBIIBaQFnAHYAEvFONL1TckyEBhnDjz96E/jntWKHiJxtMAWE6+WG +JjoAAAGWRkwfqQAABAMARzBFAiBBHS9jqaLJlyrLkjN5qogGnCaDOnreIYpKp9c9 +kOyBNwIhAOjKYVSKBpT+NzNuK0ECAqNqHI2O8lbcb+suYSnJsLsNAHUApELFBklg +YVSPD9TqnPt6LSZFTYepfy/fRVn2J086hFQAAAGWRkwf8gAABAMARjBEAiEA4FcC ++E8K4SGch61oF/EOB70aENJOY75yXTbi0D+zbPICHyAzxg7zR9w6buULxO66A1k3 +3PAi+yWCuqFLuKAegi8AdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwN +sAAAAZZGTB+tAAAEAwBHMEUCIB8ymVM5uZHirHtgqFrEjDgSP4UZ+Ux1bFP5aPYX +QdgBAiEAiq8gn/BQ2ZQHcmMmXieuf3GsVMzhFLm+P6u+kMq7+yswDQYJKoZIhvcN +AQELBQADggIBACDD9/XVOBHMrUoja7p4DtiF4OVckXXWRTa+mTC8M8ZorbKBv/Mk +i1jxoe2HX49yLy01aP5PKVAkMV8oxJpDbq0W6gDm9ALzE1Fhh225v0AcLPcUIslG +wFWjaTVlx0UcozErcbBSJKC13EN2LiEfyAt3lOnmpLhVC25IYrMWJXTamp985Klz +9N71Ttw1PzELWRAQZwYenf57ikhqPR6VGbhkx1blVBqugmvaLPXQjspwq2YVdwEI +3y60dGmwuNvld4pH2xHQvLkaZiQdQ90NgzxqZannHgY4S8yfsDBzjpHZrYYOynRm +LpK4dTJwYHoQ+qwUmK9aEgZ9PEX0FJpEl1IauhP/4iIazY2clS/9VNHfsWrrdng4 +ZaAD4obpA12GmjvjTeqd5oNVkIi9PSCkkwPFoI/PO6iYvreHtxD2z494UoeGMTHO +OzYv1MsnuKgwPIF+R7cnq/1sdIw8/cC0Z88VQCQdZd3C0Sx7Ee54KEXTZQBHIZuZ +mVlKKf98jISSGTuZGeQox8P5PON+/BcRbYXtWvSbu0zzWBxa2jZngkEWNhMFX4zY +BBti+nUpGdWnb1NHk4/bs6YiQwiL2CQdhgWmput0/fV0A0IKXaHOZgAw915O9i57 +Hu5lAvOtGZ6IEVjNlSXXrcIeTP/DD7oOSPcQ3C3I+7SE8qAVGyPJP2WU +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnjCCBIagAwIBAgIQCSYyO0lk42hGFRLe8aXVLDANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0yNTAxMDgwMDAwMDBaFw0zNTAxMDcyMzU5NTlaMFsxCzAJBgNVBAYTAkNO +MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQD +ExxUcnVzdEFzaWEgRFYgVExTIFJTQSBDQSAyMDI1MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA0fuEmuBIsN6ZZVq+gRobMorOGIilTCIfQrxNpR8FUZ9R +/GfbiekbiIKphQXEZ7N1uBnn6tXUuZ32zl6jPkZpHzN/Bmgk1BWSIzVc0npMzrWq +/hrbk5+KddXJdsNpeG1+Q8lc8uVMBrztnxaPb7Rh7yQCsMrcO4hgVaqLJWkVvEfW +ULtoCHQnNaj4IroG6VxQf1oArQ8bPbwpI02lieSahRa78FQuXdoGVeQcrkhtVjZs +ON98vq5fPWZX2LFv7e5J6P9IHbzvOl8yyQjv+2/IOwhNSkaXX3bI+//bqF9XW/p7 ++gsUmHiK5YsvLjmXcvDmoDEGrXMzgX31Zl2nJ+umpRbLjwP8rxYIUsKoEwEdFoto +Aid59UEBJyw/GibwXQ5xTyKD/N6C8SFkr1+myOo4oe1UB+YgvRu6qSxIABo5kYdX +FodLP4IgoVJdeUFs1Usa6bxYEO6EgMf5lCWt9hGZszvXYZwvyZGq3ogNXM7eKyi2 +20WzJXYMmi9TYFq2Fa95aZe4wki6YhDhhOO1g0sjITGVaB73G+JOCI9yJhv6+REN +D40ZpboUHE8JNgMVWbG1isAMVCXqiADgXtuC+tmJWPEH9cR6OuJLEpwOzPfgAbnn +2MRu7Tsdr8jPjTPbD0FxblX1ydW3RG30vwLF5lkTTRkHG9epMgpPMdYP7nY/08MC +AwEAAaOCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLQSKKW0 +wB2fKXFpPNkRlkp1aVDAMB8GA1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485 +MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +dgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E +aWdpQ2VydEdsb2JhbFJvb3RHMi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov +L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDARBgNV +HSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEBAJ4a3svh316GY2+Z7EYx +mBIsOwjJSnyoEfzx2T699ctLLrvuzS79Mg3pPjxSLlUgyM8UzrFc5tgVU3dZ1sFQ +I4RM+ysJdvIAX/7Yx1QbooVdKhkdi9X7QN7yVkjqwM3fY3WfQkRTzhIkM7mYIQbR +r+y2Vkju61BLqh7OCRpPMiudjEpP1kEtRyGs2g0aQpEIqKBzxgitCXSayO1hoO6/ +71ts801OzYlqYW9OQQQ2GCJyFbD6XHDjdpn+bWUxTKWaMY0qedSCbHE3Kl2QEF0C +ynZ7SbC03yR+gKZQDeTXrNP1kk5Qhe7jSXgw+nhbspe0q/M1ZcNCz+sPxeOwdCcC +gJE= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/build_file/prd/nginx.conf b/build_file/prd/nginx.conf new file mode 100644 index 0000000..b9c11ab --- /dev/null +++ b/build_file/prd/nginx.conf @@ -0,0 +1,46 @@ +user root; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + map $time_iso8601 $logDate { + '~^(?\d{4}-\d{2}-\d{2})' $ymd; + default 'date-not-found'; + } + + access_log /var/log/nginx/access-$logDate.log main; + open_log_file_cache max=10; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 600; + client_header_timeout 600; + client_body_timeout 600; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 16k; + gzip_http_version 1.1; + gzip_comp_level 9; + gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; + gzip_disable "MSIE [1-6]\."; + gzip_vary on; + + include /etc/nginx/conf.d/*.conf; +} diff --git a/build_file/prd/update.sh b/build_file/prd/update.sh new file mode 100644 index 0000000..0570951 --- /dev/null +++ b/build_file/prd/update.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +if [ $# == 0 ];then + args=("web_vue" "api_iris" "api_file") +else + args=$@ +fi +for arg in ${args[*]};do + if [[ $arg != "web_vue" && $arg != "api_iris" && $arg != "api_file" ]]; then + continue + fi + if [ "$(sudo docker images -q $arg:1.0 2> /dev/null)" != "" ]; + then + echo $arg------remove + sudo docker rmi $arg:1.0 + fi + echo $arg------building + if [ $arg == "web_vue" ];then + sudo docker build -t $arg:1.0 . + else + sudo docker build -t $arg:1.0 ./$arg + fi + echo $arg------complete +done + +docker-compose up -d +echo complete diff --git a/web_vue/.vscode/extensions.json b/web_vue/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/web_vue/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/web_vue/README.md b/web_vue/README.md new file mode 100644 index 0000000..e69de29 diff --git a/web_vue/index.html b/web_vue/index.html new file mode 100644 index 0000000..21be348 --- /dev/null +++ b/web_vue/index.html @@ -0,0 +1,13 @@ + + + + + + + ylsa + + +
+ + + diff --git a/web_vue/package-lock.json b/web_vue/package-lock.json new file mode 100644 index 0000000..88fbde3 --- /dev/null +++ b/web_vue/package-lock.json @@ -0,0 +1,2661 @@ +{ + "name": "web_vue", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web_vue", + "version": "0.0.0", + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@types/node": "^20.14.10", + "@vitejs/plugin-vue": "^5.2.1", + "animate.css": "^4.1.1", + "axios": "1.8.2", + "bootstrap-icons": "^1.11.3", + "echarts": "^5.5.1", + "element-plus": "^2.9.0", + "hls.js": "^1.5.20", + "jsencrypt": "^3.3.2", + "lodash": "^4.17.21", + "luxon": "^3.5.0", + "md-editor-v3": "^4.21.1", + "vue": "^3.4.21", + "vue-request": "^2.0.4", + "vue-router": "^4.4.0", + "vue-video-player": "^6.0.0" + }, + "devDependencies": { + "@types/luxon": "^3.4.2", + "typescript": "^5.2.2", + "vite": "6.2.3", + "vue-tsc": "^2.0.6" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.8", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.1", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.1.tgz", + "integrity": "sha512-iWHdj/B1ethnHRTwZj+C1obmmuCzquH29EbcKr0qIjA9NfDeBDJ7vs+WOHsFeLeflE4o+dHfYndJloMKHUkWUA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.7.1", + "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.7.1.tgz", + "integrity": "sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-angular": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz", + "integrity": "sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.3" + } + }, + "node_modules/@codemirror/lang-cpp": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", + "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/cpp": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-css/-/lang-css-6.3.0.tgz", + "integrity": "sha512-CyR4rUNG9OYcXDZwMPvJdtb6PHbBDKUc/6Na2BIwZ6dKab1JQqKa4di+RNRY9Myn7JB81vayKwJeQ7jEdmNVDA==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" + } + }, + "node_modules/@codemirror/lang-go": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-go/-/lang-go-6.0.1.tgz", + "integrity": "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/go": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-java": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz", + "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", + "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-less": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-less/-/lang-less-6.0.2.tgz", + "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-liquid": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-liquid/-/lang-liquid-6.2.1.tgz", + "integrity": "sha512-J1Mratcm6JLNEiX+U2OlCDTysGuwbHD76XwuL5o5bo9soJtSbz2g6RU3vGHFyS5DC8rgVmFSzi7i6oBftm7tnA==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "node_modules/@codemirror/lang-markdown": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-markdown/-/lang-markdown-6.3.0.tgz", + "integrity": "sha512-lYrI8SdL/vhd0w0aHIEvIRLRecLF7MiiRfzXFZY94dFwHqC9HtgxgagJ8fyYNBldijGatf9wkms60d8SrAj6Nw==", + "dependencies": { + "@codemirror/autocomplete": "^6.7.1", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.3.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/markdown": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-php": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-php/-/lang-php-6.0.1.tgz", + "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/php": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-python": { + "version": "6.1.6", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.6.tgz", + "integrity": "sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==", + "dependencies": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.8.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/python": "^1.1.4" + } + }, + "node_modules/@codemirror/lang-rust": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", + "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/rust": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sass": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", + "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/sass": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sql": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz", + "integrity": "sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-vue": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", + "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "node_modules/@codemirror/lang-wast": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", + "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-xml": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", + "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/xml": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-yaml": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-yaml/-/lang-yaml-6.1.1.tgz", + "integrity": "sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.2.0", + "@lezer/yaml": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.3", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.3.tgz", + "integrity": "sha512-kDqEU5sCP55Oabl6E7m5N+vZRoc0iWqgDVhEKifcHzPzjqCegcO4amfrYVL9PmPZpl4G0yjkpTpUO/Ui8CzO8A==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/language-data": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@codemirror/language-data/-/language-data-6.5.1.tgz", + "integrity": "sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==", + "dependencies": { + "@codemirror/lang-angular": "^0.1.0", + "@codemirror/lang-cpp": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-go": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-java": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/lang-json": "^6.0.0", + "@codemirror/lang-less": "^6.0.0", + "@codemirror/lang-liquid": "^6.0.0", + "@codemirror/lang-markdown": "^6.0.0", + "@codemirror/lang-php": "^6.0.0", + "@codemirror/lang-python": "^6.0.0", + "@codemirror/lang-rust": "^6.0.0", + "@codemirror/lang-sass": "^6.0.0", + "@codemirror/lang-sql": "^6.0.0", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/lang-wast": "^6.0.0", + "@codemirror/lang-xml": "^6.0.0", + "@codemirror/lang-yaml": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/legacy-modes": "^6.4.0" + } + }, + "node_modules/@codemirror/legacy-modes": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/@codemirror/legacy-modes/-/legacy-modes-6.4.1.tgz", + "integrity": "sha512-vdg3XY7OAs5uLDx2Iw+cGfnwtd7kM+Et/eMsqAGTfT/JKiVBQZXosTzjEbWAi/FrY6DcQIz8mQjBozFHZEUWQA==", + "dependencies": { + "@codemirror/language": "^6.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.2.tgz", + "integrity": "sha512-PDFG5DjHxSEjOXk9TQYYVjZDqlZTFaDBfhQixHnQOEVDDNHUbEh/hstAjcQJaA6FQdZTD1hquXTK0rVBLADR1g==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" + }, + "node_modules/@codemirror/view": { + "version": "6.34.1", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.34.1.tgz", + "integrity": "sha512-t1zK/l9UiRqwUNPm+pdIT0qzJlzuVckbTEMVNFhfWkGiBQClstzg+78vedCvLSX0xJEZ6lwZbPpnljL7L6iwMQ==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.4", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "dependencies": { + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.7", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==" + }, + "node_modules/@lezer/cpp": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@lezer/cpp/-/cpp-1.1.2.tgz", + "integrity": "sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/css": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/@lezer/css/-/css-1.1.9.tgz", + "integrity": "sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/go": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/go/-/go-1.0.0.tgz", + "integrity": "sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmmirror.com/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/java": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@lezer/java/-/java-1.1.3.tgz", + "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.19", + "resolved": "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.19.tgz", + "integrity": "sha512-j44kbR1QL26l6dMunZ1uhKBFteVGLVCBGNUD2sUaMnic+rbTviVuoK0CD1l9FTW31EueWvFFswCKMH7Z+M3JRA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/json/-/json-1.0.2.tgz", + "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.3.1.tgz", + "integrity": "sha512-DGlzU/i8DC8k0uz1F+jeePrkATl0jWakauTzftMQOcbaMkHbNSRki/4E2tOzJWsVpoKYhe7iTJ03aepdwVUXUA==", + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@lezer/php": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/php/-/php-1.0.2.tgz", + "integrity": "sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.1.0" + } + }, + "node_modules/@lezer/python": { + "version": "1.1.14", + "resolved": "https://registry.npmmirror.com/@lezer/python/-/python-1.1.14.tgz", + "integrity": "sha512-ykDOb2Ti24n76PJsSa4ZoDF0zH12BSw1LGfQXCYJhJyOGiFTfGaX0Du66Ze72R+u/P35U+O6I9m8TFXov1JzsA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/rust": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/rust/-/rust-1.0.2.tgz", + "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/sass": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@lezer/sass/-/sass-1.0.7.tgz", + "integrity": "sha512-8HLlOkuX/SMHOggI2DAsXUw38TuURe+3eQ5hiuk9QmYOUyC55B1dYEIMkav5A4IELVaW4e1T4P9WRiI5ka4mdw==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/xml": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@lezer/xml/-/xml-1.0.5.tgz", + "integrity": "sha512-VFouqOzmUWfIg+tfmpcdV33ewtK+NSwd4ngSe1aG7HFb4BN0ExyY1b8msp+ndFrnlG4V4iC8yXacjFtrwERnaw==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/yaml": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@lezer/yaml/-/yaml-1.0.3.tgz", + "integrity": "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", + "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", + "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", + "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", + "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", + "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", + "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", + "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", + "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", + "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", + "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", + "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", + "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", + "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", + "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", + "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", + "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", + "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", + "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", + "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", + "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/luxon": { + "version": "3.4.2", + "resolved": "https://registry.npmmirror.com/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" + }, + "node_modules/@types/node": { + "version": "20.14.10", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/video.js": { + "version": "7.3.58", + "resolved": "https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz", + "integrity": "sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==", + "peer": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vavt/util": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@vavt/util/-/util-2.1.0.tgz", + "integrity": "sha512-YIfAvArSFVXmWvoF+DEGD0FhkhVNcCtVWWkfYtj76eSrwHh/wuEEFhiEubg1XLNM3tChO8FH8xJCT/hnizjgFQ==" + }, + "node_modules/@videojs-player/vue": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@videojs-player/vue/-/vue-1.0.0.tgz", + "integrity": "sha512-WonTezRfKu3fYdQLt/ta+nuKH6gMZUv8l40Jke/j4Lae7IqeO/+lLAmBnh3ni88bwR+vkFXIlZ2Ci7VKInIYJg==", + "peerDependencies": { + "@types/video.js": "7.x", + "video.js": "7.x", + "vue": "3.x" + } + }, + "node_modules/@videojs/http-streaming": { + "version": "2.16.3", + "resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.16.3.tgz", + "integrity": "sha512-91CJv5PnFBzNBvyEjt+9cPzTK/xoVixARj2g7ZAvItA+5bx8VKdk5RxCz/PP2kdzz9W+NiDUMPkdmTsosmy69Q==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "3.0.5", + "aes-decrypter": "3.1.3", + "global": "^4.4.0", + "m3u8-parser": "4.8.0", + "mpd-parser": "^0.22.1", + "mux.js": "6.0.1", + "video.js": "^6 || ^7" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "video.js": "^6 || ^7" + } + }, + "node_modules/@videojs/vhs-utils": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", + "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/@videojs/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "global": "~4.4.0", + "is-function": "^1.0.1" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.0.tgz", + "integrity": "sha512-pvhL24WUh3VDnv7Yw5N1sjhPtdx7q9g+Wl3tggmnkMcyK8GcCNElF2zHiKznryn0DiUGk+eez/p2qQhz+puuHw==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.3.0" + } + }, + "node_modules/@volar/source-map": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.0.tgz", + "integrity": "sha512-G/228aZjAOGhDjhlyZ++nDbKrS9uk+5DMaEstjvzglaAw7nqtDyhnQAsYzUg6BMP9BtwZ59RIw5HGePrutn00Q==", + "dev": true, + "dependencies": { + "muggle-string": "^0.4.0" + } + }, + "node_modules/@volar/typescript": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.0.tgz", + "integrity": "sha512-PtUwMM87WsKVeLJN33GSTUjBexlKfKgouWlOUIv7pjrOnTwhXHZNSmpc312xgXdTjQPpToK6KXSIcKu9sBQ5LQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.3.0", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.29.tgz", + "integrity": "sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.29", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.29.tgz", + "integrity": "sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==", + "dependencies": { + "@vue/compiler-core": "3.4.29", + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.29.tgz", + "integrity": "sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.29", + "@vue/compiler-dom": "3.4.29", + "@vue/compiler-ssr": "3.4.29", + "@vue/shared": "3.4.29", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.29.tgz", + "integrity": "sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==", + "dependencies": { + "@vue/compiler-dom": "3.4.29", + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.3", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==" + }, + "node_modules/@vue/language-core": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.21.tgz", + "integrity": "sha512-vjs6KwnCK++kIXT+eI63BGpJHfHNVJcUCr3RnvJsccT3vbJnZV5IhHR2puEkoOkIbDdp0Gqi1wEnv3hEd3WsxQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.3.0-alpha.15", + "@vue/compiler-dom": "^3.4.0", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.29.tgz", + "integrity": "sha512-w8+KV+mb1a8ornnGQitnMdLfE0kXmteaxLdccm2XwdFxXst4q/Z7SEboCV5SqJNpZbKFeaRBBJBhW24aJyGINg==", + "dependencies": { + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.29.tgz", + "integrity": "sha512-s8fmX3YVR/Rk5ig0ic0NuzTNjK2M7iLuVSZyMmCzN/+Mjuqqif1JasCtEtmtoJWF32pAtUjyuT2ljNKNLeOmnQ==", + "dependencies": { + "@vue/reactivity": "3.4.29", + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.29.tgz", + "integrity": "sha512-gI10atCrtOLf/2MPPMM+dpz3NGulo9ZZR9d1dWo4fYvm+xkfvRrw1ZmJ7mkWtiJVXSsdmPbcK1p5dZzOCKDN0g==", + "dependencies": { + "@vue/reactivity": "3.4.29", + "@vue/runtime-core": "3.4.29", + "@vue/shared": "3.4.29", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.29.tgz", + "integrity": "sha512-HMLCmPI2j/k8PVkSBysrA2RxcxC5DgBiCdj7n7H2QtR8bQQPqKAe8qoaxLcInzouBmzwJ+J0x20ygN/B5mYBng==", + "dependencies": { + "@vue/compiler-ssr": "3.4.29", + "@vue/shared": "3.4.29" + }, + "peerDependencies": { + "vue": "3.4.29" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.29.tgz", + "integrity": "sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==" + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/aes-decrypter": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz", + "integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, + "node_modules/animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.2.tgz", + "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bootstrap-icons": { + "version": "1.11.3", + "resolved": "https://registry.npmmirror.com/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz", + "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ] + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "peer": true + }, + "node_modules/echarts": { + "version": "5.5.1", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", + "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.0" + } + }, + "node_modules/element-plus": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.0.tgz", + "integrity": "sha512-ccOFXKsauo2dtokAr4OX7gZsb7TuAoVxA2zGRZo5o2yyDDBLBaZxOoFQPoxITSLcHbBfQuNDGK5Iag5hnyKkZA==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.13", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "peer": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hls.js": { + "version": "1.5.20", + "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.20.tgz", + "integrity": "sha512-uu0VXUK52JhihhnN/MVVo1lvqNNuhoxkonqgO3IpjvQiGpJBdIXMGkofjQb/j9zvV7a1SW8U9g1FslWx/1HOiQ==" + }, + "node_modules/individual": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz", + "integrity": "sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==", + "peer": true + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "peer": true + }, + "node_modules/jsencrypt": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.2.tgz", + "integrity": "sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==" + }, + "node_modules/keycode": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz", + "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==", + "peer": true + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/m3u8-parser": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz", + "integrity": "sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-image-figures": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz", + "integrity": "sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/markdown-it-sub": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sub/-/markdown-it-sub-2.0.0.tgz", + "integrity": "sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==" + }, + "node_modules/markdown-it-sup": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz", + "integrity": "sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==" + }, + "node_modules/md-editor-v3": { + "version": "4.21.1", + "resolved": "https://registry.npmmirror.com/md-editor-v3/-/md-editor-v3-4.21.1.tgz", + "integrity": "sha512-887rjL0jJBdu8yA7jHU472gEaLlJ4kH8POzG/qYRLtIN72RuAOuKTiDfJVdnrSqMgpIrXYgVgVt36luQpo/zMA==", + "dependencies": { + "@codemirror/lang-markdown": "^6.2.5", + "@codemirror/language-data": "^6.5.1", + "@types/markdown-it": "^14.0.1", + "@vavt/util": "^2.1.0", + "codemirror": "^6.0.1", + "copy-to-clipboard": "^3.3.3", + "lru-cache": "^10.2.0", + "markdown-it": "^14.0.0", + "markdown-it-image-figures": "^2.1.1", + "markdown-it-sub": "^2.0.0", + "markdown-it-sup": "^2.0.0", + "medium-zoom": "^1.1.0", + "xss": "^1.0.15" + }, + "peerDependencies": { + "vue": "^3.2.47" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/medium-zoom": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/medium-zoom/-/medium-zoom-1.1.0.tgz", + "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==" + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "peer": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mpd-parser": { + "version": "0.22.1", + "resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.22.1.tgz", + "integrity": "sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "@xmldom/xmldom": "^0.8.3", + "global": "^4.4.0" + }, + "bin": { + "mpd-to-m3u8-json": "bin/parse.js" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/mux.js": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz", + "integrity": "sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pkcs7": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz", + "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.5.5" + }, + "bin": { + "pkcs7": "bin/cli.js" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "peer": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "peer": true + }, + "node_modules/rollup": { + "version": "4.39.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.39.0.tgz", + "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rust-result": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz", + "integrity": "sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==", + "peer": true, + "dependencies": { + "individual": "^2.0.0" + } + }, + "node_modules/safe-json-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz", + "integrity": "sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==", + "peer": true, + "dependencies": { + "rust-result": "^1.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/url-toolkit": { + "version": "2.2.5", + "resolved": "https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz", + "integrity": "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==", + "peer": true + }, + "node_modules/video.js": { + "version": "7.21.6", + "resolved": "https://registry.npmmirror.com/video.js/-/video.js-7.21.6.tgz", + "integrity": "sha512-m41TbODrUCToVfK1aljVd296CwDQnCRewpIm5tTXMuV87YYSGw1H+VDOaV45HlpcWSsTWWLF++InDgGJfthfUw==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "2.16.3", + "@videojs/vhs-utils": "^3.0.4", + "@videojs/xhr": "2.6.0", + "aes-decrypter": "3.1.3", + "global": "^4.4.0", + "keycode": "^2.2.0", + "m3u8-parser": "4.8.0", + "mpd-parser": "0.22.1", + "mux.js": "6.0.1", + "safe-json-parse": "4.0.0", + "videojs-font": "3.2.0", + "videojs-vtt.js": "^0.15.5" + } + }, + "node_modules/videojs-font": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz", + "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==", + "peer": true + }, + "node_modules/videojs-vtt.js": { + "version": "0.15.5", + "resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz", + "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==", + "peer": true, + "dependencies": { + "global": "^4.3.1" + } + }, + "node_modules/vite": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.3.tgz", + "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vue": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.29.tgz", + "integrity": "sha512-8QUYfRcYzNlYuzKPfge1UWC6nF9ym0lx7mpGVPJYNhddxEf3DD0+kU07NTL0sXuiT2HuJuKr/iEO8WvXvT0RSQ==", + "dependencies": { + "@vue/compiler-dom": "3.4.29", + "@vue/compiler-sfc": "3.4.29", + "@vue/runtime-dom": "3.4.29", + "@vue/server-renderer": "3.4.29", + "@vue/shared": "3.4.29" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-request": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/vue-request/-/vue-request-2.0.4.tgz", + "integrity": "sha512-+Tu5rDy6ItF9UdD21Mmbjiq5Pq6NZSN9juH72hNQTMn1whHh4KZPTKWVLK2YS4nzbuEnPs+82G91AA2Fgd93mg==", + "dependencies": { + "vue-demi": "latest" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^2.0.0 || >=3.0.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-request/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.4.0.tgz", + "integrity": "sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==", + "dependencies": { + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.21.tgz", + "integrity": "sha512-E6x1p1HaHES6Doy8pqtm7kQern79zRtIewkf9fiv7Y43Zo4AFDS5hKi+iHi2RwEhqRmuiwliB1LCEFEGwvxQnw==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.3.0-alpha.15", + "@vue/language-core": "2.0.21", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-video-player": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/vue-video-player/-/vue-video-player-6.0.0.tgz", + "integrity": "sha512-WP47OtefsjMEReRCIKIL3tRRgH/PyNm8ELjsbYgr/WWrYAj5Ih9Adzkzp+ylYOI/v57jJ4O7O4XkbXBCmsTqNw==", + "dependencies": { + "@videojs-player/vue": "1.x" + }, + "peerDependencies": { + "@types/video.js": "7.x", + "video.js": "7.x", + "vue": "3.x" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmmirror.com/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/zrender": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", + "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "dependencies": { + "tslib": "2.3.0" + } + } + } +} diff --git a/web_vue/package.json b/web_vue/package.json new file mode 100644 index 0000000..ff81be5 --- /dev/null +++ b/web_vue/package.json @@ -0,0 +1,36 @@ +{ + "name": "web_vue", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@types/node": "^20.14.10", + "@vitejs/plugin-vue": "^5.2.1", + "animate.css": "^4.1.1", + "axios": "1.8.2", + "bootstrap-icons": "^1.11.3", + "echarts": "^5.5.1", + "element-plus": "^2.9.0", + "hls.js": "^1.5.20", + "jsencrypt": "^3.3.2", + "lodash": "^4.17.21", + "luxon": "^3.5.0", + "md-editor-v3": "^4.21.1", + "vue": "^3.4.21", + "vue-request": "^2.0.4", + "vue-router": "^4.4.0", + "vue-video-player": "^6.0.0" + }, + "devDependencies": { + "@types/luxon": "^3.4.2", + "typescript": "^5.2.2", + "vite": "6.2.3", + "vue-tsc": "^2.0.6" + } +} diff --git a/web_vue/public/docker_icon.svg b/web_vue/public/docker_icon.svg new file mode 100644 index 0000000..21190ce --- /dev/null +++ b/web_vue/public/docker_icon.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/web_vue/public/favicon.ico b/web_vue/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c5d3d7da53f3fc57829efcc3ffa998b2b82fd648 GIT binary patch literal 15406 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 \ No newline at end of file diff --git a/web_vue/public/vite.svg b/web_vue/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/web_vue/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web_vue/src/App.vue b/web_vue/src/App.vue new file mode 100644 index 0000000..fc33154 --- /dev/null +++ b/web_vue/src/App.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/web_vue/src/assets/css/normalize.css b/web_vue/src/assets/css/normalize.css new file mode 100644 index 0000000..89b1c6c --- /dev/null +++ b/web_vue/src/assets/css/normalize.css @@ -0,0 +1,350 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + text-size-adjust: 100%; +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; + font-size: 16px; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + /*text-decoration: underline dotted; !* 2 *!*/ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/web_vue/src/assets/css/style.css b/web_vue/src/assets/css/style.css new file mode 100644 index 0000000..722d0ba --- /dev/null +++ b/web_vue/src/assets/css/style.css @@ -0,0 +1,44 @@ +body { + font-family: '微软雅黑', serif; + font-weight: normal; +} +.flex { + display: flex; + align-items: center; +} +.around { + justify-content: space-around; +} +.between { + justify-content: space-between; +} +.menu { + height: calc(100vh - 100px); + overflow-x: hidden; + overflow-y: auto; +} +.link:hover { + cursor: pointer; +} +.space-inline-5 { + width: 5rem; + display: inline-block; +} +input { + padding: 0 5px !important; +} +.el-main { + padding: 5px !important; +} +.cursor-pointer { + cursor: pointer; +} +.center { + text-align: center; +} +.btn-action-div { + padding: 1rem 2rem; +} +div[aria-hidden='true'] { + display: none !important; +} \ No newline at end of file diff --git a/web_vue/src/assets/image/avatar.png b/web_vue/src/assets/image/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..e16488e4534d25626ac002e04ce9c64cd834ade2 GIT binary patch literal 4097 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 z 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 RDMM4NpB~4%lxA1? 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

!6dCWy2JnGM(naD76V!)(&wSmnMZG~hU> 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 z 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 r5v2J8Z`Koc+~AhH07jZ` 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

L6xCX!lWSG$sHO^fY=@_#i=)EJH+m9+ekb8 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%0Dg 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

{p$jvOd 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 MSt4R%K<82b0JW#livR!s literal 0 HcmV?d00001 diff --git a/web_vue/src/assets/image/black.png b/web_vue/src/assets/image/black.png new file mode 100644 index 0000000000000000000000000000000000000000..567804372d10060b0469aaee9acd0807ebffa722 GIT binary patch literal 3040 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 i*PoUC;x9@K=l%|A9jglAQ}g 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

M)bj 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⪼~yp=0Klp7UvN=@;#w;Q$fC~F*Fo?7%mQ((QL`4#Yr!zZR{`p=3zGk z-TVYL{MBdyG%V@$HjX+K)N#{(@qrXVAOz-BI-yv{P5U=-cUuntKdmm?@ zj(bQAD+uo%AQahN>D#LY9hdaV4m)!DC<@Z;angr`T}d%i{qIU<^nvW63HaZcj8Xev zKvY4IGXPxZ;dp@&AF$IN@%+AFB@`epvM)$5WqLgOVi3nifL=e+?D7T10RQ*@=1c#F I-$p9{0FQR|a{vGU literal 0 HcmV?d00001 diff --git a/web_vue/src/assets/image/logo.png b/web_vue/src/assets/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f61572e923f402cb212ca0e71b2f8cc444c77aff GIT binary patch literal 10532 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 WPn>z8EP+nPJ23gz&{A2`;Qt4Nlwb$| literal 0 HcmV?d00001 diff --git a/web_vue/src/assets/image/white.png b/web_vue/src/assets/image/white.png new file mode 100644 index 0000000000000000000000000000000000000000..94344560561948848227dbf525d93c4188d87e1d GIT binary patch literal 28161 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 literal 0 HcmV?d00001 diff --git a/web_vue/src/components/charts/yl-line.vue b/web_vue/src/components/charts/yl-line.vue new file mode 100644 index 0000000..a62d915 --- /dev/null +++ b/web_vue/src/components/charts/yl-line.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/web_vue/src/components/yl-action-div.vue b/web_vue/src/components/yl-action-div.vue new file mode 100644 index 0000000..051b4bd --- /dev/null +++ b/web_vue/src/components/yl-action-div.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/web_vue/src/components/yl-hls-player.vue b/web_vue/src/components/yl-hls-player.vue new file mode 100644 index 0000000..e368620 --- /dev/null +++ b/web_vue/src/components/yl-hls-player.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/web_vue/src/components/yl-icon-selector.vue b/web_vue/src/components/yl-icon-selector.vue new file mode 100644 index 0000000..bfa6ad2 --- /dev/null +++ b/web_vue/src/components/yl-icon-selector.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/web_vue/src/components/yl-layout/header.vue b/web_vue/src/components/yl-layout/header.vue new file mode 100644 index 0000000..827df45 --- /dev/null +++ b/web_vue/src/components/yl-layout/header.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/web_vue/src/components/yl-layout/layout.vue b/web_vue/src/components/yl-layout/layout.vue new file mode 100644 index 0000000..1e47bef --- /dev/null +++ b/web_vue/src/components/yl-layout/layout.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/web_vue/src/components/yl-layout/menu.vue b/web_vue/src/components/yl-layout/menu.vue new file mode 100644 index 0000000..54621e6 --- /dev/null +++ b/web_vue/src/components/yl-layout/menu.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/web_vue/src/components/yl-layout/yl-userinfo.vue b/web_vue/src/components/yl-layout/yl-userinfo.vue new file mode 100644 index 0000000..cb605a7 --- /dev/null +++ b/web_vue/src/components/yl-layout/yl-userinfo.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/web_vue/src/main.ts b/web_vue/src/main.ts new file mode 100644 index 0000000..0e9fa61 --- /dev/null +++ b/web_vue/src/main.ts @@ -0,0 +1,24 @@ +import { createApp } from "vue"; +import "./assets/css/normalize.css"; +import "./assets/css/style.css"; +import ElementPlus from "element-plus"; +import zhCn from "element-plus/es/locale/lang/zh-cn"; +import "element-plus/dist/index.css"; +import "animate.css"; +import "bootstrap-icons/font/bootstrap-icons.css"; +import App from "./App.vue"; +import router from "@/router/router.ts"; +import { config } from "md-editor-v3"; + +config({ + markdownItPlugins(plugins) { + return plugins.map((item) => { + if (item.type === "taskList") { + return { ...item, options: { ...item.options, enabled: true } }; + } + return item; + }); + }, +}); + +createApp(App).use(ElementPlus, { locale: zhCn }).use(router).mount("#app"); diff --git a/web_vue/src/pages/account-bill/bill-component.vue b/web_vue/src/pages/account-bill/bill-component.vue new file mode 100644 index 0000000..f7a4d61 --- /dev/null +++ b/web_vue/src/pages/account-bill/bill-component.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/web_vue/src/pages/account-bill/index.vue b/web_vue/src/pages/account-bill/index.vue new file mode 100644 index 0000000..72d2c99 --- /dev/null +++ b/web_vue/src/pages/account-bill/index.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/web_vue/src/pages/account-bill/month.vue b/web_vue/src/pages/account-bill/month.vue new file mode 100644 index 0000000..7532499 --- /dev/null +++ b/web_vue/src/pages/account-bill/month.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/web_vue/src/pages/account/index.vue b/web_vue/src/pages/account/index.vue new file mode 100644 index 0000000..b077a4a --- /dev/null +++ b/web_vue/src/pages/account/index.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/web_vue/src/pages/account/yl-account-sz.vue b/web_vue/src/pages/account/yl-account-sz.vue new file mode 100644 index 0000000..a0a17e3 --- /dev/null +++ b/web_vue/src/pages/account/yl-account-sz.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/web_vue/src/pages/error/index.vue b/web_vue/src/pages/error/index.vue new file mode 100644 index 0000000..9ac5162 --- /dev/null +++ b/web_vue/src/pages/error/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/web_vue/src/pages/files/index.vue b/web_vue/src/pages/files/index.vue new file mode 100644 index 0000000..31e462d --- /dev/null +++ b/web_vue/src/pages/files/index.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/web_vue/src/pages/files/store.ts b/web_vue/src/pages/files/store.ts new file mode 100644 index 0000000..6dbc280 --- /dev/null +++ b/web_vue/src/pages/files/store.ts @@ -0,0 +1,5 @@ +import { reactive } from "vue"; + +export const useFileStore = reactive<{ path: string[] }>({ + path: [], +}); diff --git a/web_vue/src/pages/files/yl-video.vue b/web_vue/src/pages/files/yl-video.vue new file mode 100644 index 0000000..6c1b27c --- /dev/null +++ b/web_vue/src/pages/files/yl-video.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/web_vue/src/pages/games/yl-backgammon-room.vue b/web_vue/src/pages/games/yl-backgammon-room.vue new file mode 100644 index 0000000..43718a6 --- /dev/null +++ b/web_vue/src/pages/games/yl-backgammon-room.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/web_vue/src/pages/games/yl-backgammon.vue b/web_vue/src/pages/games/yl-backgammon.vue new file mode 100644 index 0000000..7d34719 --- /dev/null +++ b/web_vue/src/pages/games/yl-backgammon.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/web_vue/src/pages/games/yl-chess-room.vue b/web_vue/src/pages/games/yl-chess-room.vue new file mode 100644 index 0000000..28a1413 --- /dev/null +++ b/web_vue/src/pages/games/yl-chess-room.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/web_vue/src/pages/games/yl-chess.vue b/web_vue/src/pages/games/yl-chess.vue new file mode 100644 index 0000000..ebb18ea --- /dev/null +++ b/web_vue/src/pages/games/yl-chess.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/web_vue/src/pages/home/index.vue b/web_vue/src/pages/home/index.vue new file mode 100644 index 0000000..1ca3dbe --- /dev/null +++ b/web_vue/src/pages/home/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/web_vue/src/pages/login/index.vue b/web_vue/src/pages/login/index.vue new file mode 100644 index 0000000..8df8733 --- /dev/null +++ b/web_vue/src/pages/login/index.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/web_vue/src/pages/login/login-data.vue b/web_vue/src/pages/login/login-data.vue new file mode 100644 index 0000000..27e9bd1 --- /dev/null +++ b/web_vue/src/pages/login/login-data.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/web_vue/src/pages/login/login.vue b/web_vue/src/pages/login/login.vue new file mode 100644 index 0000000..c9553f5 --- /dev/null +++ b/web_vue/src/pages/login/login.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/web_vue/src/pages/login/register.vue b/web_vue/src/pages/login/register.vue new file mode 100644 index 0000000..e2b1c60 --- /dev/null +++ b/web_vue/src/pages/login/register.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/web_vue/src/pages/login/reset-pwd.vue b/web_vue/src/pages/login/reset-pwd.vue new file mode 100644 index 0000000..f038910 --- /dev/null +++ b/web_vue/src/pages/login/reset-pwd.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/web_vue/src/pages/notes/store.ts b/web_vue/src/pages/notes/store.ts new file mode 100644 index 0000000..72fba61 --- /dev/null +++ b/web_vue/src/pages/notes/store.ts @@ -0,0 +1,45 @@ +import { reactive } from "vue"; + +export const useNotes: { + id: string; + content: string; + preview: boolean; + toolbars: any[]; +} = reactive({ + id: "my-editor", + content: "", + preview: true, + toolbars: [ + "bold", + "underline", + "italic", + "-", + "title", + "strikeThrough", + "sub", + "sup", + "quote", + "unorderedList", + "orderedList", + "task", + "-", + "codeRow", + "code", + "link", + "image", + "table", + "mermaid", + "katex", + "-", + "revoke", + "next", + "save", + 0, + "=", + "pageFullscreen", + "fullscreen", + "preview", + "previewOnly", + "catalog", + ], +}); diff --git a/web_vue/src/pages/notes/yl-note-detail.vue b/web_vue/src/pages/notes/yl-note-detail.vue new file mode 100644 index 0000000..49fb0f2 --- /dev/null +++ b/web_vue/src/pages/notes/yl-note-detail.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/web_vue/src/pages/notes/yl-note.vue b/web_vue/src/pages/notes/yl-note.vue new file mode 100644 index 0000000..bdbabfc --- /dev/null +++ b/web_vue/src/pages/notes/yl-note.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/web_vue/src/pages/sys-info/yl-cpu-chart.vue b/web_vue/src/pages/sys-info/yl-cpu-chart.vue new file mode 100644 index 0000000..2a031e0 --- /dev/null +++ b/web_vue/src/pages/sys-info/yl-cpu-chart.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/web_vue/src/pages/sys-info/yl-disk-chart.vue b/web_vue/src/pages/sys-info/yl-disk-chart.vue new file mode 100644 index 0000000..b953611 --- /dev/null +++ b/web_vue/src/pages/sys-info/yl-disk-chart.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/web_vue/src/pages/sys-info/yl-mem-chart.vue b/web_vue/src/pages/sys-info/yl-mem-chart.vue new file mode 100644 index 0000000..99a0b21 --- /dev/null +++ b/web_vue/src/pages/sys-info/yl-mem-chart.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/web_vue/src/pages/sys-info/yl-net-chart.vue b/web_vue/src/pages/sys-info/yl-net-chart.vue new file mode 100644 index 0000000..8ed75bd --- /dev/null +++ b/web_vue/src/pages/sys-info/yl-net-chart.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/web_vue/src/pages/sys-info/yl-sys-info.vue b/web_vue/src/pages/sys-info/yl-sys-info.vue new file mode 100644 index 0000000..03ddd3f --- /dev/null +++ b/web_vue/src/pages/sys-info/yl-sys-info.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/web_vue/src/pages/sys-log/store.ts b/web_vue/src/pages/sys-log/store.ts new file mode 100644 index 0000000..948484e --- /dev/null +++ b/web_vue/src/pages/sys-log/store.ts @@ -0,0 +1,45 @@ +import { reactive } from "vue"; + +export const columns = [ + { + title: "时间", + dataIndex: "time", + key: "time", + width: 150, + align: "center", + }, + { + title: "方法", + dataIndex: "method", + key: "method", + width: 100, + align: "center", + }, + { + title: "路径", + dataIndex: "path", + key: "path", + align: "center", + overflow: true, + }, + { + title: "返回码", + dataIndex: "status", + key: "status", + width: 100, + align: "center", + }, + { + title: "userAgent", + dataIndex: "user_agent", + key: "user_agent", + width: "450", + align: "center", + overflow: true, + }, +]; + +export const sysLog = reactive({ + date: "", + ip: "", +}); diff --git a/web_vue/src/pages/sys-log/yl-docker-log.vue b/web_vue/src/pages/sys-log/yl-docker-log.vue new file mode 100644 index 0000000..99b758e --- /dev/null +++ b/web_vue/src/pages/sys-log/yl-docker-log.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/web_vue/src/pages/sys-log/yl-nginx-log-detail.vue b/web_vue/src/pages/sys-log/yl-nginx-log-detail.vue new file mode 100644 index 0000000..a5e0026 --- /dev/null +++ b/web_vue/src/pages/sys-log/yl-nginx-log-detail.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/web_vue/src/pages/sys-log/yl-nginx-log.vue b/web_vue/src/pages/sys-log/yl-nginx-log.vue new file mode 100644 index 0000000..97e2bf0 --- /dev/null +++ b/web_vue/src/pages/sys-log/yl-nginx-log.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/web_vue/src/pages/sys-log/yl-sys-log.vue b/web_vue/src/pages/sys-log/yl-sys-log.vue new file mode 100644 index 0000000..a364f35 --- /dev/null +++ b/web_vue/src/pages/sys-log/yl-sys-log.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/web_vue/src/pages/sys-menu/index.vue b/web_vue/src/pages/sys-menu/index.vue new file mode 100644 index 0000000..979d39f --- /dev/null +++ b/web_vue/src/pages/sys-menu/index.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/web_vue/src/pages/sys-menu/menu-edit.vue b/web_vue/src/pages/sys-menu/menu-edit.vue new file mode 100644 index 0000000..374963f --- /dev/null +++ b/web_vue/src/pages/sys-menu/menu-edit.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/web_vue/src/pages/sys-settings/yl-sys-settings.vue b/web_vue/src/pages/sys-settings/yl-sys-settings.vue new file mode 100644 index 0000000..a64d2b8 --- /dev/null +++ b/web_vue/src/pages/sys-settings/yl-sys-settings.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/web_vue/src/pages/sys-user/yl-sys-user.vue b/web_vue/src/pages/sys-user/yl-sys-user.vue new file mode 100644 index 0000000..323a7fc --- /dev/null +++ b/web_vue/src/pages/sys-user/yl-sys-user.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/web_vue/src/requests/request.ts b/web_vue/src/requests/request.ts new file mode 100644 index 0000000..15f27d9 --- /dev/null +++ b/web_vue/src/requests/request.ts @@ -0,0 +1,53 @@ +import axios from "axios"; +import { userinfo } from "@/store/store.ts"; +import { getCookie } from "@/utils/cookie.ts"; + +// 自定义请求方法 +export const myRequest = async ( + api: string, + token: string = "", + data: object = {}, + method: "get" | "post" | "put" | "delete" = "get", +) => { + // 未获取到token,返回登录 + if (!getCookie("token")) { + userinfo.login = false; + userinfo.token = ""; + } + // 调用请求 + if (method === "post") { + const res = await axios.post(api, data, { + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + return res.data; + } else if (method === "get") { + const res = await axios.get(api, { + params: data, + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + return res.data; + } else if (method === "put") { + const res = await axios.put(api, data, { + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + return res.data; + } else if (method === "delete") { + const res = await axios.delete(api, { + data: data, + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + return res.data; + } else return Promise.reject("暂不支持的请求"); +}; diff --git a/web_vue/src/router/router.ts b/web_vue/src/router/router.ts new file mode 100644 index 0000000..0673fc9 --- /dev/null +++ b/web_vue/src/router/router.ts @@ -0,0 +1,50 @@ +import { createRouter, createWebHashHistory } from "vue-router"; +import Home from "@/pages/home/index.vue"; +import YlSysMenu from "@/pages/sys-menu/index.vue"; +import YlAccount from "@/pages/account/index.vue"; +import YlAccountBill from "@/pages/account-bill/index.vue"; +import YlAccountBillDetail from "@/pages/account-bill/month.vue"; +import YlFile from "@/pages/files/index.vue"; +import ErrorPage from "@/pages/error/index.vue"; +import YlVideo from "@/pages/files/yl-video.vue"; +import YlSysInfo from "@/pages/sys-info/yl-sys-info.vue"; +import YlSysLog from "@/pages/sys-log/yl-sys-log.vue"; +import YlChess from "@/pages/games/yl-chess.vue"; +import YlChessRoom from "@/pages/games/yl-chess-room.vue"; +import YlBackgammon from "@/pages/games/yl-backgammon.vue"; +import YlBackgammonRoom from "@/pages/games/yl-backgammon-room.vue"; +import YlNote from "@/pages/notes/yl-note.vue"; +import YlNoteDetail from "@/pages/notes/yl-note-detail.vue"; +import YlSysSettings from "@/pages/sys-settings/yl-sys-settings.vue"; +import YlSysUser from "@/pages/sys-user/yl-sys-user.vue"; + +export const routes = [ + { path: "/", component: Home }, + { path: "/:catchAll(.*)", component: ErrorPage }, + // { path: "/admin/user", component: Home }, + { path: "/admin/menus", component: YlSysMenu }, + { path: "/account", component: YlAccount }, + { path: "/bill", component: YlAccountBill }, + { path: "/bill/:date", component: YlAccountBillDetail }, + { path: "/file", component: YlFile }, + { path: "/file/video", component: YlVideo }, + { path: "/sys-info", component: YlSysInfo }, + { path: "/sys-log", component: YlSysLog }, + { path: "/chess", component: YlChess }, + { path: "/chess/:id", component: YlChessRoom }, + { path: "/backgammon", component: YlBackgammon }, + { path: "/backgammon/:id", component: YlBackgammonRoom }, + { path: "/notes", component: YlNote }, + { path: "/notes/:id", component: YlNoteDetail }, + { path: "/sys-settings", component: YlSysSettings }, + { path: "/sys-user", component: YlSysUser }, +]; + +const router = createRouter({ + history: createWebHashHistory(), + routes: routes.filter((route) => + ["/", "/:catchAll(.*)"].includes(route.path), + ), +}); + +export default router; diff --git a/web_vue/src/store/store.ts b/web_vue/src/store/store.ts new file mode 100644 index 0000000..2a9996c --- /dev/null +++ b/web_vue/src/store/store.ts @@ -0,0 +1,43 @@ +import { reactive } from "vue"; +//登录页面 +export const loginData = reactive({ + login: true, + username: "", + password: "", + repeatPass: "", + autoLogin: false, +}); +//用户登录信息 +export const userinfo: { + login: boolean; + username: string; + token: string; + type: string; + userinfo: userinfo; +} = reactive({ + login: false, + username: "", + token: "", + type: "user", + userinfo: {}, +}); +// websocket +export const message = reactive({ + online: 0, +}); +// 菜单 +export const menuData: { + data: sysMenu[]; + default: string; +} = reactive({ + data: [], + default: "", +}); +// 图标选择 +export const iconSelector = reactive({ + visible: false, + iconList: [], + selected: "", +}); +//余额表及账单 +export const account = reactive({ show: false }); diff --git a/web_vue/src/type.d.ts b/web_vue/src/type.d.ts new file mode 100644 index 0000000..8e048e0 --- /dev/null +++ b/web_vue/src/type.d.ts @@ -0,0 +1,96 @@ +// store.ts------------------------------------------------- +interface sysMenu { + name: string; + icon: string; + path: string; + menu_id: string; + route_only: boolean; + detail?: sysMenu[]; +} + +interface userinfo { + avatar?: string; + email?: string; + location?: string; + mobile?: string; + nickname?: string; + type?: string; + username?: string; +} + +// sys-menu------------------------------------------------- +interface sysMenuList { + id?: number; + menu_id: string; + name: string; + path: string; + icon: string; + route_only: boolean; + user_type: string; + white_list: string; + children?: sysMenuList[]; +} +interface sysSettings { + name: string; + cn_name: string; + value: string; + d_type: "string" | "option"; +} +interface typeUserList { + username: string; + nickname: string; + avatar: string; + mobile: string; + email: string; + type: string; +} + +interface accountBillData { + date: string; + balance: number; + changes: number; + duration: string; + detail: accountBillDetailData[]; +} +interface accountBillDetailData { + card: string; + balance: number; + changes: number; +} + +// files------------------------------------------------- +interface fileList { + name: string; + type: string; + size?: number; +} + +// sys-info----------------------------------------------- +interface resSystem { + data: { hostname: string; ip: string }[]; +} +interface resSysInfo { + data: { + datetime: string; + cpu_per: number; + disk: { point: string; total: string; used: string; per: number }[]; + mem: { mem_total: string; mem_used: string; mem_per: number }; + net: { sent: string; rec: string }; + }[]; +} + +// yl-chess----------------------------------------------------- +interface chess { + ID: number; + players: string; + current: string; + is_end: string; + status: string; + winner: string; + chess_id: string; +} +// yl-backgammon------------------------------------------------ +interface roomStatus { + room_id: number; + player: string; +} diff --git a/web_vue/src/utils/cookie.ts b/web_vue/src/utils/cookie.ts new file mode 100644 index 0000000..e4b3f2b --- /dev/null +++ b/web_vue/src/utils/cookie.ts @@ -0,0 +1,13 @@ +// 获取页面cookie +export const getCookie = (name: string) => { + const strCookie = document.cookie; + const arrCookie = strCookie.split("; "); + let i: number; + for (i = 0; i < arrCookie.length; i++) { + const arr = arrCookie[i].split("="); + if (arr[0] === name) { + return arr.filter((_, index) => index !== 0).join("="); + } + } + return ""; +}; diff --git a/web_vue/src/utils/mebu.vue b/web_vue/src/utils/mebu.vue new file mode 100644 index 0000000..a0b0c5f --- /dev/null +++ b/web_vue/src/utils/mebu.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/web_vue/src/utils/menu.ts b/web_vue/src/utils/menu.ts new file mode 100644 index 0000000..c39cdcd --- /dev/null +++ b/web_vue/src/utils/menu.ts @@ -0,0 +1,66 @@ +import { useRequest } from "vue-request"; +import { myRequest } from "@/requests/request.ts"; +import { menuData, userinfo } from "@/store/store.ts"; +import { ref, watch } from "vue"; +import router, { routes } from "@/router/router.ts"; +import _ from "lodash"; + +export const updateMenu = () => { + const currentPath = ref("/"); + const { data: menuList } = useRequest( + () => myRequest(`/api/menu`, userinfo.token), + { + refreshDeps: [() => userinfo.token], + ready: () => Boolean(userinfo.token), + }, + ); + // 没有菜单信息,返回首页 + if (!menuList.value) { + currentPath.value = window.location.href.split("#")[1]; + router.push("/"); + } + // 获取菜单后更新路由 + watch(menuList, () => { + router.clearRoutes(); + menuData.data = []; + _.get(menuList, "value.data", [ + { name: "首页", icon: "home", path: "/" }, + ]).map((e: sysMenu) => { + menuData.data.push({ + name: e.name, + icon: e.icon, + path: e.path, + menu_id: e.menu_id, + route_only: e.route_only, + detail: e.detail, + }); + // 菜单是最后登录的页面 + if (e.path === currentPath.value) { + menuData.default = e.menu_id; + } + // 菜单存在二级菜单,添加二级菜单路由 + if (e.detail && e.detail.length > 0) { + e.detail.map((m) => { + if (routes.filter((item) => item.path === m.path).length > 0) { + router.addRoute(routes.filter((item) => item.path === m.path)[0]); + } + if (m.path === currentPath.value) { + menuData.default = m.menu_id; + } + }); + } else { + if (routes.filter((item) => item.path === e.path).length > 0) { + router.addRoute(routes.filter((item) => item.path === e.path)[0]); + } + } + }); + // router.addRoute(routes.filter((item) => item.path === "/234")[0]); + // 路由添加全局匹配页面 + router.addRoute(routes.filter((item) => item.path === "/:catchAll(.*)")[0]); + if (menuList.value.data.length > 0) { + router.push(currentPath.value); + } else { + router.push("/"); + } + }); +}; diff --git a/web_vue/src/utils/mouse.ts b/web_vue/src/utils/mouse.ts new file mode 100644 index 0000000..cbaa189 --- /dev/null +++ b/web_vue/src/utils/mouse.ts @@ -0,0 +1,22 @@ +import { ref, onMounted, onUnmounted } from "vue"; + +// 按照惯例,组合式函数名以“use”开头 +export function useMouse() { + // 被组合式函数封装和管理的状态 + const x = ref(0); + const y = ref(0); + + // 组合式函数可以随时更改其状态。 + function update(event: MouseEvent) { + x.value = event.pageX; + y.value = event.pageY; + } + + // 一个组合式函数也可以挂靠在所属组件的生命周期上 + // 来启动和卸载副作用 + onMounted(() => window.addEventListener("mousemove", update)); + onUnmounted(() => window.removeEventListener("mousemove", update)); + + // 通过返回值暴露所管理的状态 + return { x, y }; +} diff --git a/web_vue/src/utils/utils.ts b/web_vue/src/utils/utils.ts new file mode 100644 index 0000000..ba18bad --- /dev/null +++ b/web_vue/src/utils/utils.ts @@ -0,0 +1,58 @@ +import jsEncrypt from "jsencrypt"; +import _ from "lodash"; +// rsa非对称加密 +export const rsaEncrypt = (pubKey: string, data: string) => { + const encrypt = new jsEncrypt(); + encrypt.setPublicKey(pubKey); + return encrypt.encrypt(data); +}; +// 格式化接口返回的错误信息 +export const formatError = (res: any) => _.get(res, "response.data.msg", ""); + +//数字单位转换,s:带单位字符串,数字和单位以空格分割;d:计划转换的单位,默认MB;t:测试使用,打印s +export const transNum = (s: string, d?: string, t?: string) => { + if (t) { + console.log(s); + } + // 未传参返回0 + if (!s) { + return 0; + } + let n = Number(s.split(" ")[0]); + const list = ["B", "KB", "MB", "GB", "TB"]; + // 数字单位由d转换为MB + if (d && d !== "MB") { + let a = list.indexOf(d); + if (a < 2) { + while (2 - a) { + n *= 1024; + a += 1; + } + } else if (a > 2) { + while (a - 2) { + n /= 1024; + a -= 1; + } + } + } + // 单位由s转换为d + const b = s.split(" ")[1]; + if (b) { + if (b.indexOf("KB") !== -1) { + return Number((n / 1024).toFixed(3)); + } else if (b.indexOf("MB") !== -1) { + return Number(n.toFixed(3)); + } else if (b.indexOf("GB") !== -1) { + return Number((n * 1024).toFixed(3)); + } else if (b.indexOf("TB") !== -1) { + return Number((n * 1024 * 1024).toFixed(3)); + } else return Number((n / 1024 / 1024).toFixed(3)); + } + return 0; +}; +// 获取设备类型 +export const isMobile = () => { + return !!window.navigator.userAgent.match( + /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i, + ); +}; diff --git a/web_vue/src/vite-env.d.ts b/web_vue/src/vite-env.d.ts new file mode 100644 index 0000000..7752b97 --- /dev/null +++ b/web_vue/src/vite-env.d.ts @@ -0,0 +1,13 @@ +/// +declare module "*.vue" { + import { DefineComponent } from "vue"; + const component: DefineComponent<{}, {}, any>; + export default component; +} + +declare module "lodash"; +declare module "@kangc/v-md-editor"; +declare module "@kangc/v-md-editor/lib/theme/vuepress.js"; +declare module "@kangc/v-md-editor/lib/plugins/emoji/index"; +declare module "prismjs"; +declare module "prismjs"; diff --git a/web_vue/tsconfig.json b/web_vue/tsconfig.json new file mode 100644 index 0000000..3547146 --- /dev/null +++ b/web_vue/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@": ["src"], + "@/*": ["src/*"] + }, + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "jsxImportSource": "vue", + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/web_vue/tsconfig.node.json b/web_vue/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/web_vue/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/web_vue/vite.config.ts b/web_vue/vite.config.ts new file mode 100644 index 0000000..c1f4d32 --- /dev/null +++ b/web_vue/vite.config.ts @@ -0,0 +1,38 @@ +import { defineConfig, splitVendorChunkPlugin } from "vite"; +import vue from "@vitejs/plugin-vue"; +import { resolve } from "path"; +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue(), splitVendorChunkPlugin()], + resolve: { + alias: { + "@": resolve(__dirname, "src"), + }, + }, + server: { + host: "0.0.0.0", + proxy: { + "/api_django": { + target: "http://localhost:8000/api/", + rewrite: (path) => path.replace(/^\/api_django/, ""), + changeOrigin: true, + }, + "/api": { + target: "http://localhost:8080", + changeOrigin: true, + }, + "/api_file": { + target: "http://localhost:8081", + changeOrigin: true, + }, + "/admin": { + target: "http://localhost:8080", + changeOrigin: true, + }, + "/static": { + target: "https://git-ylsa0.cn", + changeOrigin: true, + }, + }, + }, +});

)ADYCBeVERaiE3?4YZ)s1S4u=L~P6quos=~`HM8CCr29_(dwkCw;u~z)$bM3*XJQ4 zuoVY$>q&1_4fZUg5PS<}8`3$Z!8uEI)qGypC;jLK-3~QR3@3{JqAv<>s{d?^&*Zq< zolf|0_O;cMtK;dPT|@os%Q9$VXGTAHNp`s{AIL&VK?}qM>U1n-sDd`_s}siQz;Ok* zf|1@8+5v^NlR}M1NI{!XC>R;erP!dA-9+^%3TyV(3KT|RS(VWH3ai^g2;>y4Nh|S8 zOV@S^N>gKcjm{R3i!t=99Njzzaf;es74T+f+_BFY8O(qEp;p=z9Bky;#q3TiM6n!n zGF>r3aQ3f3c^A~!Kq7J9ctcwidDJdX67(P)t%eAoCS-CQyGTnoYpz;4HO1+BWKCGi zcYQCFF9j;0=i-Zi! zE@S@?p+b^_dF}ATgnM87mseeMcc0%n5}14tRRA_uW1;Nsu`y&MIyrr)*D)zNq@nYi z(>Km+2au)idu!_zl}YObdRRI*_z2P}-b)Fb2yN;lBfYwfRe*Zh{Lk?@xLz+V@xVYt z9M2lf#MeI}YGgIHSVDuB^4(v{VQ8LvcsU);lX^LI68lrK#!11cb2O<6*a6NkaVXVh z+4I&$&wKk(ca8k(P21CV#!^pUzvL6_uIdr`Q5N@Ms!P zAQ*@MC;|T06({iq@ajL0-jHroi}#R(gkE0TPr!$q)nU$Sk8ZR`6;a)uUg(@6AY}p; zSfqmPrZw*^iz-LBM15%DfaS+!Fhmgt1d|DNnZH5fGA#Af&#~ZAyJILG4b)`8*KC zFl$lH3Z?D7&oJ;;6{^-uh{Sb<e|IpGV*J6? zeYatZU9tK3Cb3fRBk$J?G;k6y1C(uoetw?n{apN6i&3yj%=qtZOpn;OHlt7QAo&}s;%uhQbBM} z6jm>hx;QJFyE1ddc!lLbNF-w{tLTZf);)lslv&J93Jd8}ElDC_d@9+QKE=!(a6@5@ zP2kFb!6ZqSxLkF4eIx=g4kee_OBMg4R?CuE(|!76Sx5u0z6n^@4=vE7W}&sVzktWX zVhXEkI}~yJiDx65eV4L)>89XCVK9|N*UJhXY_aS9rkM5H5(e>T8+H^Bt0#<+(C`(k zF0pxvZjOER`7X3q`T?PZ9quP|cP!0P%m%izzF_)vGrHQarYE|Uh9_G1h8F>t3Q4lU z=v-=U^->Gm9$p4k&Sb@8Gw1*bTUUH~F9xM0`vIQ6#mM5ClI!kX|1B;|;Cwgm$q)#3 zNmY1pj+gklG&mROTY|FA8YX~b&j_3K;HxqswuPcbo4DJnx3Ox@5}K#%9WpM!^4QGQ zy_>H9E4UmjNGy@(c6$tY#*>|4R-~%0nY2wr8mSfY7HNxb=_22~BS@JTASqd3DKFU`d?^<4puJl`A&35TZL6ILs6Xuz@4Mr1y z9Lqxb^1HP&u8a-{ErFS4Tt-6i@-8^kABstHCmh4>2D_Fi??tgZ6I3g@%|4IB z4yh-FCfxjX<>@YD&U@ZUhUZFvdV|cDvcP$thAvP=r0zI`IDc4)vnRBZQ$hW#%I2p- zdna%FN2RvogU)Ww+9O(tsL}lgf753;RyZ-5IrtaV(OZP2;+X&94%jPlb&_J71P9VU zX-%&$m6*}qhHGpi>Hht_8{QaFhg=Hu3Wc#=Nc#076Z~CfA*EFhW&e|>uQgn(WXldPzWDS|)ph&|MxRoD5WeSY+ftr{j+fukD?WDtq`GRwd?62K zdZEUxfU&xc>1S7)uH}pDo%4El;x&cRt4(Vwla36+Se}~BAnrJ(5}KP|_ocJ;J%0hP zO9C)pP!9+HOG*Y}g_4l7{Q1Qpdlv)Goz$Ilf}7mR4OMZ>^y#=5$$L{>%4Tm3>UKzv z%bLse&dkqvMf5oN;U^n;~GAihlz;Z*7NSZI+C6`4_`og~?x+v7Q^7 zq8kWrVlf9@(Q%r{gcp>YpAiFi-b-AO(o#5#4~827qF-4Kg`r3AilNaTw7KlV8cJq` zL$~(%{Syg(_Dz%KuER(td;HM@BA!F7@U?74B&rG3G*COy)G`}{k{;fFXOw2$q0r_F zYeT@+tmZ@RXoNj%FVxvi{cD7cWki2!>M%T&g{|^x&!=5rQYNjG0+W}bL+{+VA1i?A zs?5-G>?4s%m|k}tx`CY3I)Hm-#6u}IFn~$=l#KKdC?Nc#=b>aH^o=cF!f4wA5Uva# zeFY&nJ)QOp|4m|S+F(7oV&p47KdGP!X)y`b>26G|B+(l$6#qt=tc}--xjILEH9;QE z%|ADbP%Pk|2)O6r45+S*FjhgV91^NZKz6Jvr1j9<` zq^0|>O2+dIxux+tyheWMaa?BoAaCOoB?e_Rm=q)gXUW9+`o-dyWy@0fz4TZ>5w@-d)wy4!G^B3fZ%jR$SoEs+BtN*`SAJ3@mSyvZ&* zC>a6Z^m;-M?t5>w7k!TV`kW_%!^ZkIC<(-Wmz?TLd;{z=i&zCH`+3f@Vqy*Clg3?; zUzu$`)1jHg69m)AgHaW(NBQq^!nIFBoDS@Fz<%% z9FyEi&PvQM$K6DaqEoUq*t)71?tJW0$ooU&htk-+VT3&po$xxC(Rl)KZ0DrO{EAZh zK<&wRP*zzF4s$^u2t_8Ijyhye=7nli1t|fLke%)-D#YY!g8E5r&$5E=4%~i?6uluC zWA4e#kx+v-X&I^1jAE4o@ui=qT0W&!6{~;PH17O(YQSWav^Q%AVv-9tGBlehzPWZS z?MsLk;0GRsaoxeann=5$x5iExpI@g0^bKSlCeU{5hP!XR@jZEaaDxl8bsk=y`z+dU zX;m{zMq{Nfo>fAtog}{ZJ_VqY(}kE~p^P-x^_No+>HrbsW#fK_x1D~53b$&Sz(VmR zMK0sLB4R`pk2x!YSNiLp@*gA+lk@%?4&9Gwp?sxyhBZTE zVy$KiN7i#gQg$M_Dfg~{C^v-#0q@sl%0`UXlJOBUt~hK9^R8gblc})!XaRZ4@i9ka z*i|A0M|lCd4*Q*?3m1q!y&+i1J)_SUbeM)^eXZAGM5fc;v7xlTt3c<;#C9n_O4BW; z{44^K;!toV-jT($g&UZ!>Z~=fk>{;QU(=MUicFASrh`ra_UqK+h+V%veKD|DuDn>D|~QiHUd02h0c zQdaUF8&L<0S_sEHWzozXuWQ$1nEZJ1UfXEL5dyyd*^AE#_j>0OiMP=ueF1&I9rsd> zmf+}9S-IUP-z6n$e5A(^tR?uHVy9E~owNDtbFhLBMzke-yfY#G$boUjC{=bZi!2C! zcT~ULDa8aDTsqtJ$+@Ct4uSb$P%0RgKg>^UZ(nhI0v!7$O({>A3dBIo>1Sd$;Z+|X zgNJ96SE*_XPoEQWFc;{2f><$;DB1~n>ZME}P-Ob_kU=%<+n)SNx-ttlMnP} z#k$pY4i{e3G3S9C`(x5~V01H%G08JwbUSmVFCtCt9DIB-PoP2Nbr$qL|LlkiPx^_^ zR-hNT3k1abh<;QM74&gztbtF(Dba|c+q%e0*L#bLY6P-z9)TsyDNNIGf1ZgHg9E1; z3qKqw`6}l)wukgW>jg}=CymW!ulcM~4ZSNb)|={RH?bd8B07Fs)-%QS-Lcy^8(8By zHDA8nq^u~w3N`ADQ0!G{6V3I;+G4=+ZYQPb8_z99u8ocDM$BP{rgcf33iaz{U9-)7 zVt$1F_~{%X$epw)*rkD3gUZr}~-vzpLpDAv`iuZ`MmzI|>pk z1Fgvi?f3)7=*kW&Pe*T0#bW&iJa0n}?t@PQWHJohe_PSaY3ehCYb3#|j9p#+Pj^?! zVrtJA7qh94xF{kd0I9W=Z)oP+6`c_1Ff0wD^?JunQV%jV7IF_GCSqWfH=kWfZr^vM z>DNK_-+paSC;Di-OGWl!G_kN>NI7Wl+`0k<;n|eo|9aR-jZBe9u9;tlAb1;=wbz5anf5ogI-n)`P4*qi*DCj685FB5wFx3vi;el~e?WsLMJvvl?MVdu z2N{X0kkNz^_*?6956er8Q;Ormz^xE5kj39rPlPk=Q8K?Mka4dCJLi)m!UTgzxRx&q zD8(YH_#M;6drAt3D_X3vt*a${m~)`sqA8S@H2cZq!5gzClO3gZQO=K_sD-piG8JF7@mIWOq?Es-0IQ#GAU(gzkHuq&_-6rXTc zb9-9Bpej*%PSTBKLXkWc=w$jNoL7;ObRRSptiZl`yLZN!n}=Q5o|G>f;RG_7V7bJJ zF`Yf{@%h#^Sp#m;AF1#Sj^;8VD>P@Y==*c#3;dO|bH7VScBe?klaPlA&c7#t9rq+% zgirYzk%nbie>Ix&na(J>!Dbvewo4L>VazQYUbaJ=i2n zSkvUBG=3O!38gjeT#j+Mdp&q?0HMztGjvd&I(;eM;I0A zQdqMeu(~=IIVU$3tl5;yN@}~R1{6psrt~KO&M^xL%2#t5}4L{iz$RYsEJWIMUuwOIQM9 zEKGRu5+CKjXG2TEthy2eQa;06>6MKoiwdF&=W$FM`V|Y60~;Z}{89WeuP)g??+Tb@ zhyF+xuVajULBnS7JyKsY(@usnN1zB#dV9L$XWZOORnIA9<^nPA_CPzJ**DfF8nqq19`taw ze*rDB(Y5Suk8EXC(IKq&Sk&82Ll76530b_ps?%(}MuW+#zPSaj2VwjwTutVk`L0}~ z9je8l`YQm>&3l0;vHp68>Z@-X{qXp?(BE-(8F6$m*Ef%ueF7W1#zBFnT9mxyEJsk0 zO>(JWV06{~QA(i3hIq;*VOOq2FU);D!CSFmJ*RS^W{;%2hT8c9xrZfI*gkSbt4kza8 z(_rDmvw1SODK|~HhH)RRcXl`d6x5c`)|NZb0ei!K zQtJ2e9Dm&HvnDqj8)*aVXnvLLlmW0^COUhX-?@xs&pJ+AFu%x?i$_xAZklCaT4H>D zdnb0M!gZ!jMW$w4SP)M{A8L!(K8MLA93&HMd~aXH(-*02qwkwDCu?iXJ455hQ{o}K z;ZOMIk2fiXwwFqX9|+EkY`WwdQqyTS)iJK`t(_vyHNroa} z2pkz=v&I)6s1Za8jQHPA{vB*c^&?)x4OODU;moXJ+@p)v_@2FU1yG?9wiKa?Ev^rS zqR^RJ@(E6{5%VPRhGk$*83Qdseaw~zTkU^B!AivTPLWWLJz>}X>QW#dv-X(WIw8f{u8yaa)>%%y*N^7lf!gGu0vA~(2IXJEia8z{>DH=c)xHo^yj%j>epq2pt!|_ z9cHzXzh1Se!HeWx3h*fXnFeJ$GJ2dfDpJxv3G0fe^ z?|TT-QNyIu&Q)hqA@St}H=Cz}MmUauB zXw-F3r|Zj`xE(`8RXzvo;>Wq3zShu7S}B5Zu(h%4@frz9SjGk zdBy&O&U1iU8#|=I1qUHpp%zE5FgHkvYc8a=gxI78YgBY(6BN%zjM7q$rEbE39F!bS zLUR`BiJ>XNZ4DVPvBjgulmd+IGLqB1@JFowx=AO{2a+9;a}bgpqvbuBcUT_g7;@VC0X~HFymems8&QAMsC5l=b-HR@`j(_HJo6F=uoR8u^ z(7bX)SZBW?fOIs#!<`MmQ1ayRy6nkxrs6-0d8Nh`&3A%+HVqbt)A4mgD__Ue@R09y zAo9k6bb=5B6kZ%zApGHZAEo{_k}eY#kX)5drak%U13J%@8OL1G2ryf)*2EY#6Ut2z zWlH)jg8$U|0frXx11{Ue=hO+ROFWF8=XnjP=;dKA*{FJaBrk>sjo0-7u7CO|^h0=Z z1ct>g_`7TU5?!PHQYp_z$R;+;cm_2`TTUANiON6DA~@s#9#Vg-zUmp zO8e`oV|mCu_0jP zCd{`l1eg$O4`N>1tn<*2c|dqAfJ)(&vJDS*Lyj|Pv7Y<@1S4>*2wRegFU-|hS)1If zPqeA6?y;$V>1DjsUl}ldYZ`ainDOBm^?z^4qPyQN*Sci0LR{m+=*`=(G+>e18tv6a zA0Xj<(-91_L(^b&L&uZ(WS=WtCuK?; zaVJBvZ%9&_>t&q4_NyiP1gjF4>6p?3mZR}lqLROe1#_b^3=s(wZOjhNUes@@y=8Ag z?fsN@rJLhs6JCLAGkSZwWdgVS!GASyZF}g&Kta&TiXhq~;%D2h-+OZnSm0Y_sk(rD zR(^=jRB}X7#IRh{qzAeS`!a+QySBS`jr|FP(_6A z0g0ZloLCI#y>aH7YwR@Z`G4)ay)E+y+rOD!w5X=P;61j#vg{Gs6I5YZ7&l>d#B`5t z>@?b=mXaLW_(kOnR(Z=p2+nViGuH&~8|^O#s?J|E<`AxoZCPJBI$jDB()>X}7*wCC z=0jzgnpDcbBxa)kmbUAl8|ZlVSx3fy86*pVCw33kve!IA8}E~TR=(}QF32d)EZXkc z;_6?nEeau9hBy=eensFKwQrYRK0ceCqB~CZdQdZpcfg24$0U<1y(Z3OtX6JoJHo_N za&JUJA_g-gNReiHc?Fmv_M`f*6e)v;{ZrPD5-NFuw9TWW-@vPIw#f z#ZUO7i|p9Y&t~P(B`m4}>EeXN5H6Hu-XLw!(%*YoUef0gCkg#`&z@#s5m(y;IU5f! zfG~4eaMFLI{Zer|Wvsjw$shUJ{J`5}benTUvp0{#3Wm}KfHH=&d|&co0aPu8fv?8d zls+U~oiIuKl$VP>2C15GaH{dEkX)=x@FeoBt@`)ys3zBl0ZHikrM?VJ+B6UYDh|j# zUrwRBwHUA*zGUrW9a0C}rxBTnleN{&VG$L!ZJ;Cx+o79KyU>7ASX24S+h@RQg`)Rc z|D+tH$OxWXod0M|T)~ZJ&$Ma_#yie(NBcK;h2o>)cjxx2TxfL(RV`9gck9$)s;j5ZZnd zB3$VL z=)Cf~V?sz4o$YV4iol0QZaXRKgZ3DFKXIm?j>q>}(ICFc6ZtRzh9lO%`tU|mT!e#E zj(bb!rAWNgpD0A-w3@7y*xnsWaeK_u666+Rd2L@oLHz)$wiTJ@dA-cq!%qi=U`|X+Hta)+gx^ zk*7dxEQY3QpamHWVRN!g0a^R7HN1-%@2}9J_FHUyhFFn}s7u4yyH!N=7SsJk*{$Q@rv8 z((WUeX^CCN*mlWuQ!*NQ1F}f{-lQSy)l@ty?t+;F&?yAo>Q1K+@<0$uhKfy4m8ZP` z+fx9W4n8`IvRy6Lg%H`>EHl2NMX@=&R!N~)q17>DXhnk7!i<-d?OkA(5oJs!0sw)x znm@r@|3POiDj66eo>A5 zoLRY@yYLWJ68(2JD}FDhlVn?>ZO_{^u@W+WXci5Dj(9i}#yb{{CtZ8Mcelr^z`Wmi zhY~=idNlCfQ-l5Yem#)zUQYj_EJj` zR%HjT*u)7U<^`WFLSD|r@9=W@JvvM86{7`jA$!uF5UF?AiC(}P{QQ4X9rUFV$(jh6 z-_IzLzQg)(ZF)Iv`xR}5TVVB<@22I1-|=$eQ10jOKjvt^vW-vpD)R%6cw*wIscl$L zA-Sn>spTQ@dQX}f;eb1TN+0c*;q-kJyFg&nX%?Cw9uR0azH)KK0Vr5YdV(3Q#mwr4+m=gp^s6Yw@C$Y)a zHO8{531dSjiaQQ<;H&fuQP6g`ZG}qkEfU-86A@CM;sWKe>IwS=Z38H^&`ItCaeQu~ zO*-Xop{F3QZ+ND+XZHPOK$D#->gssC1G>^!4hp86AfXIANV{JSX}xpd+GZGN7^HUI z4rDYbzGZ2o#3N#@RI)c>BHy9*lxbTGx60hNwT>x^$;fQAZ}0&7LVYO#a9Kul^+NlB zHF6Y!Wha!mqSZfUCi(Ow8qm4W`N4ZsITjWHh{7=fs8Tp459DQKzr~EDT zDOlicTeV;^v^l0*&|(K+t*LQ}*lH_+ZtzN8=Hlc1wOwV_&z~U1-%dO;O5!jl!GZ2$ zwBuAi;Nv7+VEg65iqJS-`DOar2rn_hYH8_=EJ|?MHbQ3+iYENZPUvP;)Kftp zU!@@Ifh^FoD64APWmi?yrf=eLrr|Q|`a`!#d^NZyaX&hm<6rV1g$K#>I~D?qK#H zKL&QUYsGRFZBHI05T|^1TMk)>gK3+PnATGY<(-9)2`c;_- z6j_;J1!|H&gO(K2@lvoi*^VO`Hoi8oOvP)<(J)TrE;Vb)?h6}vf^EA@b;93YT+;pk zq7v))%ovCzZ{Gy?&@9&%t_@@+2}$VX6%q=tHW9yo_6uGc=cGzz#cCF`KLo|~4a!B* zEV3+~9p-c62We9oaK{)T=AF@3nAB8+H)Z^0EGUV#g9L18wtAbQd_gX|ocz~f#TD@6 z$KSv#!}gj8qL{`H7c%c*A8;Ujp1Z=;OvuZ21Cc-ysZ*8;8**Wod%& zpKtPOdu6LR5#Pa#fMGiWy5xC_H)E*Yoyn4ID0fbcLu=|ba`MDZnMrzGS|WZK>=;lN zBdRW|^h`wg>tgjH$2fD<3Mmux+jfWJT5X?r&7q z9Dz7k=N`r*LdrcH3Y^arAN{&U^B*pPTX@`&ONUNsJrF!&f=1JiD4MrVR3Qr8(4s5s z;hJ}LGDE{T)L5#Ke>_nyuPKqIaD9IZQWneIzp>Sx)K|1gHZxYS3izZmll_uZt1J9)_(E?N%>QMWMoh}qz9jTveZM7@cX1J(}=1(U6Paek?p zqx3;8uJ5QOS}Bh#{v6f8awOv&C4k()%CkNEGmpsxP`=>*o*k2BlJBF;-d?SJ>=Ko$ zr=OPd%}|s^37vdzC;78U^N2_>b~y^(*`ho#-P1@}?eCQcJGW>k zLt1Y>G&_H2%PIOc!*IK2XGw`FId(-Z18w3Yr?)gsIFcyWyA=Ytxa_QC6Of?l*Js>V zyAGpOz*}bvy8Fqk;@;gqjf`6ljAQkZPk*7CfEm|tT?Cg{*o-cS?n3LVM7B96=c8H9g5tokw zp;b|J6O(`3aTLa7c)i$`G&D#%I(>Wf!lZm{(@{umcYAJXE&r*o7lKqZf2`CFoo|C{ zvi{g{ga>{U_R@xAjC1QHXVJ2VAFSPruzOnT6mJGjE>pB{@p(t9MB?{fWGfSx!!fbp zl#;EsvJ0gmUdT!-;V@JJ6f(i)f5jxKGiy17X|~Amb-LW}zlU-O3|U64AnHLc7QhF@ zwGyeDNWK3OJ%y&Qy=n{k-29)!07RU;Z2$3(J1i(e#`q}+`^Y|KJpVuzF1Ax=>FtQf z95eUp5}1S@AC(-Z(0=-0@yW0w+ob#+U?<1Ey}QPq+W6%K+6>w8s)hY#ZF6sghx$Y_ z=$s3|*LnLOTA!V?=%%r6wdx1Uric-2|5nc?*+(yWZI2vPES&K%TeCyMpBS8(^AnGU zwOw^15y0k8bdtk_7bsc=CT0qV-7%%bgu<9~&|cmWdS*mzl2Ki-z&XIsZd`>B;^KP) zBKokRFNvH}(wdRxv@y$ATPOw9U2rC@-)ub4ucdIzB~DgN*>-R0vRU6Xub0NM9W*1? z%C=X6s6-!<8&!$`UR%UP~#tepnM`50MEO6!uPbmg|Zi`ue7g!^M{95)$fY%ty9`HD?5M=fwME z1U+vj=a^nOSBlO72B-oZR=<~wjrKGKZV2w3Ql8%&5VQjuzgw@Yw^R>j<)~r07})*` zFNSl%5-xV6z1JIyR2wN=sFw*iTg@iOL3OJy{NVZVu^)UQ1ovii9@MLrhy!)50K@7Y zWSpl>K>aA^-kZJqbtv#M%CfDB2K@0iY*Tv1c<3OBDYbge)+yCd>!`)}qU*q1zxK5O071ckutQO_A+)B~9PfO_WoQqM~BD99AgVx2cmx}ixVANHfQw>U_=MNRT{^1>c;xvsV8gh38WVnpg)%Vu2e&F zfF%S>8(A56P)bB^O}%1Cdf#D1sKt(3e!?`g75uWMVy|)*{E(vzv4N5UBDx~>ohlIm zff=xqhl-gP+B(*#4IkF|;m$BvK_5bW(^{sl5{(*VhhKI|9K%K+sZidIqfLe}#0jE8 zcl+Ntzj4d_NuK*f#pHqYMQi88Q`19T{9%fqlLw-{FWUr-Yx%3n_tK&ba4M5O+=`2> zT!9FV!t4PPYa#fsY$y?#~ekx>tC zTGca(E{8L^wVPtR@pGT>=nF7%{dl=slwy$J_Arw6somltRnii&m`@u7AC@Sf-(NIP zE*Lg8@QWsn<{(`{Lzfu>3&X=CPts1s&9PHX6^XR^hefTB?qFm5Z@uAsfMK3ukd{d< z2Ly3KOFp6dlfvuvc^UGo4o=$N_9fIxfWUe`qBAa3lX}LEqyW54+q$!4Q&ji;nR{l0 zWJOsWt5oj_@U5euVE2Ll0vNW$yn(kaEHdg}g|Ywd1ExZVFbivmR>`xE@~-ENP`%dd z0?OllcqW}qD}fn;AIJQE$TW3g%&1<5;8AN9#djrgOtqsBu!KEEXbt0s@mAs_TR%>U zBM~^1VHPp96jzRuV3Fjg_Y#AKh5*}QPTY5*blKyuX*)3Kc3&YFnA5BXmE9OOG)_Z~ z1kA}?g8}U^eAXt_+JRwvocky*()A@* z3QaB42CQS!C1>26z+t|ww0$I*C6cl#0|_Wbz}A+rQlUxyU-r$x--geiAap1yr&di_ z&SlkmnMt(VHHOcZl+L{_)+S0C9*$bAD;@(KO`YHA;ic49Z5zKl4r`BhAelcUl_a6C00uGtRd=x&Mm8t-rF6e2Fe3IdsQR( zJN-gS7$Yb}>@o0~9bHYcJ8OFFI?582Xuyq1?*HD|gKP1*V|4=};F3~JB#BD=aA@OXH4Av(0S zJ#HnFw|=xpJAn34Z`1Na&=AD87KmO)lhK-b1e1deGHQqr-MnT&%(GK&*?L+frgD z^=lD(Or~$B*!5X**|cJKzJakRY2q1U4n`VP5{bWuAFj)j>pL4vde<3({@iu796uA5+H3WO zdp{k%w?F1U;Y!wpZ=pFvhA9tMoLQ-nOniFoWk4yWcm@jWt(vP*k0Qui322GJs3Z@L zg5TJRwNs60`nuOEc@7($cN(yZU&X_oMLD4>5MYLMi*MnGT*>hAr?zd+1ro>|J&OSE z*p}s5{B;7{@v1d=h1G%DUTtZad{1Jh4S+Le{Na|_$%(1E+*8#5sQ_cmQ`PNRAw_=h z5)%16)cZ#AZFr2A!WpkQW=p6N8X5|YX!e>Bb!~3BcrH3X{-XsA;v)OU9Uhb0#3FwN z?aQFIX(^V`DB~&R-CE7}ySpi^RQaPye4*86no4v@>KIb#G~nK+B%|hl(ISje!iKg zKI)+{e(1G<{pbHZID=G=@#+6{oUOhY_iw6|e06QX^_o2duBru@^(x#m&CC7;&Npjc z0wpY8tfOWq&WaHwX+J_y-re&~w&%Zcr5A)PWB7d*v6<|$l5c1;8i~>s@ptx)srl#u z=RjdG_Y|(#JP4)ECece_sHmmK;}EIybiqU3W=EhqARTi2Y| zV>~9@eZ@wN8B5If#;Ui(g+j~pLI@fTguB}%ZV%Dk|Du0-+G3znVSJd^A;*vN-iLZ( z*A~x{`%;?}hqfPyL`7UH+u@nwO!K&l7MOL`ay~!s{B?5QFLY5|Xi@xte$=-7$42)c z2v)rXB%6~=)DM@};>Hb$ZjscEuNU7sl7*+Pw3IjySG9+Hyhy_e)!p4IIVL4xY3d`n zRJ{<~IP4O$?G>s~^IvgoXFOxIDee@)*7Sed3P8+VkX^6CFt5*9(Yk9LT1r~x&;R&s|72sET%*0lc1@XDr)rdpd{T0C(Ej%PBgIP}Jwn z4)+@J_`E{_w#~@C9@Jh`p+2WqtQx~E8|Ioq8Ac5qJ_n|nr#(C|f*b-aWSSvD8OA1_ z8B*b%k((x1%Q3~ovAM{4CK7W7L1F(I{J}Lvun#IPvU3}{G@Teg1||@|JN#dNb|C(P zZyzvF*abm-daMQiemd0+dUM&tWhG9%;Wb59icaHI@+*?8YsODr*w?VFWd+AkiI}5w zZaed*90SeR&U`_ZVpVXw(D3-eSdYiI_>#0i>_L}S!OqnCK~aH!_x=jN@Kv^2ejW*7 zcZ*=SNd^TpHwl7zBDkG1;0AgsJO-j`C)_bW_QmID{$6$IXKFiIn~h<1xC3ZKb;c|! z=`h%n4i>DFlT#uf86PL_d-i6hT6D_sZI?$?#LFQdO0W-Bk04F{sM-zZMgeCxStxo%ZhY`fcUxvU zFVowXGDuW*T)HHIoD1%rtY~jfE@G7dWCL0g^xjTymWnkeLeJ zE{sL&$y8!UO2hUl_-s~Z&fC*E`1%O2<+Tzed*$@v1Jk}5z8nyHj7??AP^i@k1b>#K z?DmiqD&URPh>=WeRJ17D6%08f@j{!7xu%tjchpp$o5f`XGF{>CSZa)hOi%$;=>^oy z#xEx$HvmBoms(-=%^a|{+LjU3So(R9?fyk+ML`{KS7r=RitwLQ6KbneSaKz4BCG-p zKE#e^OaBy;vvLabuY+^A3FO&#To0!7HSeyTE?_Ikvu)3tNu`2Cu>mBPAZ zBcA)bveZV*xflQzqUC;yD*}MRm5E?8Qx+IX&{c7BCKI&kuD)SM?0!a~BS#w@ zL3QBigGD*7JSctK%(*RMR5UJRCD@oeCBiNvOm`uNUY``8uM}5XLh@2*a0jj~pD#jjR1?5_6JW3Yk_&}qdsmis6ukz5u?ZQ6!t2ZZ z>T!)QeSg#1>sDE44P|G7v1|6uZ8nM|7cBLR)$lTeVIVJCsDfQ>(E-NM@0D&U^HYY! zKC;LHLgaVlj0^Gb5~C=|r;IEmJ;C`K3lH*L(FQbm(izESGAuPJOqC;cy8U zLn9fzOOJrd;&;mVlrrtHT(?mcJfS(S=_^R0@Vl_l8^K|U3Z??yRzZC8yEnJ;*1_7f z-TtyA^K+t0>P%f0$=46|aSoor8|pRi`ySXsZH%VaXhy+eXzEztp2N)`&q zB?B?+5aW!4Wl{B~Y5!Bpi~UU}DSDjB?39Q`mb+z+~a*5Ni`BKDPaC_ z4bL?&Y^-w8=OAV^!kj^o2y4&5q1{$T)QtjDm8rz|en(NnAFe0-We2kdkF2=(G5U1* zw4FieF}FBBlAtGqzSD$Kg!+H4b+mC@(dM>cmc-Oga=L2$Q1ae!uiw3A&v^eC6^|~5 zsJl9`%Z~qKbA=&8$0o`-E-cQBYI-fK*ZAp6yL1N zSjA$<(?%zul!`~p=L|nVfEh!Ji(p#%He~2~ty5tJ!1B`#l4IC(&ss_F#!DR)Ako*y z#255xs`Kn&pUwefo5-KJE&?x2o-_I_+Hzh>CKRJ0_bdERPsNl;?$cl0Gm$u(qo>6* z9{TWrdV1S>G$-D^6+%9cb zz?7q9qBn3}N+{Jz)BSTjBVMGgLvVG`!T?7=xWC!?D$CW&<^dX<;mOpo>ndY%+ADqZ zmFlL&fPc5=hSAY_v<2L<>6b$`VL>G4TtOl0NmVw>-gu5 zDr#8d;^&T?5TJ+l1;p@*bFg(wtV$@%N+;Gj<*zLE>Epv}>8otY`>!;56Crn<-pjFkX(JF{~vD=+^vXw$xL>_SLhR$lo1g8`|Oz*QUJ_x zHYUW%{rVrP*cE4~%VRv%_Xo@#K>U8=Lg%shlzXhjvzxdONA7$s4^w!LJ|QXXXqaTu z*AX(F1A4ar1XP~!6-TgvIWHBmgeC*y>L(OG3EKJ$7cNeC19eTO?WH9zwTCA2QI>iM zL*s6&>6u@=QPEf1+Fy>69;^w=Zx_!5vmMGX1lH|7&YZOND@rnxg>u zI>cE*p|1CmZweW1*|VEZ;8(b3JNxs}@Di=*AjFibtc)=->=fP3c!Q5cx2VVt*P|LM z@GAsoSaNp&o8zl1nLrUe4CC|sAV#%i$SUogDN`iXogSOrWwhTRiFnPGl~-__#qbXM zP@MF)-8DC)Fw+09rM}vn{{Y>8*r@CP2`2`Dj+IF|Oes@rFLu1R@sC)i1{A@wW>sT1 zNd5sM2|jWTrz2Ri@s|-gH%o>gkaq>2LER;xtB4fSOx&NtM|1e{5PIkHl2wgCm1vF? zf?SVLXLT(#AnBK&570G_!NEhQq_4%VJeZFqzMV7(r*9zhYgz74`PM!`r>uWq5p7<=aWR96fObm7vLlNxV)P;c4U}t>pA-BpP z6Tk`|J8uF0o(>0YYiM(7=k@|dI%udHgC{eiCv%gi%h+Na2H`2yvuv7eW9yYu>Qnuh z;cuf8VysVi8}nqV7)ugLnxYvcF3a-*p_lCZROvm?v!gPnjeRQzTP1cxH(>4FC&R&4 zi0+DRjro;S4|Q6@*lOB`@`eX$CUO>|+zssyl(qHLD$V}!Ms#`n!yY(@3W>P3vzCNh zin-`DQ-0eeT!@zf974LvQUqkU$Sf^wzJxn#OxQ-sCJ5Ul3gU!Jqq3?#G?Y=iXYcAv zxC6X5XQJTQ6MB5-2ch#c-M_*|hx*ixJJZ+|Iq_z%k?lTv`6O0K9^FL1q1|oSYVWnb zJR6F2VIJ{xK(vc(h28H!o}}YTv_25&$U@)cxV?@fM|Vc#)wbkFhlfk<-7XMR7jp>X z#)(mKW|FlA$|Wlo))JUKZH|&TZEb@U-0)_Q;J$pWbA21xJq}9#jUGJ*)Qn?azIOlr zMm)FVk{@cPIHrUdql~pJmdvXuB#_`axFQ#pRDj-YByiJGnGX?+(05yQCsx}%@|~xs zbQuK;YCddk|8Xi}ZKd7Wru1a(Rxv|`U#Qmy*M?Bq?g(4ZN})GwTkuO*s=_WXUgq9~ zQE)?myjj?#mVJ-8-E@*MGH!={-i*Ji4jiU^NolhgvFsN+s!}Lm*%ZT&+E@6P&>m+* zRh@aW{+Ei;#J$dMQsZx*(riVP6Y zYg%yWu#{9?x`+fvxURsb(Bp@gh?u2a)}Ld#RN}bw_RwMp#OutnGQ8_Ay9`veGNvu- z>T9%Av2TI%Q)_8dla1TOMe@3wrSSRGPp%Cn)nPub_b%r-UK_2QRPlze-LD;ne6x)18aje zhS@<&`A4!&^_cG~48;m|vCAtVR_}3qNM!b|0*G=XB~`1(Mz^F8miC{O6i{E~V zVR`xJ`?W$Wq(4YUQd~T(y4G6sNdt_Ens)c7I%_uNpDzmthocxq^l_TLW8&MTr;5yp z{-XYr#vG{jk-?Ii`i)pe2%yx+f6p?u_SVu*;kCc1mkiSvdppqinpx-(k>GXq88I)5 znD5x2qqbleRB`VykHId3g?q`Dt5e(<6~IloS-O*bd^3rE9+D;9Vi$!*~w`OXxF@7(#1I_}s4Nu=@W#skALs=P|HfEOWZof-e$X5*X9UA(&EL zMpLHX*v6Kv=R(cFBC8^QCo4>+ehku(l$Y)1_rFBPdr0|iT;@3q00ZUt4uU<+-DquB z!sGy4dcUH0e)ECar!%O$zJK^c#g?6D4Ybqx&Y2+eP?pENW_>ITviz&s-x^|EDGrmD zqfO$-(c^}|e*sA5z_zF0Hh-J%b`YODjLtLnF~Y|md)Zy|Xoh8Gz2xcz|Gb}sue}Kb zJo$p(gV;(ykXmx6L18I{N}{Mb`MkzHujgd`NbWNSWIVi+>0-gh#9VB){nLC(;wVJU zbi|CHUsf3`P-n~;SJpQaHPo!RqM3Jf)7+19esfvVV=(M*koD3LWh=JM0}00VWGm&R zjM^JhmPav(+^yCLg^y$=lnhTPNL$2pvN4BBY7iNrP$HWG@jdqsZk7V91qXP5^kzkD zDxe&sV>U>PZ||)6G0?6JZtW=u_m^2%G&J6T zInq!KO&q>{fkf-s=ZJQ_Fu9L=f*mey^2k9jH$X##+-HdBg3&pJOreD~2tL7~eR`gy zKQ+#Wr*gD^+OIAkB_8^Unwh%Y52`V1Zx+axp+)pv|HOf=%=ZeCXyRqfaAT3B@dMl1 z`@u-yRFL|4-{ugm8vk&QZYTGxD7Vm_^GEX>ZdFfLp}wBgK6Qk(m^~TF(sqHy3}~PX z={0=%nUXY+-#a56gC-(=A&=+|wb=JKrjJOnH|uqZIS~GUN*`a{uhVzjF8}QwPRu!Y zK7FS`l@rD-_btTDLp1R#)1{T;~kWcmYd(Wa3p zAmLIyUAA69{(w)O8+N5XIIMX$GLJy6Qrx1mZygt8Ia6}pjWE6Ip27WVYcCX^MI(n~ zhI3YnM&NV)aH^*xH(y+cD(!m;da)sP@Xf5GXRsy&5PF*~6N|skwNrI?>0Z|@RwHSa z{=iQipZ_(p$Z8&obP~28)Ig?Vc^LUJ#OCzBdyOI6wWbopk>3kcDWaJXdrf44Mybbf zi)UiCfS}3WVYG6yXGZ&*p+j;FgOC!n&^PUT2C#E&-jDT1}o{f`}`A4b=8 z!zVwh+oi9ar~IVuN8^`up|?HPz;XfJa$#2^t%zJMGCdZ2U~n6t(^Ow-<88B6;;;x* zs7Q)!XoM|7acY}_E`@2x5%vHYWIm0tkryPY>nN+29PMym%3+V-9U|$eaUAh4^DoDV z>PL_=tBGL@h0O|MB`&(Q5WeY}Iv>IrT!ps&kYh#H@gNYxAO*}qdtY`hm5?E!qRwCV zLNw6h#c(hCKg+He-91wTsHyWdaft8_GdY>6{|P%Z?k~sy&%riZD_uT)vJH5mQS#ro zr#s0aX6N z6LER!wMo9fh01QKvrK1HP&YF?V^2S^qTc8r@L#Oh0$73t32C)(PhE)C2y5hoZ}x4c z_XViL`Vssuqfo^O`@p}WDV&Jb*&^&!?($7_Zyk%6R(<>o(Xh+8glrZe@lO)zxD&sN zY~u$pVlUZ&q4tbAXTkPEg!dhMp)djec6_D>ho`0V{@`OY^h6YYgysj{nI>LECO>d_ zvt5bghxl+Pf*6>lHdYw!kKb^v4U2R+u&)OBoIk{nC^E$j#UOQhu~K;1M=;za6Vx*& zQdd&x8uu2BHS^!X#${8g0@~<&zBdXoBrh2#?^VI&jcKOoQgKJ z3#{v32Er0OrnQn#4;D_}KRzM^+WKq;B{|<(g;EwMxgDfh>PV&Ul{v)121EcLfA{XIGLVDI{o{{I9cJ%QtWt@{UUT>%u%0r{qtK=7cz8I*>QI=N$Ny>o!I^Dlvz7uL}XG}4ieGj_JiLQ5d==3o0sFQGaMx{)=#h)Vblb)!dF?F+D5 zBFas-_N`U@1&gWoC^|2McB;aEVcj~z(^PdQOU4@ z8r3IP<$FXkC)~Q0jzyBS=v&~&+u|NbZsV{xN`Weq5Ax?Rm-?!*} zXW5XCt1C-zKR7@lpnMT7#`Tb8t6CpGkHzyG@!zXUj0Sq1Ie$Y60c^MU`rf~`{qNzm zf4^oH!+_vg-fn4w!+||*y2TRb6j-4bbNJ0lhSwuge^%!k*l{kZ8g}qw)r%*@tasWz z0l;@IJ$Q7p>8oji8Z}+)vDpv2ii5K`iL{yLA>S$`#yzHB4+!~LNhW+``z4_3-uhg{ zzZ4`jM!@q`N*QSON+Ym1b-a%E{SwYd_lix*K5{pE!s6Ws#FpNtlWBD{v|uefgUKjG z&0CZ1U!+oV)K`0eA<$EMZ=6w(xK;jnHNr}B1qkGA$t9s^Mb)r7Uj z`NN|>ZSA=0aJdR)Z!&kKb?^N%f@oL{l-rqJivxoLv|abZnkP1t*od)MAq^XnpUzOK z9>q$-g&rZ4u<^JtH!J5nF(>=wxxe1HLttOIqDd|t>>`m0s^)G6ICe(egU&jt<9q^b z;UEbH1s`|_b$LDPNH}E#M;2IY#BsMPD0ovD-rA5$wLRvmltUv+a~&>^Bav4( zODefb-gZfI>zWTB!g##u;)|yAcq~F15Ph@e2YA%=Q?SVZBPBM334SZwi&}F<@pjjx zphi}Lb&3QQ!EO4396)K$*Rdcv5nhfk~pRsu*USn6T>i# z(B{Ln^n0hIm=f8F#PiWjYii6c{s3P*@SNuK^r-4cx2ki0Z^K3?ieUD!*vRtmEF6QbFa5)a*>Orz@i!mg zNCdH}FV{;i#hET_1`!&8%uJM-16Y==P#??>>T_wf;`YlB6b=L`cAf5kwAoQ*|3M(s zs!f)`#_|mNUK@e~8K($2348A-K;>Y3eul9ykRB6p>4>A|X5zno$KXxLnKMUFmWC9{ zX{j}oFSld^Ui02Ss^E=L#l!U8U)tL|HTdZHG*_7M1>vyFi+(^94^yD1-KYdbe>wr0 zqixuWPD-{%JrmNQ-+o6;r5{ic4tmAxx{m?+&U zVnWbiEN|f{6m~9nA#AeK8iw$0Su^$^bF^2;dbScWcl$VsCPR(wItz-KcV&{6Xw#r7 z>&S4FXyflrAj=c01jZ|o#X$a#a2}iOV|vrMGFs%r7`vvta4$#D-AY7{P_N6`8L?<; zA)PRdxfM%%_sN@?B6pgCmJ?M$+7MJ{X-8UrFtr-xoUYVasIJ+JM8d7QDqCgNPf z#*nprh$i8EP(H{hj=bBXKz4If$=4mw#wmc)M*7;!;7`DkmLhs)-m~5?aZTL!Vxs*v zVnm0XA5f=Hg|z9WmHy?1By%or*jI2^%KhE*^X}D-6l;5>%Hqrs>y#=tn;~MI)ovo1 zF*^W21|i3-Oc;Bmtf8Akl~$lnT-;E&C%}4p?Bg@L84(r2-q2L~FoG=_BBx?OANE%| zO`Q5AibIBo|2v{;KEq=zbJ2!GwXS0}k}^`rPFPlmRFrqS5{w~9K7>kLJDsKFGtcu>zc{1%m5;hyT)-ClZFQgQu}jff+MqyvC!^+ zinoi2Gq#Eri)Pr5F`V#A*DHopMdZe{*onqsR63xbqILPMJoH?SU{B7EUbca|D)+N> z=ymFi^%S2#k~HGWDH)26{Gx@r@%>0HREruhP+>iA4@zZKg~ zq}^&%?A@iQovkh@C3^h~egiqV@k&a(1j{AFA~nKk737kK^De?H_v5Pw9J^|5z_g+@ zjJC)pfcEojWIrW=y}`Fux8co`b*(W;&Oft*P?ls}0}fc-O15jrT=srKd+MUDlKlcK zUIo{6HU-5C)4Q`dT9QX}g^(dMSeCwh2=oN9iOE*lJx`m&M7D;Km&{MtKdYFpJ5Jb7 zM&8~x%ixKzHHFqi+sfWF?<1&OS6p|Dx=WLq(Ey#L=;y(&d@J$|k< zMm);hAqG>eBSAR7;VsYXyfG=)6Jc#Tmq|No|AmmZA}1)kh40WapG$CcZK6X5;METm zEbF%>z)(dDq;*nW|7?YP<1X35;2Q->r99*z@BDg2s`tXh>jvWW`4Dz|L1z^V`8!=j zg<5&|j@8gx?)*E%5o;?ykC9gO$W1gQUtV+Bs_S!>eM?w)&LcmM>@mwj7bkQ2&oJw5 z*O>Kdi^d@`@Gm@v_loOrLbo$jl!g6nSev#s$}f^dO1j}TS`P01%RiY!3eD#GL5RJ& z#XbgJ0_H7qmE_jh%>X84?Yv4HYn9$ z9tvJIO&-45=uCOKzwo45Yobs=?nsMVl4)~8WjYY?Rht^Oq?kxA4;M%R_B|v`8TOwE zY-#a~pOt%7Dc@G+8XWWzt84fQU?Z|rXY!x^hdoBHEJ6@O2y*}5SJay!RHl1m7ie^S ziT9E?x|j154NN-QTg8w3UcLSP=j1<2TUEn`ib(SDSWov(ZGDRJ$+JsrLJCsFgli^XX3%=W8pat&%AjGiHZJ_^rI zE~_`=ULis zMfTkDcPBz)KntOyDCix7cmX^`w<&6^`&xS6(jY08!g7^-tNMvJs@@{6O~}|)-ss=! z!q@RIoI<+CX+0{fMfA=Egy$(}bk13kHB+5k*~F#yv7mSjMU*-=&p7*YLvWlGc`1YTFhQIc@AuL1uVzlb z=dz6pT_b3`!)1h)Sr)D+t<6aAg0SEpR_Z`kH9p9^nge$@M3VIv1W(h*wq*NNoYnPm zcMUvA@ocj#=Tgv^jBsdbKkw>8`6r$f+ zHH$|_OuP|RQ%zoeOQzRXe`)bA^LskMj(8MoFQ@en4dTL<3BUo%M$JdQkm%Kv9Wl|` zJvroN*z25a!b5f*pr}|;M+nBJ5kH2yDHDoMzf&=mCdAmFR~eLW;RZ;A11D^69Ndoc zAYM*#)q|N+*b|09i0qC;Cb-irD}}eWt+?&^iE_&HJDEGE){=E-9b0a~G{}dQTx9Io z&w;OSG7f4Og-%vh$N%j{86o4x1O{B()G+kItyXd;ZG;Z{-+z$}Z4lUUkh8(%JTq7& z*G)r9n{`BIRNzn$D4=rrDBUp}AdF`KOCe98+MJN3m$TP@HHnEIMM*Kx~Nvv7mR z>wuCn43RRPsqIy;{#BKO%r3!7Q}hWOf6oajexcw_4yz!D)V&NG+27f?%=zHEW*~Z$ z$r^U55gny(Ui&dd(L=`l<{&K=u%5Wv+n9=fJy0XROhy`$8pf@i$QoK!g8ibr{ID2- z)8Qx(tD+mxf%Vx38Jb(7{88+vWUzJz0aTfNU(b_9+GJuK-rMy0CD{XV}fFVWk^U6}_h zne{g}k^&%ZgzkyNojiMhyeDsesl+<44_#K}KXaGViZ>`@0Cd!6rFjo1h$UEvg<`5( z@m1j4Ipf=U!{dpQQh_-uIQ9iI9gaxTwH^;?btxX3k$}NhncL{qNqE!c?h2jfqe4pT z^!cgo^Es+?c4X6$6&QBn2y*Ty!yp|PikR58#ioNQXLf! z$Xq}R=DU};HzGSss87Nvn5R7`0%YR#d_~PWwXHytLgk)zF7k+7kBP2oH7- zjveAlv`>UAidFt>^5hPXP~TvdRRlZI>8*Uf3l=qhsSIb`&uEq=@RPp`khtuJSia|P zLudNupPRZ$K?_CJ``Bp-eXpT?@w?Os!2y`w1eF_$pTN#G})2e!beikZec^ zU32P|&5ECcruNJvc_HuhrxfZuT7jT=P>uaw^k=@36`}MG8RfUqH&&%ZW!-5XT=f^U zOxf0wR-K7|a6@7}^_;Z!O@4a&8%L?XSNP={d5rp8#grWQ;!kAZ;4!7fppC5slsvT* z9Wgf#v`88}Ib+_die%yK$Bl8}TmL~dfw4cY8Hze(mLFM} zMLXpNZ4h-Ob1iOP5ETrSz=a=e@)N|wQMkxdW<$?sr1AMKvC(>(?LY(?_{k&Zm~G$E zia^{+0~UAm031__9`jlOv)Aq)bAINEgyZs#9;=0pQRp7mw@kkL#`WbRmBWe;E3a$~ z8reLsuQOldL&6A&wK3iB@&pE_VFURx^g_GTF2XC3&;Fd`9AKG33zVFO6Fuh({&`dG zE~k(sDu87X;_GXYv5e%Fku{dOv(XxR@tyCp7NbA$4m89@8gR9M9<_)8z!LRRpkH8} z3qQcRpmHSUY8=+?e_FprGpTF8Oi8H2=sh9~60=IuP2b?62IV3BJi1_$SgHvm6eK4F zyH?U)3IVTsE3Pk*U`#PL7jXSKVN@}%yX#PWhzbY`Rran>Vb6vXWjx@%BKRKE2Ko*h z7dHrwmGTRP6TU^}hgTFnO#$aE9|s_39+2!^aOBEbYlNzkW$Jn-3(}|jLC(B-F22xp zzjAQMiwsL9OA`oVK+O!j4YBmw;-K#S& zbH??eso;J81q8kPYL4U&H!z)`n9UV`WgsRvR)VSAIZI1P@5j5*&Cnk zGNKnS++f4h*x!(jyhoU$mOvSO1F48szQc2ll;{!t7r1KUB8uy^b~0@_6CR1FVaRTmy79L(6<6cMchwuSDWE})>^qDO zSmHdCt#_$+O zLv&XQyq>w9Osyoc30v5?!X`Z8;h8S9-BQZ)Yk0q@`wlt7B~yS4{Gn6u{EIf%BU0t` zsgGJVkD>Yv&+0;eDVV?JOTi(mJzSyF0t1%3*G1YvuDSn>t{MVEzyvCsxFw_y1wX=h z>x%pD_Aid)ab-)o3~ws#T1~~Pl|X-683Q&h#_>-zn|PC%_x0aZ`}Q49`xCFM&gDys zB5K0Q;a83HSxAL4R-^1M*Bs6(F`s#mL>M$pvbV}pXO1$=Y()oogl~!HsCipKH|xrv z3mwRFQ~?j)KSD>A)GNAHd!-M>c1T;aY*+p-K;W4B2nas500X6SkB~udZ z0M-u2fyw8p8NKXa60~LOQ*ojy7wUF}hZ{ZJX6*V|nkpsK4J1Xwleiz&IKdKqi?EJ* z4C&Q%m&-POoY!HQgwT}t5n>dF@KE7t)4%{G1mbfQ+-6-l{Bo?O9OLIZ*ELseg*$HF zp?HGLM{$6BATr7KkNVQ#MjVy=o8lkfK9g8ctM()eq0Wa2)YhTX`4*_1#Y-W1hDt~O zm+Z2ipUMzZu26EOo8cy9nfXD(fsyVI2V(` zck==$KTl2~x;LF^v7&^*4Le0g03px`)wa>xm93j5etT3cQ$a)TjcGxDz`+`47mSDR z3_d*6SrRcFBB%C%(|J>X-`EHm z&&<$R6b{$&&x`xB*Xhd+9gaoYv1|wfet;$zUWcFDn$n9V;GDxxcGdnUtPxK@<5HLw z9a>dVZuo~3WzYW*-MrSnw(_~p4xuMCK=uhCmLZs)UX(yH{wWjtooDnuy|v+JEI36N zqu85E9FIP)kz*ifh`f8PGBc5r0>%Efj@}kzjRS2FPX#r$4jgQ#ww(h>J-DVglKFmd zT4&W9Jrty9!HMNox%7b6={5(;s3Z-t!77n~QWnYwiWmd6Mh)~ZzH-+?jVq6EL^5p#Cz^yaio1}bm{^bh#ZT!m+A{2W89gub4JijC4lyA(Qx-l)jW?QMJd?qSr+ z1f)BH@XX4T4Yloa2V920kbVcqs@6{a%O;Mu8tl{3sgCmvUbvP-n(w`Ewj*~Wbag(1 z$5Lylplwn3bTKcD)1KXb^!!a7P8 zPXg@joTPHhD6_$AQFfp+iyfiG7lJA76qkitUzH{gHv1!G8iA$GnMLa(qlJtRO8e%} zEHky8XxQSBR2(^N9T*f^8Rdnfe82SzuMUqllEMg^iQYp|Jx}VJrp;_NtZV)~$@ex*Lz2RoFQI=fWOG&Clle`*jY0b= zW8c6SUQlLikUK2)I^d^fQ_P0mWl?HbOO-?ZqG~~+@XO|=+Cf$CWk&f#lR1rudT7&b z>VT>Z6!l21V%^S;4>ZW4lt4;%1a4e5U%2~@E0HiG8Mu`JA>wB91UwO;ZTeb&bR%IK za=!C|P42xLH8vaL4BuoJj;k0tGYMzW&k-Y86tX!k8pXwzehBN3hHTpFU3jeJwp>;~ z*-ZsYVHEi!A7vZ&+{`ntEv(6>*(fpQA5rK6fJV<^S)lo?)m<2s z=DUI!>fjI#%tLfA!OJnrMyR-z7j1mh?;uTJ#1K9y2>tVeEV$VCBC60MYeEoJT+xTS zo-1xapj@nvmN5H+pb6z9Ro)D6ztq9Lg|RxqzAFE&28TSKC$k6WM}&_#5A-vPvf*B^ z41(VRA^4YW8|BJv!sM;%n{f#uVkX^TFvcX9`x9?y%1pzpbwLkk`mVW8og{A8KU zF?<7JV$cJ3?3L{@QNJLAbd({aFW5#syos0`k)=>%5Q4IYf?h9M41*|>u*38iKAOg? z077zfl~iD)54BjZm|MxEk8F(U*AOmi#F=PM?PSH+u~1{&He7U%Q!n!I@yg*;n=R`( zY?YJ)nD9cU^jk)rO#*iJ%H*~-#u$wR^zB`omI@(+D~ig+IA`U~M!73_cM~F^AFEIt zd$?uWuVv<<48WB(Ci8l*qLzm-;)WW;Y1g9aFlm>Y&3$0qmtK5^_z@!1l?-7Xfu zaNA_DTSKHM7v8jq8CQaRQD+_s2MGfWx(eB=>wc3Cf4xhbP;>D7^@^ST#GG@_8lM{- z?n}15cUY@mzZxq-MsiYhHARJ zw3f2|HfuEV;Prn(44XV|ls@QSPS%bE$sS-^mng3`d_SoMQ}uJ0*Ijnj+^OLt7cgV9 zH*1gJD0#Y)u}~zJ87~3=4&wqRt%tS5OG)rOpY6o!{{2fu_hiBwz*~J0^DcN%Izg*J zy}ng%G!VOJsgoC>%d>WVjuKhus-4n#tF|(P8~6KjgpbynxZLCYmDWfPM2Gyti z_+hUx@!=q?aM8?IV4bQfmtLFEz)WbTA3WW)6-?ShJQcF(td$nT{qJ#L;~8wpCoo<# zp*K!s1pwRvYT`hoguFdTANbo%D84lVh)EBo(t7l3>IC?aT|1k>alIIg3OtqlN^xJ` zsYC9$kUEBHW6AK$i+|Lsw+CsdaOt4Z=x(b}SPvr7O(Uz&Z)+~%TBtN^^-?ep%E@() z<}Ae*zp!e~_HQt+kD!7W7UhX;U*W9sWw{3b$yZ703k^TI1#3T_riR9lEB4m_SRz%4 z&&xPR&BCCXPp{YR_c(`tH$Quk1X9W8r)B z+Pne^+p8Ucr+Babxf`}aG38RE{F4IE!k_|v+~rPD&etOHjE}`TjRNn zXYZ$jRFa%8le*nQc_Cgz84O!5C|8F*iJ*c3uuoT{3dD)L@k5#*Mg=`PJEBJuw@r|BEAiZOMemZX zx%tP<`*>eCj#qav3i+A*B2IFOG9nSb(xnh1yEpkxl4PvcmFiH-;vCpAj}7^0RwtvyO3VNKT23A?j{tSI1O~7v>~@^#o`d1)`wt zxu-XpA3GT^WN!s(^o_xjG#gN(7l}+eND$^6&(88^R-{fL_qF&hSqfW#6&O)VslXY@ z{(OTc`Oz)PHL!qDPSU+j!8cXeBmf@W3!p~`73un4vO98i1JX4AGsy|GHDOkiD;)MPsUvrgd)w!7#{n-X#a z8T$<`@ryW?6xOtt5*50|gr8k1*d9&X^rgA+&S)l*dyvj10$C;bew&5X$U9Qw^zbbV zL5R96VWAw@IcR8pRlfKkab^d_Cdy;t;LO&a3o1rAA{B2%d!5YzuWW(J-}VyX=w=&_v8!^|dJen1J8xyz_WFDc4z zUu~UUFlIX!9lk1f3#i2uH2C5rBYKg#kxNwcUwx@V{6#aI_dFb8L^0Cn8HO->tc=yq zOK+qFna>KB$YoPBQ=H$up6yN}+e<{>1Gc%toiX}t#NN(Z@-YqmwN#e4BPgxWh!BOS z34Zc`SsIjYFzZD{cs!_*a(wx;(5t_Ol+L0A^wWd`SMUl}0tymM#Fz=PwK1r;ZgU`0 zk-JI*1Q~FJs(iyk*_F<%X_NHXgSL5FpdE)fmvPwMG=L&y?FvP^YSA;of*{W3e6s73 z65%9HiHe=Z3E5FWI&b8tj?zm>YX&;ej7loI;%lE5=P#G{QqzVX zPnD)Id9)hEO^1@Sy>r@M9kNVusy| zUV^}bOx6+BaDk}A(bG~fRq;ukF_VVeBs+E2{u$el_PoH+Hn2I%fe%MUEjw27EEnj> zOnJSW{7*;9lVg`?m#iu@qo{NPt|({OaCk7%K^PkF1AD9N2qNh*n-5n$tJ?ef8RFM# zZmnEP{vB9omA9c4byW`Mx3refVWqlk=-FD96N#7tH&^3kXkNX?%sQQu5w<|O2Bga& zi(-QX+3rDRpFkvB+Hr_fynmZ!NSTkLyU)`JubMt}SD_De8l4XC~i_ZQpg z=kaRU;oohonLo6T*u4C%m^C?ETmGW?oRDKID5y81FOXu@xDI9J0fjOkn~GuRmwZwi z=rv85lEAz; zAsOstW)0z|&n1!XlU)}hqp9}ce`(+VI2;>3L>saqSbb*Mf7L_>Tjo?JlnqP7?|HF| zru5+A_lbq26Z^dF&j&mh`-aFtG}-#rkr7`7Xo9IOp5`tQEtQ>rW9zw=Q@>#oCiv*6B9tkPO!Vl(iV@7&{^sT% zfWHv+CE**dj%_p?oEt1L-}n2l+SF_VZ;ClU%rsVFB1&F_mLlaMvu_+vqWN0>TfN9X zLOiTJl!VOj#{;fgOa(I{h{e6SPf&T`CoR6L83!~Rshv-ckNF{nm>78C!WWQEeZqR= zbufM2*;p!dQRePh$;7=qebRdwHZ5>eVm4^b$r=GdN#8L>hAP+TI)uqul`_W)rrF}; zRQ=v57l8(ora8MJ04yKB^QQQ#4Nu+CR^S5T^Z|lxFFOST+plCWC3+{^AX*8p)r9)2 zNwdA=x_r4$uR^rYt46g|sJWXPIl9|6>Pp;O8(@#l>P%~}S%#(vWX)eXJod@XG6DPc|+-66LgO~67Fvp><#2Z+7Iw7u&t0$!8^2mZuFiK%b~OTHbHT?{AhFPcvzAFuFkcvAUjCe zWg-2O^o9 zqH`w)S#mh_)*vjD^ zj-Q<hjB7gNk%aZ9jde|Jz{R@{06RdO7dL&CBwrueL#Jc~-j0dtRiZ=< zBZ6p~SmRHh4dsIu598OB>n_mRl>n-0&NaA&qkw5Mrb`Ev*b#EL zznj}DOcbYN*Wb#ju#XvReIRYhy4pWgW>Ed2A)H0*rd4O5v-fjPW`Xy_Zn0QK%*haLA&>?- zAJD4n>}zLR>DKJlOvpApaL|9&SvHQ9B(0_dT@`zKv(`#$zdt-A#3}gmiKKV#{IaaO zrhOlwyn67dn_E9qh0p?)Sq(boTR4Zm(BRx4{fiIaFD^f$2xn?Whv}ws<#Q;3JVwFU zU;3t6%E=qZ>N~*SB#d7Q*un-FXdsSnMVzLOiB4E{AK_ksl&S*e+7x=e!w3z7mTi2y z{eRj4^U{QNEBXA;IDo!!h`*jR>FL&CYtUr5q8RWRYzMrB1X4^m3Kj4Ll-Z-mwTVLx zE}+k*b3~yNt7>z>0eln6u{5v;vo>BI)17OW{rK_KiXJq-ST03bwi zD*1wiL;aa3KR3zVl|4acKFfxdE`#o(fao1}_zT1?Sv_A5pDQcO{MoZ;b9CrES~2z4 zJ+FFtMJquJVLLi5QdX-8phEe8QE_Pxi_LW}Z(VokV!ZCKrC{7Bs01Ad_K)F$3|q=K zi|<&{1VICc&4et6gh$P%+~E~50rU z%mR~@@#Xr|{?pR{8GQ8u9=ISMKwEfEY zmWmoupleumykr#Ypx{C0t<9zPs|D|&DW3;83yJs48!?z1vFGX6Y0aQp8wey>J~8$; zH8{|SZVA_{kecm?L#U0FMz+&MnfxU!)5z?~G&Ml04H<46yk-P4&n_(k53ZGX;U)E? zdmQ64ehf2NA?5F2O(YN!sV3bRQ^RFS-mGk^J8Y$8LdI@GSofe4!u_d$Bo?fZECG@SYZk@6nV zOzQ3!cSm#&D_#7V;A}b4kxqC$v*Eh3g%PK8~+M)W-&l&1$zU$ zK>$xcu)jWTXc$E%clD#%w+R{AXvMYYQdhT9IiSoxKDtDH-IiD_xmruFPOG4Yqb;m3 z0dXum-8T{3@;6?e^t|>_fx;HwxZzOqA661Dx2M*BL;sHnMDGUX2s>-|6yU8Ror+BV z?9ofY1NGV^P8OqAM;K4ZF&KR+eJ@ZiWFKmZTwAT}(9Y)UxARfiU?*SkXH0e4p)0iy z{KfuP$L;Z;?ez$|S6j2nxro%P*9_CdtBaQ1KQEd1=yMD(8;i0Cg8PNjMsRon-s;a6#4pw1-^4YS=XAVh^VMklTc7A;CX*A)vA@$~%AHbCv*TZ^} zVLalN{&x<-;Ej-OcO8-$+(#XWq4uZhGrqXgnItNfm9 z93Dg-m)cEl4;kWrxPqBXJ;0&TNYkQ@^7j;|+@yqEv4sX*9KO$%&;V<;z`VZ{G|0ds z3gXkYN`$pZKYlS}?|*L>V~5=7rOTOTx?@g`^DVpwv1u782Iv5Rv&$`bJ!`VhVka}l z+i$tsaw~3cy41FiYxhqt7ZTEPEGxrLoETCVYcZSP-J7i=4|yv4zNLlmHaN32?VN2u zRr76>9CwW&EIMHJH`;bzmJ4XIX3rZ1Pa4F{|LqD4Kbr@a76eRX-Jo_-1RkvvM92_H zl5tj5gz`)*@5mqOgWC%NHIs?JBuGu>nt9e>O;~PjGZM+4Mi#t691>!i-RtSFe#GS} zUhX`$(H7s7JLl0~n(bgN2_~%+sNMNdI}-M`+)bQl&ahj^=qQJzPPQeAQ(KiCfP26U zSa`^F(?T@4mNYXR%P^{O*7>+7Go#Wm90~x^h1o0IuL2E+LuaM_sY9E<{-jpi1!YD{ z_(S!9Fa*I)-EZF3?;Lva=Qut0DK{!yl5dpz;Y2VO2u4myPn5T!n?q{pMT-pW^`qrL zh03`r(|Vv#@zvRh0t&7j9cz-N{o8xJd2=a@(BegFCkk0#DsP^8T*v#@WAPArqVLyb zxA!F-jTMO+<40MZd@c^oMnLKLCNd6EIKKUpmM*~U`^9k447-`8Q8xvdsr>pCf|dO8 zUyJc#+iUX6r=jXz3byl}36RzG&RcT~zJ+QDkNF7o=Pt`mfnz&)8i zhnWfX%ZA_Y_t!l0Pq6}az@S*9Thv*oNtZg(kiF?oc-?10+MtN;;UX#@{fK@b!A z${eI-L?dE-`0L%2XLu~5>On_!W!hC5PJ$GZjNpa@gtIDPH)MTI-!cD+_E{esyv`rW zqwN;G3KSzzw57$xRJ(_pq|5cMwbRc`z08IG(({)U|b zCrY<&8H;B0lwWfoJA%IXbMOX(9opHjD0pNWqx(Nxn{S6Fo&Q}saiF~wq|g=T%skDh zGTblxkMo)8nLytN&R*H=Q_)a8nDbSMvkBz!6uqH4a@-NeyUT_HZ*SfzDY7xb8Y4b^#!5a0AsH{!vka= z1;>EOg*6YlN?hP-Z6)O@QhE8xD1v`DSR_W%oaC+_V~)7v?HtV)w9%>f-^?kMqZr!R zuDP0`@wPjLlgrc3(bl4u4PK4qYrz-dYU1;J`%+u{<$FeXcQNz5%zFB&+vs7Z#zDMe zPcQssJ~q2HYM+f=AZQ}uV7JX|eI3bZG+MmUf(r&i9JBTbY|pX1#=FP5p16%5UCdc^>ye>S{SsXtLZE8IDVg8VwN()tiAfeGB z1u9OvjKI4s5T5nuQ&d!ycH0Yd2P5xjhQ-iVR1NDlWN_Yl`vuj&W{2h6*S{QPos>R4 zD}wrMg%_ysQV(Z()daW@-AF&S>U0oVV;c6!R*D9FHT>=!jDm|8_TMGsg3b>ax1!;F z+)jhdSV#HgVn-OzhdRx^BpSLsS_&kSHz1=&CpV0)Ycy5Etu9rr|Be`2wMUWXr9{Kj=>^N(Wfb?zD^Jm=n2lHv@DVEIsKR#;PupfZRJiy^? z;ZcyH>^JMvG!Ixt?WDELbXmk0xixWN`oYCOz3G!)zJoVQYTFIp;$Y1z#+@jD(c93U zP1ve(zkQuJfQzdGJjIwy>(10k_fMTQ5j|(|^kS4mKDw)xpuET@+k0mM*?M`KYi_#> zm&i&vu5AiKne6p>;}5&sHZCz3ZOhVB;0M#tMltq2#HGtX z=?E*ADBLf5w(hKppt$})&lToJC|FmwlcPWX+xZ^*dkPKO(rJ64=t3pYPoJbv5=L>x z$x`>z@G6{lmLsT9%?IpZFYRQAT|Sjo(s-FT5{=JKM}e6b{<*{Zj|uw!fs=S0@(}<> zPu21-vRG%}Yx2*EbWcAM_?aOv6fki1TO)>xna4xDaPXg+7u5uJO3f$8qyh@dHPl{l zS=0GeU`)-mlX_>KBFXw@sm#PciX}CiwzBcgh_}LQa4a$YV{AubESTb;KvFVEU%drF z7&zk|^;^wA4SYtcO#_v9fr=XKSpX>J47M)7Rkf3y2j}bMIaSYCaJaaKc%ZiU3fVjtj53=6wo`JK3ZKjzTh^`VTEs<#9c zBO2e^v=6^{pf#)_z2RCE#<1{ki9YA!PRyah87`XQG{ww(iKcY&@OS#}@2IKJrJKwXmCB+%gxG&#rB9_Q63E|$uT z7(~Yh1m$XK7psJl%GQH)^6L3=@1jrFKf5+X$`D;f)+BEi*!Vm}uZL=oIy^Ksl=_La z^)l(mr1v}pS~Mb#tI@$lFFZc>8*X;8k0@KM73kXKNHSQnt?(brVbx3b_?6gt%T$KX zfGN5jkj%rdx_7#oRs(pm;!mUboS*;OtADJX8zi{R2}L*B|LAAjf}7arj#saBM{NTmi4D6{*f(abUzs znFA-?6l_f}L!~V7MP_mJu|jXaAp+^t+Mpaw(F5-Hxpe1UnpXiOk+< z>eLRIlM4qu*uJ@tpE`O$-?Zvyd%*=)`Z*zeZ4Egod)c?UBL&Va3 zj5&V3v9>i9j3f%S^mr5DnrDexxMb{#0;O6`%~8+fBv1VE*w0f05x}>03VM#!XkNA+_uG1u!tjY(>`?FDMV?4&ENj7 zF6MIvsl@%?q-vm(*Y?uA=lIlrPl<+istnCE(%wnN&Z&0t9$;-zf!tfVDWNI*U7Xn6(%@ zGvYx`N`gP^0G%!@FWts=2Bgg&#f|pK!ohwrG$y^5B~Td5^Z9&OnFIEc)5&BEaXu8x z@VDD>ACMm)&oX2XIivqzj%l@B4&GhD>EW}z3hQmo1KuEeX`~U>)0l#mW<0gwK|bh- zi$z{-0>=D`R#_=_L8W^s;WNai3>-_8e$KsMN;8YGSRFn*!*UnvFJFM$67T`&2LoRQ zVsP5t;Ou)@6k#w$Mx=vooQ>fv<`+^un>t{UL+!&E=mE!*RAgzJGp*=sm z(NngX#8bBzc_(q8gmYmUJX~A}%}ajFPgT#%otXS8Azv$iuD=j`_XaJjKb7$hK=a?K zsO&YTuy(k6``f*w`CFKcw*6B$CE2=Q@?o>qKf3LqfY%iqTz02Dzh^R>EjQ#E*G)*z zq^7aD!BO61+IdEi%z@7LbeJ$1!P{2KCv+OMl|`z>j5`5BhB&v!;+}HC9lNt<7xf|w z4`XzLnzKEvbi3_u4RM(klIdO<@mfb~D&l!@9)^ft8-+$TTI~Q;-zSpG+#(g0rza+; zm4_ZSz~3a;(Yj>}#I4q2Kq5#rCNs;$FT(6DqPTE}>rpflL~9bRIA)V8W=@W{gK=@MK;xR#5Z~$}&8-Vv3iM#VJxVL+A!qgoWl|-z2=Wi&t!$fqxZO zXNYAJE1faIWf(D~`j+-0Ez%>Jy6L3`E0yBTB3x`iXkezcVS=` z=nRMCHnEW;{0#LwrG@0oB;!JYB^H4^oYfNC)nCMDPuUi9;3eLx+YBiXJmfysPh`$% zexowG3k$pXsrZLK2`yszKxmH)Q~hp&0?%^rJ)tn;X_@-k9H5%rRw4DwM?>_SsURt5T-(Eq; zyKcy@qLQs ziTkAS$e${b2+_yvp%>HSC(S?OMc&+##Lw=@Njy$AZA}%R{pQ^bZ2mVM5g{e zT|2{#vHETcU-k_F;Q*vp=I&m+y{~#(8 z`W1)L(9@&>!keo|@K|*c2cEKFY+Dr1Z!^6Ede-ctMAnu9j3WWW^k7N2GO zIUkan{d^Ks0^Ln+sQ|1Hy# zgJF9j8tPc_3ew4xtlH@mXF~Izk%%Sb0H(T|wb7-Il+!QSXiUG$XeG90LoMPf-tD#w zcx};po!#h+dCKT6T_DoP8jh+$C94yZgao6?3WdSG)x)I4qF z@~VS*csW$bxXg{!h$G-mw@sPKtv6L<5lZyKNYS2t2$?*68Q*C3tgVN!qF?Sk{!h|n8@fhq*CF( z(Cw8Q6OUzP$AYrDNR$?69|ruxhs%0d>91PE-^%O9);C8taCx5sYk0ma_fpge#ctm( zSA+7LO#B2k>4B?KI}j>Eex|Q{j`WbIKD1MgSw*#~D~LMR_~(0m>E(VkI@`a7CA-z2 zgPg#T#B{Mgn7bTI^_pTM#E!#W&WhFDTH7y4LA8o)(*J(L@b5nw9&_2f=m`CruDp&f zuc9Yg4;PE*6ke5DCpSOAuX6>nh^aDm+t75yq%YC}+kKw1)FN2wN!SBQTFDER=2e+6 z?b^o9)W05vX7hCmnDfhE+MC1(Ow&1RA6@>=>q(uUA=N@^M??dJ!3wO|VMh6`XM|{N zE5YZpz`|vBF{K!sD`XXrO`urvj5pWRw{~7TJNUK z3(_fRDs;guzf>d?PXFcthrCgYNn!L$z)>#)a`{`SV`n1_9P_)?RZjIZFH&*u9ic4I zJ-~~hw)KS0O1#KYoR{@jkIx9*ov$yP@7xB{OfKGiR`K~rZ7CD#Dznil8*{Md)luZuOE;f;l>^;(qAbM}ggeelyrf=XlVsK9 z{6eBNnDOI_o$y>v%R5)&OKRzLsy?OqA{&r$|AKsREAe)_)uA-5r0XW*#K%+>c5(ZPDTz z&z9dxQ!O&()^O*qp4If-Su?p`ZTqQ4{FT!T&);dMOBlR)wxt%KN>eTi_DskyV)oOn zR1Vokkg^q{1Mg391h`=LckO$v-|gmhQQW|gLd_NtVtKZm+56&VLW_aKJ+uWVOXplr zIlIRL`ah%J4p^!CigNK2Jv&HKSy*D+^4I3!Q#}-o7)j}1wE~+{INka;nHH4I9L(3P zAU$$rS~%tIt$&BcSG2G`85}@LTL32P6hiO3whW(IGvuCYDvF1Ggkq2k%c^Cr{n!yGX1D4?Z2@Y#1+eNR=tqmX zn*LEH8-5JR%R;azU6!orb20Pja|>)%nekb~m2wv6R!D?pI8bL9QLOu06p{?xBGFRq z86ZZrG(tSvACsn-XgW zgi18PD_f2Sg*U!yfA+2mMA)6l~ z_tu;QoC^_zBW=h;Zg*F2H6m4LByF7o#U|PT*$2P*rw%l`d(UxF`nCD z`RS2V*qKJeqYWz4|`U6Vmn5)4CAYw!u|dYXzKD9B%gd}>8u9h z$t1tjZbp5}uxfa(1iHO8ffVDw6m8czfb|LZ^IrEyi!4-+cO#n4jL%GQD(f+Xo1{trax@04 zqmOm%-EfQ%#WhC>cuyHL({ zFKlK$D?3Tf5ST|@0^t4cToU_C9;-9z2r@W?f7Qb--)&<8Sl>#>m~DvXK2FRLHVzs3 zX!Iv_|n1m`EH6{&R)BcG-T z2-~ac+9U^qL1)X?s)T-wPJy8YF+ajKa56W^p4iQ-qG!DZLifp)2!)jf@AOG5q;$+# zFmZMQ>%Ur=!vX8&%gDe8lf0n?Tdrh7-KG_z91WmhrvJDnE|;ArWL1JhLnffBNCPn=pic39OW>90y7#UX~~X#4?Mm2Vs2PGD^~y z#%T4`hQc#J&N4ymWAB)sRu?}#jR4o&gs3rT?Z;#Wm+!NY7Q%(Zw z5QClFRz}@8r2{$@9_lm(M;QG6c~nAGd`K&czL3DePkIq5gppX)83j77)8PN~GI>NZ z$~Be5rz?UN=><22i(>x0!uU`0Erx92(e1apE!4l(0~v-2DrgEsf!N?gque`9H4M21 zZwrKZPT8D|blaQgxLV#>MQR3=SX}1Vi)X%f(R>LeR&|%>!}(uv)`4)5AEk`zWdBYkFr|g#UQ8oG8!MPt zMJ!7&R4cI7%5aF3r>>q5&H}A_1CjSfllpZYQB4}f;k{?@>b}Les$p z%=Pf1-TTT`iH087?iTFFSEV52+yDa&jVQP#B+o7T)$h5!=v;dodFl6GGvB}Aqtnk$ zJIB0B5yMC;>xy7!2| z+?6g{`3u1hjIgmTit(|%$DPsOqfPt`BYU|go@BF>W2GH~8K!7mt5^dMmIB|sW{#acMDGL{ zCv6a)@H%RmS#&vJE!Rp@)Wva=Nm5|C?Eu@WUb^wMA6dc1aFA#BP|h^BYY;NrT1GRE zYekqm4l9s0+A>mQ6b=|KX}76Z0=ob-_V<(_vK7H@nUheeC=vd7eKT}gxP~uB1{C#o zx}0g=n2A=0c~IBZ=pwU6L|6&0G=&$Nq#L_kSb_|?o@6rXUni=`ZLrbMHG6v zW}DWQRe>E$METV_%Fql$1^3|6>Rzkv>pYk*cdxDP>m1CPo${5*z{?cOb@L3t_gIv_ z-&L79u?O+aDZ7^J4a|m~QUVtsH2%72guX%Y0CX+I?tn+IToX|<(6DWe>KG-A87r9| zHArO5`7A>*`QFI6ygnc{E{RVRMO(ARUd4$}Kxj@RVgCtOWhmnIPcssgIL1o6wL0|_ zjG>5Q%PFV%jmNEydzt0`}fV3e!ah&tXl} zm6Ghd-yP;+X;`i3#$M9%zA%EHFL|{5)^H5o7p4^)N%N8Oo&LJ=^6}4kjB3h|ldI|j z0(Qqgz>mKI9R}f~iPK)Mze{ldjhq%vuZ<+=$Viy&5BmtkHpj}yjunMCP%UZAo0Dh` z|A5Sf0Li}gVaheUqf>*RsHV~Z%{Aozbd=X$$h7c$G8H9txRa|=5Zmssbrgl z71w=vo-1QjfkD1{zWSN_zr9?hw1hl=P6AefYqZ}zO9EbrA{ z861GhRrEL?c770xZ}*CzU-FD^Ui)CmttBPetG~9c!$QlfuC9SHhUSYVfSq^qsO8OZ zX|aq=3!@*nl&dWAclPK%rN2BHtlF5kf*{$1)!+*T9=C4wWVZ}EVlU*{>ds>P0+cGL zMh6&qbVa){zbc}#k|9snZZaJ+DMYM%jBCNmeCxZSb3dS@XS64QA|dSrCr&0YTl@*5?rpAApZ|H}=X}Q;%9g(5&}x{a+1FFbvVW7v#uzqq=6(?3MxGssxz) za~m-4+j#nYFCGC%{ARKx29Bd3XJU$sJ_%Mf9=)qDRB1x_k)G7K?bgG!OA{Uu3c=>?=CeK&k>o0u?R<_& z`OkAR8FrD&)7!2Fz}_ETh1ZuN0=&~6ur=s)#_G9Tj+JF31Wp)A*g}@#(}EkP$4VCi zjeki<1@nv(S8(8*$7$D1A07@bM=Ke?^pC-BAJZKN)k|ro8Z;sLA4-`S5Dx3B1Q^X7fO3 z6r~3E!y{FOp`3j`&;Ce)7H`~E2xZ8+?z%70L4{y&UxW3h?&TS%Z%LP=O+k6|0tZ8h z9NjBQ7XN=LMLP$d7(ZzanKQh!rtyuW<7w2%b4d3+|8R&@lPBFzL?L(T7KmTk&G+u7gw5N1-k2heq`k+FuSvp2-{5|c z3RPDRb3jcPWx}|Op7=5hn?u;fp6i~ZEDr?8B)tTGV86r`vx=8NJer^NF6hhB_9+pn z0|VHtr1JJB*XRGj*DF_u`sdQXkp<@X?KVtOerz$vjaAJ$^$k|AN%Mp#I;z~qJ1jZ4 zH}oeOY!U<-dD|agJx630O3JA1>J|mVU4?3a0k*yO7`LMaf31?^@{)yfWhQd3Srus? zTT1Oeefzv>BDCl!XY{*Of$Uj-N!Ta_2BQ&rVuA*FoOC9HgdZzf?h+*Hem+KqHxd3( zst`ajdL&VH>jwT&$P_8rha=>XCqlL(`l3#W{=9_=JM-cYY;lgw+v6`@V8 zv}T}TI#Z@GsX8jRVdwlimq7DEV`C|ESif56h3HNX!y4D|AY%Dp?bvJZm7?5Srwg** z^M7)(&VAKrLu>{%U1aS6>Z#PtmoBRkpQ*JmNsdW;02cducqn~+ydb!jVne8OO0w9o z6*bQ?&h)Vvz#pk7*@;)nnw`9Gewl*C=S5^ohAr{D@9zi<;uLma%}L=RL=tLpbM2SL zpC9fWubYL;c}6Fxil{@`n$QvyVP}O7ADNcf*SLzf3+xw~%0C<9{kTVNN75IXvp-IH zDx1IF`V&2%*OnB6eOF9=4`U2bfao1y^3Vp%M47C~-5UQN4r9UJ)|tRYvKs9RW{DQ; zcTBU4T^65N=0b_qzSkKT5V<|gDb905mM@h|{fsCbD!>F(*N)~lq-%nQZiP5~qXLIp z3ytwi;2op44~fEJS+?_sU^Jao3+7zlLsd zv5B)tt4ssL*j*NP!qJ;BX<>4eQ8ioO%++j|e^SgC^+Q=9*8)9~oRuzpAo-^lDWowM zK{%uyDofh}#!27XKvGuAUWZFrm^%T+>?9)Npi<8@iHujtvK4)U5*^uG@ETy_m;h}w ziSNDM41EV(H*t=T`4&p*)G!xPbmuLtV1T1T%<}kKNlXkX6XxF=dp?O*`sY1DMbMxU z@qAUZRG(?_m^u@iBtHKQ%WT1oG{nY2O|QS})>3UVN5TNeNrlw0)E@1vP!7XfM3YmL z>B&-D`dT4LMoeFM`<*H4(4v|n=yJ2WZw3P`YS-+;To;~@zfmputG8gX8g&iudmH3OqOSvLky zF%TWpEfcQV6}O4iO&KcG>ofGS3*bb7Vr~gh=RPviM<}S8xe!3b^cmSp_Av{WV2HGc z7NC0TtmG4!2*cQoM!x$hVrW34$E?!Y+?0-UFL&AZK%B&3bgt{HB5ZX05%gz4UoPm* z|Nay6VvDY<27YXB7@J1jd44n0{Q`6B1{Ip!e><0ZCYgj|Yqb}?#H3kT`~FQAoC*D! zH|q`C(ygNjZpKhCxLCfN8HPq;^3?%6FsGGX6-@dykR2L0E~K;CbE|Z9&Z6JX(vdsT zh)B)EOKccuxIdaQt`{WX=MDi`bRGPv=9RpCptxELO+|=Ubt2%bI|$Z&dsws47X!FR zY`js*&T4lwn1)q0bnG#_GV2go0)E>p{Us#J8v~=3u7aOHfyYXrk zGPIGC>x!NTS4zZH{d5Xf(Je^k5^Cfunj`Wd(3tvtqZ{sbD!ZJ&N@bK(=5T_p7KQ;8pv z{AhkQQ7bxdrq)5xJmKAjS&k@Wv8=S~9 zC?cW-XJfJMs#gbo224(2F&wHwQ4iU|OP~^ja67MwF57Rb1e(m>iiANL{vAAWgfOC4 zX_Kn&l8TF=CuGL__|4~?0+;@%2zv(R)*v$@lViRwGip3{OeB$28lc{N8_`-WSzPHo zMx&NkQf68WVAEAC;l8{QnDhyqa?y4)>F90VsO2pH7-0~TnPMsC@%nPc*3Pe~sv{ZZ zo4_TwK!3!Ij}>vCN-!*ZxFNbGqQR?T%*l^4m3MC)oa8MABob*|A_A{DA zx<=@8c{sRBh=JtfR>VoMm7LtRfL|J|)C-QbcREjC(Z{R)y|huod}OWpakGz;k3D7; z9q~~ zMG05#>mU*iY=~2^c@QbvLq@d(TGUe=gZnr~_wWrpuiw_}t|s>o<7uF0tnl3;FuBJ6 zcswjL%COLx8bX%M^~xR;84i{tlBhb*IFsQU8*9KHSCQUSV>}N*PHC~UP`JMKpQBz@ z({{LfZA2=<8~ z6Rk}wS>@59$+u6A(ER(cCTsy6Qj*J4-=Lk4g1fmr1*SlnOm{ zijiTHxT}+Crw-OTq`W3~%x+m{!eiwNrRmRe;s!>n4~ZcKVs%nNP9a;3F`OlkB7ceB zk>RDFGcNOc2e7hoOyUdl^$q%sRU|X|72#eHe=9bKIu|gQF_~n{dnbq}PIuM%ceeh2 zcC{_t9awGUYo5B*0LSKG4ff{V2v+8cCSqj7J+Jy_l+2GzuK+-xm5h3Uol z2C{2#m!DM~&G!z)63O~^Ah|ZKgV$MHs4^9w>tqxwD49_;5mhp(*^^qpxG;$5?}klQ zu#5#0cQ$u{lK-ztab?At%XGr)JiWw_qodIqmfjGXhYujcPeG_4h+h47QT zK$;v3WFejDt zcuRJrX|VvAygdP3I=WUv--bWY8cD95g8(Ia$RDkiJ`AzL0hviMM$gm5G;^9>w-4r0 zFVd@{l+_aT821u7n2cO{#hp{ijihYZ;rI(RL{17;*Gg@SG>OSB|F@OD-7bl0__S0A zK<*XUC#55bzasCPr%%N*sgOR)?g)zv24CVAA|CP~Egz3hd4_i=BI|+UsZ}VacZ!eA z>MN@O@vPAdA4O9@L(6Lx>^%q1a<0XZCrZGn=Z0$Es3qY&5Q;NQ^puiF>(L6MbisR4 zhk7o>wWU%)TlJ;ZFjZ)tO(9k4JpA>P&6loU0GvVUGNf0+p~u7bP|#hIh%7*pcBC9! zb$s!EN(i~fWtw}u(gxMA<7LeAaa5X^Eoksy!ni4Tnbq!p;r<2pCh&NX)$^Yxu-*Jn zm@HI!=EtaUYDEDO;#|ezEn?SCPHuM3Hq!NEe$!Y*n$j`pSr5kl8xAyCS(P-)RE;*a z(cg(%87ed?w_L^uk>wIWWwrLp1FjiPbv*d04mLGe%iVM&D+-r#XG9)28)zLe1qxMq z2-FNhVC+tK@3k;Q=qiOVbapU}sP5Z9z>*jSZd;&oZ|{}_P5MVJ%#iLVG7XC-SX8Dy z5+*v8DpZavj@}(LmP|LB?gOD48^?ayhLS4o)OcE;?)3>;$QX|p)eHs(5(MVKyp3fN zs%osYAgGsmlE4>5x#rlHb)>yw>6c?SglQ6QLj_Ut+_sFTU+1ZP1)szdmn z4WEWhJjr4%iaa@EXkExCy7a~SLJg>{r?d8(>6nQ`Q|mJ3zAoJN@*e78X^c>rs=B=X z-@1FFgB}bNKoQy|V7&qah|^FuaTSAX7T%{n0E#5s!dL5CXRA!DKi>b4ptNE)&JJpM z+*I{5YYf7}s97K5T1e*<*{cty;zV7uP6T_Adct#8kAe933!o-0FX;7V&b?gsB$rfJ zUzY;sdT zQ4*&vRAS1J$tw_3CS!U9B7g_zr*Gewp#SaH^R5}gZjHzCz-o3&1p|tHqAJisz$PG^ zjhTP|3dQOC#?14)=nK`9dAcicxo)F<=CM5Yu3M9pB`K>TOhqW6IomEdfecJszNp@q z+-wE>mg!akwl)0tPta`JHTLr)>v)Hl^Zq+;vPzV{i^H*#H_#$-fYWbqw zu!1p3UT^ikD@;&IDV+^%mM&Txa9qJ`{0efM%v|0EPy#8-9H?M}A)0!P>Spdo(>J+{ z)>O4H9R`iEnF{nv!45X?w2;F6CT%oL43er%LBeoKOkC829>^Fa8T&er?eOnx98&UP zGR*+DXhNccJS6DE+O`y`u?I4D<e+`R8=pH? z!wD#sqEHOGt%DL@1a$8KDI%s9pFg za84-hY;n5@AOA5hWOS8ORmB(?bXjIRtO6G>S*I{=@qZj?nL-IWX5WZEHyfZ{C|DOP ziNt6KSAhke-wGX=)B_3R{5F2DB^|4Nn-;ATTFh?^ja0*4&2A<`duM?9aD*~15#e-@ z!}KrxV@OJ7MwROoPgl(WEA6%$eO`Sl0yx>3TNdygkm}A|V7nja^TRUb!`Bl6*5$3q zFq(#N0?ae+VCtB}OO|%Pbk=uY&V~zXz$zkLc_d~r_x#zR?6U8FA9G+N*DLg(@hCW> z$SxjB%om@klSfTVK%)5;>k5y+uiH*1nucq3_ajF+x|U&bRiWD5N>;*8DH1&$@^eT0 z7ip&bubPB9Gf#tukeyzk4x=o7IsMjx>`uA5aGB&6uIZw|%6gZ;0U?o&tKNSbr0AldUkNg`cNpuK(M6`Oe zDSeBJNe0h(;$^gb)f#o?FDA5Vo(;B31Rs!qgKp90L4R|U$A12!^S({!MA*Pza|*e> z*x=U!yoQKb=_FMugEL1%<>6lJO5>NafVr&c$jfjanu9wOUTjo9hW*-QMJd}45>wSU zj!v&EHG~$fJ3b(u#9yv0tT5Y6mfQYi62TULT4Z?1t=*C2-Pwef#B$-mztjj{IWjluk*sVc!8R5w%s@}Cb8{^b&J}h|eI& z>uttoOhNkkZ60;=)Ib%^kn)BuN}e*Xuy^&sz*e%4Z?$5;!V$XbHaEhT56_A2Robv1wM$h zb-a|+-UoRA_Vx(9XfbbS&Q_pd1L;lDC|yDX?&DIp#l;z2FH;&X=8Qy55zEJ~U2PVf z12IngLzFvBm({E3Ek|pnszoa6z+C1Sh)sS2Ma8$C`l3HZlFNBxxIaYM#kE6I$>f1g zL{&J19pna?UbkZl5WI;O-P0|t0gx&bk6Q5Q8UfvAt7M~v6Lf(EylKNjD1>MWV5s;! z&R309N^tvQMGg9Td16!;nwj_yVQse;LM>@=RZgz#8BE1Yy-v8R6#KJcg1rPlPMQ8< zZyWuwFF=2ZZV~3F0SRf}hDXh+A18iWTtjgeagzY?=S(~UZW^E0 zM$}|K`MPDj6|9+g-V)5l2pW`Zo_;PG;!-^&Ed@n+DwS=L82%X+r10;7&1~~`OlS2| zeV_@MD;gTX@^dNkWJss#|3{m);3@C=dLuuw<(xFUI#-oN`#fNIp&$X(RPw!as48G( zfnS5@9&Kl$9sNXs5fm7h8ja%~^DN5v1=x3KR=@xSK?5#yK+a9Pg|MD zae>S1L5wo1hLx;A_`FV|5#q48;=kb8u^8%HZLD3u>f=#xiDF7aY(P3+m;ER)aZ7Q+ z0hQ*3UGKiGdIgaZiD|!AGKsuw2V>Mh16*uW1xr}ky*jq5kmE!QOlg({UPU_h6Tu+` z`D-#6x{E$3R129d`14gD!QaDM1=iI^7O;ucNt*zG)Ve1OSj;n7BKwr6R6 z9PXyYQ$uXFx@L?(K@&RlV7EcYWWF=nbj%$aVTI~yZy0@~M#?{BiQDCRgVvsQ=TE}pY$1s zMPD)HtnnYuA1$YH1p$1G9{x!JzKKA$_P?^bzpBC_sst>>Vv!MF=HQ0rhDVK94wV@t zRoktQ4`xDTD^&}ZOqXFGf1kmWk_LTX77h5~yYlM6ZzFkO-t;v7DW?S=O5N$`nD``iIC z+H=bFbO2BOl1D4FprWvD`8B4KxMJm3tE2cGsjzFRnluf=9?3(N`{tgg)DPra$hEEp zC}k6XZpevxrE1MkT}I`m4-Ir(mJpYOrw46V$S5KtHNO zD=J!ELZG241`5q0_KMVJ->3^41*8Hf8VVyr}rSv@%&RQnQ&US{Ns0O*tID(-k# z=>Rg1L#^L&P~6zh{vCF8c~FoH=L7_!?Hxtcw{qLH;+0Bmrs^ME>kmK5@bNPYspKjFV|V>o`s38qF*n`#YHvrSsDq*T&h<#h@O5s+B`;(GO>?gL7? ziKSRzl~*mg5Af(|e0k15o^(@{>y5y@#^mx*(Pdw)E_eK+-}Y9{-6`C?PXkPT`5YAz zmZ!c#J@av6)1{Vo?og6>%pYoRd)5$$v&=1z`CE2SlNm!$nQ@sZLIbz9z$z=~VviS> zIZP2ENG#Y{x=PZuDu&Q z&**=6md{nCKSd|^Kn?e(pV>)%?kxX$eX3bY4LmRSTm_VlI|>v-J*5skx0de*L0#w& zwsGv;<$cv`w#B@00jbvjcVlR`reCDR3=)&SP^PN(SWpCQlB7UGcC}Q$=p#b&gE6SB zZ=q^I%VuX@=St)gV1H=VyiRiR^Wns+H2~6qzN7#)&&cUiG88btd zFN8uh>T=GW8t&vr=w5bf6r{L^d0Z`nYk0N z=R4StNDI;Zx*rk{E_+*9|6_HMmB11(iIIk8fNURrFrs03`ZGYHXX~&@J&0f zkH5vUj?HC7*~xuA;(6#Bhr;I8T!%O9Qq!B{1TkByKf?WQB`@-zW%@MD%?;VuJH}EkVMN|XU9XZENRn|7^ zv;#y2=l_eaYKVY&Of4k_=nnfWT*#~Q-e2<+t&FH0JLuIiQKwi~?>l`fD-n#OD(M5X z(&ILmJ&K6-)T2QCxD~5LdC*tQ)fIhUnfL1?+lVI5=-TCYTA7@3g3%72b6X7*N zxUcbGetEhwll#$9_wVl0qy9y#;CBYy{IYgLsuK*HFTc@dmqmnzTHYsse6LW^Asmht zVS+*0;Yv$1A&7&6i z@x9<+y@)ezLyd0zcx9-51lyK)TT}=&S1tuLWd1|ZlbnGt7FRfpJL}K`=I1(VIq`3& zQ2)5*O9zID@`(C@SS0TS#~<}26)J~j6tzDm!LS>*Ymx5c`FU9I&(BWA$QCo0y1||h z+@eNKULgcD4wmH5JUd)De+f-Rjjbz(n&ZWzY-&qraSkYSYRMtAiCy`G_>>wFWXSBXC3jpO|z9#*q; zhH$+!AufOwm>;Gwog?b|w_-X}@?P`tMmOg2q)eD=WbwOivnDwDwLkVNyU$pEs09ap z&0}f>g}9THrr3HtRzvs1M|l!TFA7^X%ys@)p38kDFT+;meBvZZ-;5N|ROGKKLK9ZZ zmyp22eSKygkY41N#W-mn=x%Z4T|-PiSKhJ#Csn=nRr3&mLeg+Kodp%O2320PtFU$~ zaCpVd_M(@UU2|YyEuKo?T)T*cRwbLLNSZ-}=#=;hXT%4}^mWo1!`P2FZKdmk>vw|7k($|iCT6>YcJ!stJk zuTV<@SsQ6R-IamTZX=>bEzUsELRAD!^Z3OS;zD@tX3Y50z5fP_+1^U)a%(25{D@TV|La3XW;+qq7ST&G-%{13d{GPP< z7w z_uP_iYTUeq;l%CRr)x|H$K7#Px1P2np*TMQbc3F3-d_QS!xYueJNwnksaXjr(42v} z{Du^5mU!h4gbXeO2kxLLM3uFs9$r5@IY{#Vfd>EBvI&y=fP#twk+{= zstZIzVw&0QFpyqcyF~6Epryf-FN5H95aSH5lu_>!F_$YDK;W<zBoS0#tQ>&t?C?vn4vIcTq)fI zs!q2<+vYA;Vizj$A(R#mq3UsCr9t761pKoQ0Q)6c%BYxYzlc~t8gg!)Jo>Xw21#MG zeP~WF>n!=z!Q2|LflI?Y+o(K(jF19dh|c1cSO*R(2>x zLX}g{QMQOw2|R7jTEQwXtlf0k2XaW0Kt$}_DiJ(XWHt-8%AhPLp&8QFs^fp#n^f^@ zB}MeGHrva?E`qzuR@JCIY?6C}<(#Dq#FkxiQNz}*_zK!*J^$qltyr&*|9~7j6w5KT zPCi`fHM!S_n{!7h#e}tqKcleMM_+E)-)XozXZQSyB2B7@T^stsUx4E%JOPpuX2SoL z9>k<*;(ceSOlDIg{5O1#j>*!g?6w`L5MZq0|EsE&MvO2eE+wUC>C>TyS`_WIlo~Ph z>uqXagbqm3=~%PpWIdTffZ6!$L8E_grY&r(peb{3%7;H0C?=ccLW=Wk%@&zfuCiq--c0^DFmF=4!1d ze8i*mofDeaw0Fb7@BE>S@E1GkXxp1=t9vxcL-7mm2-&4_QW;=L4+Vf$fZ!+XHCJ-r zvVkioMBH7B&ug3e=E*Lyk-pZfDM=m>h%Hp+1gy>cWSDSe1ax=5QOHP=x@Ccgqa0IT z+U%SArCH^JkKB8&!u~llXCGv+BZKKIt61A3Qe?Xod?I6p079*mNg@+LI6M4Jq*0hw zi7d?;tk|8aP!-ZhKS4lVPgJ=AEz96E&dEl$(>r?x>%h6;hTJ>Fd|*!f7mK3R(3f`r zPym8f$?Rx%_FPb~ixUiOeZH&3*72GX_Im)0Xt!S5`%aG?tY` z@e6-kl58G5`DuZF=DekZk6@XtW@P*SOZQLSowb%Z!oAaOVN^@GD{D>YORoquef<(a ze9MbA?;z(zj3WNMO9+qH^iJlZX5!a8v1m5&z=>;fs(=DW<+zzN`n{T6T@#lq{?-xL zh2gV54MKZ8-B&+abw(sG(@~Q^?4+Aa7GC#rC14zQDV^xY=lL7+jBPJvc5Z|%IXlCI zH`_CE|3ml_nX9eql{1DKsZVu+>1CIrtNJQpx3|X!>2DUCYYx8;Sur`fz&=TCBE$3D zdxr8sV6!dJ&$P6Ts;_!t3zf3o^$lEbt}Cl0q!(t(LVDEN^^*%3)Jpz-Q74K3cg~u| z@^@XzZ59$hxGB(s{u&(DDjIUwpgsxB&Sj%!8j$o2Ecw@LDpTOA)kjGq@%^(j?A`H&L zht38vw(=pqAVL^5wR^E6~!5S%0HZ;m|p)PEZjCBlA z2xIOxP!gS9wUF?z0hyvCLbb+~n%=bW!jnJgeShZ_47zfkU~0`bT=vk^G zO?3Q3wLbCn^udc3ct&zA(Z`_VZ!eox<8Z036x~VC3Y~Jg7W#$z3Q~3QKh4y5OMX0p zS^aaYbUdIqxJNl`eF}O?%{qzcUNxA7-$b{hX0%mL^8dX)EYy~Q&=@oEfC3R@BcPWL z)>E!7A(gHldTFhO)s8tVI_9@2KxnCSJa^nCa~3&oh85E*zrP#hMz7AyL9DuKuho>d z0mQjql>Eu7R0=qH<9bpZv>a0AA|RtSn`L(4&N@4XD~+#dFY7y})Yj5yfecdZ>rY-} zQ`~l^sSV|o0|_`iuK^QpH+5)YhD!4DCX>L)96t$?r2yxH97P<7&2sS_tSm%R4r>PL z(??)0qMXlk@tZzbDmX?8#^8i^PyWCdhGS(sbr(-=?q1M{bl}Ye0~_NkxSlno(-luX z=v+naDy`Z72p7O#B`Y;3y<&R+>)K_cT{XndIDC#4(m;a*iR%$YQ2{I&x5#L4NoC^w ztl%f=!6Ct^Hopk4$KmKOErfk zH{2e@JXlM-E8(fRTuOTB-)+#Bv2hDmn4~Z7cihjCKy<+;9_DI;P)#JDdsqY?)V|z} zE>x}}WgmnO{chnACzxh6^t^*XaE$KlnvY!yznR|@+6~9EomHhB3ziUjMJBj3`a^wu zDYzEn77b2c3-L6`a7mg@P$vv8t>TQWajxDQX0W&`TG_^&p9FF4r40jra{l=S}=r3Z6w@WDyP_rBXJGgBXe(G_1+?|IcWZeg-88D zF5I6Sq~#5_eYQ1xLkI37FKPql@D!mBv`ZvDcXwlRXJWg zftY|6i+o5&B(Uo2ZHm5#qI}^MhS#Fpl;p_{lX;bJVTym^IG$mWCDTJ{DbW}3O5Uw< zYVO=)U>K_jlTX3W_?}}(MDkE2${Li zvTdsvxlJ5#J>0sfC7CR_qiA)c2M-}z09kn&8!>_F=xuwyh@@;_JRq(Q4QQICF8)%K zg~x`4q~m2|Ot|D3KB@uds{l~&ix~yFFA(cnP_463_}_rwDG{&pK7(o6<$p4xm4ahL zq0QK4lq)^pp8dM|P26Os2?4r@VRLG+%AiKi!1-a7uRE`z; z5B4Uy@in%spPuMu=#q{SXnr6AB|JuDmzHoN!pq*#bu5n|4Yw3<1kcM&*C`8o=iAnO zrhkO7fWQw;{`0e~Y?9 z1pD$wh7*@#{{MF`_$Zws#^2Q#e~RMVT3A$5izFMwJ6z@@r9j_K9~5zJ<7{?ti-ay? z6oGTNfXUdHkGt$W&V86C!Q+TEwKf8i%7!R0gQ?|I#A1alB6af>+>(Q&Qn*e{{N3!; ze4^dEt2eKmAFY^mQhD$l*xO z&tbzc#PLirM^t1Q3^9T*dInW5{`Z)nN9JS zKV<t4gecc9=GmV!vjJcPeMq$5yRQNd=$n7E%=)3*47EoYb z@c920PNtE3oFGadX^ksE)OmEaq0x)d_@QhfZl_Vx z*z^yvUoDvRBkT6i^@e;sn1xeu&)J+|&>}(SJlu3CE#8rQ{5QXCf^xDtG58ZBZAL=+ zgz63HvjtkRPncAHuF$?+8Ap2Ppf|U?{&7YHw6)18>Z!=o=%22_qkWI)Sc$llFs7s$ zz>Y0t4F2aMtZEwystLH~95#3&^_>z!{1?-xyZFTw1ibU(#>F3K-Nh{@J@Zqbr*k8y z@AWl>CcA23%*?lHyGl@rdlbXu)OpyA;7={10OHY(e{}_w<5NP8@}Py%ba2P>1X3xzPC(&Z%Ye;Yyk+b6^%KO<-E%VXw;idfJLu7 zo|-pR{s02*>U*$0hFTqw0Z-4cvYN{AY%EwtaV6E1P8_Jv_+zphW?S4v(ErRS5d}&h z3smAy-3d)&u8}viU!cZ6Vrnh!NnuP_Gm)X}%qooN{wxe&1>;RdxMn*jC&;9 zK8Xu}c*1Gif{W|_I^L0j@fBWDplNe$&W(y1My*1qYO3m?LhD>2Yl;n`L08B(@9sD6K)q&MJe^RHQMrz({&J~c5N{-o=6 zt34rH_f?q7hxWr38a*IVUVD=yAn#ef*C?egCNz}q7@IeDbMkg`L~l4L&GX9ZrV$)6 z$j-Vj-fur_eeGlGFSDbiOzLi*CfP`ncoK6$SWbgVO9Sinyfdcmtr#%4k84kz zT3STu7KRUTH~z1F@5F?t>C4NJ9uc+2AnTu8YUIyAkb4>>cA@uOz(SkuETV9e>_C=~ zsmVbT$o1t@=82CzMfeIy3gVumD6}}RhxuJzk$oI&;7zz`g*?tu_~5{Z`-d@!`iAd~ zj)K*m8Aw6}V5U3W_+1%;-@vnu7n*#^jYDkNwhjAZZPQYh{|Sm~j|j4*J*F!)pY*Ah4 ze1N@r+?m+e}XZT`=s_*w$}?*R$|_`6j>% zI|TTE6dIOZ=l75vKfhD97A@T>WX6FO4L59FCcdTpAH?ul7h=r| zrye@n5HDRWT6{`Ciuhs8%R;yEVrc}`dB`jZbinoMgW+m$_?wY!SZbcC@12yZIzpG2 z`+V}LJgpHqG*jH-A*!ypXvT*nK|gI!H>Q>@A!Rz8&`l0vyCBV7q3=QsS5A-(QP89E(rck%Y z%fObg)!`)Mq0$2D@A>-tnc4tZQgxp7ylk;dgp0?3W3X!4gA+l_CVXHo)SgA$dJH`n zAO_&;9ghMui9XtM3|C8y-mTgTp5Kf@p@(Pd;~@w7#}pU$s;75zE-0)`WQ)RU6dFPP zebT5*TJ4d%;(Cv9=b2QH-e_2-AizKaxAp@CPXw z9IJL2#5+*n-UjJ_%)8+B$`x8}*r4`hSO{@3hcZwxH{*FF94m$8&buQc7J1E!Be*tc zSZ{Th>h1(0JT}gyYP(2r2#Ls{>4KcUu0CzU4gVA)y)C8E0W$l^c)zANb7bQ{2mEWr zl2->e4f^C=s^-~w8$4}QSuoWe7w`FDg{@8N6;GMbM{F*d8IPsa4;C7;a=%(CK3E*K z61Iy!|4bD2MrmHB*1eWeHS}^lE}mx(W=nKLhF!%RAeMp2d!wQ=cb~{LNwu96s{-`a z96@9to~pYtcBXs`*|&x%=%=KYIaFqs95K}qcws@tzrH2}#pAL;-CKO+`v{)YS%g(C z$j6EXgS3T4@F`?PNT1SQnskrpO#l>YG(x~eSXQaiZQNfM6$rk$pmwJK|ANNxr|#5@ zCCUx+8XL?aw-C#cV|M+|U)O*9?Cpmi&h(xy%wYo|S^c-N7Gp%_3i4aVzP@!ieo{TZ zX<3DM>3$kPa4k}>VG9H3EqYs*(zvb3e(}g zl+@ym*H%(bsivVTpY|Lrk>~hxiTxdjT~t^qxQ#gUr_v5qGHe^WwLlr3!2u)!>qa`T zf-c=Fc^7ulG)QnHbk;0@_UCD&EYUSC$K}4@fv)488W?-zmaP`g5hEv#_sT|iA)elF z%QM4e`kA3WCRVblvrK0(ZB9PqZRu4=Vph?@Af;APt0P@$r|rze6LsUF-w8x+8-e6E zQ_@h=2@I23T|T2W%9FmWJ8u_aIXoz7)OIk}ZCgYU2jehJV&ZWy8o9!J{s?d=4!uEs zxWj3mj-oUBgND22c9bz^Ed&F{A`urW>0bBQ35Ufle6E(t&2`FwOrn>EGJM#M{n^Fv zgxLgcOy6;vsU(h;>~P#?b7g|yIPW9j&YK*@FfPIEqIkD4ubB6Tg#blu7L8vTa2==BMt%U61Y1xepHl2&$b_yLbcCV65KdGvDriVA^x7_(__f}@MT)`x$W^hQ2mF);q9ltiIHCPvD zljI*F^Tdh+*f56qMb)WH;d_n$o8uGt1G!tw*e33dhy`}rB}{!nM*jNVr=U#Am-I^Q zda*qPoBuF9&I+q4-MDVlgq8AJ6$CnWbhVH5p)0(NxoycEfGNsJh2OkIS%>IN($$+eY4lQ0mjd@OlO!czv7m}Iu}Sxj{+TP}t5 z0q6R;c}!|eE67((6vl7vF8^b1jB&%zat`An$ANyq@7F`F-ddbXd75e~h&=gjrVkrZ ziqjc{Z8YNbetF4LI{uAZ^0R6}LVLsaVmYyNFnLsV*9WX-5}H;7T-jL6=|5BSv361r z^x)jC{UO#0$a{Fm5;T6oR5ET0EsuqB(f&c5k_I>N@2dlWHL@D0yGy7f{dC#-ETn=B z1Kv+2>u^}!mv?lm&UuB3RTUNm-{i@?SkJYYGq&#J_2I7QhHp_VB-y zWF93L{8QPZAXB)z7G*{0_HdS^A16qBTzO<_pSA2pIH=kDD8v66VdH6*>{tV}X%rA) z#Oppt_*sN^9++Wc05Xtu{22;N8h5Qog2-EyK^W;O0o9}2r{w>L%+IB>BEjm~q0npT z3}zu?9o%ic=i^KvGnO|_`c3t>s;zo`NZgjI-)bjEi!FP(f8mAXkz#r7{3LutH~{+G zc`$mHCjw)Cu(h3b4{_-_zet$KI-*vt7!l{ncmMZ1eJ%cO9@=I7KOPYF=9p?(dAFX* zW&ygtW4_il)X#*W-x7C-*FI?M*I>(t7hn~7Aj#Q-2RS*=Qwq>J3SGq=6caS<-W9LV zkS;W()wQrbf}fu_KQ5~&GQM+=IQjVBiU)<0*_k=)7~$CZ{j3C09!;xe$om~gH%s+2 zk_lIYn8bOdY9+KbOgRKakbOl2x23>Uy=8j9X0FabXd|R_N5t1M*fKnX%=z9_0VLYL72YYDPD*~jl8-y z!8N0J8QT=mRnP_*4aZ5Ry2@kp)6|;9Zk+$*oE0NJh(wfX!d3LVm?hiJB!mH7dkf9< zWD_eYph73TeUyV58cqiT9V=5i(&P4&=>R=Lp4xjF^8L0yWfWmEGh1DTwGmmVVdd< zB(QDmh(@a=NP|;1gT^^XO=N9@_Ffm_WYmLHy zJ;0;G5jSf@5wr^G0Y0K|Z3W+}0i;Hley)umA^PO|gl>I2zWH_nXE{6m?55V7%+jfy zA^_|yELo?FJ?vYddJBepNiewZC9Kw*Y!8zLB4AEDSm)fR;+J3#;p*vYiIP+}npRuttta!+ z*J^)el_*?9r?6D`rU+G=Bt})>nW}ZSXy;g4n(8ro=1S2m7inUbD^VsKy3cAa#k{CR zQOeX8;P|G-Y{G+mUiFPDxlsw7|L}dwcfAM?@e$2ZCmIkYZJY##h}3xlfc0iuq~K}B zWnHZhLcuAPYH)W@A`>uE#j3HKnhp>rZpOE3&o7pS7%fE|&VVEz#;q6jiaqxL9@HNbY2m~OcKU$7~ zoq3=R6*G5`3n)s{!#kyi0X0)el$YQ{E<`oS7JB3+8wRZEL#f7*^G`!g4gKa5GeyN6 z3I=DK+=$INVy&}ZYPf@YC$=`K1SWC$kSZzkMjm7ca*a~Y_Jnfl%lk%lUZv<{m)-~` z9VX%`!m`751BMo0UT*k21!BvU#I>LQDaH4=0rK~i~kswh>`|ngD9Snw913;Jm1bZxwgw`99`)C z&gwaO(i6vL=;&uct0XsG5lh8$lj6}gQb67He&CU&n^(i8 zwdOmO$_@#t*eEIP>wE5m1tOCq#m>zB6J&J*it6r#gg?Mw1ZXo;8G+Rk*hV&yI73-d z6Q^+3XC&8VPZyI^MKi`-Aj?Lyg2vp#{UP!oUQQWW7dIGp$GzdMgdqvWvQneuNYBuR zdHaHvZT((IOe!m9*|p#}`n6nJQ(Ss6PFe3aH8a0JPHU+?=1Tv&jFEyeL=V?0IRruF z9iMRXU3J|TMxHl8ocZRqeLtN)FQf`l7dwaTFOXv-p{u8%B!V?t>CJjJP(vY4$uXmj zK{3zdr|CY@I8Xp;h2DG1uR@Sh(Xhk6`0%Lh7Nj;m6f+$cNrG@C9<@gDlsb8c3VO8I zFf_AdpseK!QAaCk^Wf`HxQw)P%N^xVn~4=YwJRop+GLTg7IQyb=ct%)CoR^sUp9ZX zym$>v~7FNxv+rXPS;oAtS+sWz`G66VmuO@!*l1Zb*59>zq{V z_e5hVpRgVU(V1S;hSJv}zvQ%nLYxt#brH!Fj0)@NI=Kb1qQhJ(^lYL1Ot^f+bKcMn z-Cf^GE~1He4K=n|9^V2D zTRzP_Vjy@G6Xm{^?e1t9zo$;_A6LDGrhLT`0C`LG-VklJ&mSt|V4|F-Zlho6Zg72B zZ}~-~GntdGrZCC(`dzvA_o@3Uy8lW(a>NN_?k;03sH;h@ zkjNAVf>Nj44*HWipTsd|%)2A5skV`>+F5~^3{#)U$8fkUsrS5uoWzZEVjQ9sZQujm znV915bUSE$h4HlE$Z?d%E^(SUevqlct^t&cK=RD8wPbz`2Iw3`M@;qX0_;~1(3Mus z_X@D_RtbN7=2W9|F&Kl%Ecpu~{$)2FgxFxQg9kxKU0_ezu9*Fo6J8gMW)+0>A^)pb z<7#v!k-5@!uRmf-FoeC*8C7)tx$NEZa^K`-Cl&qZvSB&yRN^w5`6O6K$X_zMBSS|( z#oyA_11tZCsA$7LW4WnKc;^wGpU0drmD(R}d3%*fu8vS0onL6VrW>rc|Nas%xXRfa z`UI`QQ+nj4L3%`V>xMkN>=z}@K3nzyGCY`JNKHU0)f9J5Ya-2Ns*nXhOG^ z3Nr37G4Z~qgf|{$&_9OX7`E5 zIXZ}wHAN{Tm0jA}>15`C0TCm;fQLOeph(MYfqWqzJY657yfC_Dl;QHnWP$tZ{8f?_ zsYN*~%c-#x)nZV`S-N7Tt=o+1joX7p>(BoLYmT_J(<9;0Ye&t>>b^dKngX53xIxgr zfIHsIrSf&*dC${>trFDeh5J|N(f5byA<4+#(9fbbx-AF@7~l+B@iN4rCw!~-y}{2} zq%n`(c2c1=J6?9rjjAca^Y{FO1GLdMN&t zr(X!OB>&-u3F}&gs6>NeIRxF<*uJxLo^YXL9AUETI3xxK9m_1b*ERt&ibH&bOLJRo z%B|@zriVF;E@a(UMP`&THnFX9SPo36TS0G5)xuBLY%H{^-CL>K8TQbNH(zJTW*_$C zfDqC#z%CwW{$f>4+I5klsBvLvDOMOc$ceohsi{LjpHi`Ue#OxqLTb?R57vRC>&m>4 z*$X`p)~*|{!0}(&+pJ;vhkn4 zVXMbF{bM#Syre*-Qy@~=8I~X467|{)GRrgWiBk(x6ke9yYHwwh6+E|J9S# zs(t(>I1>0FtfG)j+U^qY+X)}ual)smtef6lU4G}yR5jVJQA@vyQm~*8wp*~GKal%I zvX{zv65CqJYCt*d2qJ-YstQU4$_M*ZrFxm3s;*$=$?4HQJE4>t^a)7anfV<}7?phc zF0#$G!RL&?EVL|lBT~R*J;e+Oc)Nv~Q#`VaxKQa;hRvh~sbygFd1hqNEIFqIP2PrP z#*-t!R&s#0nU+OoTveJ5iPek5bPcye!`GfqX`$aPe|;4Q-++`G0&#DEPLUT!9gBxJ zXjAZrSQKb!fSL?h9!I>oBg;G~na0rEQM-A+#rCz7p57OVg2X`|={BpHz^kHbuCOxKX97uJ;h8RU6U5ABW_}$pUW&NbX1o2RCj4le`lJf6rTZ9B3M4zW{u#VsHrJL5=oo60L0(N}5H553Syuo- z)~ zqKoBc(-2F}_2hcJR)H|`N0XWuY0bu8SsNMbgcV^d@#kYItX4O~nE&z=8e&p}UD2=HgmI<2Wn2F5do;_;{C~I0mbLDZi-uOEm)D?IA0R`{1d6@H z4aBh~%HdW3(8W#zzm!fq+lw^c5k{8m)%=q;nQtcbaC6b9os+P*KsUMw zk*LA**X{det9^D*YY;R&b1FC=<$a(Kg>9g#<-^xH(8xIU>bj-3IXnO7HU=8>-mFH6 zqysBriXsI1t6R>-fYSm#=1q-hzt-qQOUD(Y{~jlCVpEiaR@Rk z#|K*g9=6ht3nVi_TcH+0BW2^; z9d5nrp~(cNgC{+bvb8rTF)$3cuy`+|f4`Z&wVY0&lkSsfEGg6tvTyF3(r3A=ufq4; zKl}kdcQHL(f|%kc4s$*guDXW5f!J?2c3No3(3Omg3F=hXmr)p?bz7;tY(n$acvQn- z(xy8c%=1Zfq*wnuwOL#`Oi6;`V*2EW*ci#k=Fj6ow|-MazeBeS4p`SlY7|^|Wv1s6 ziyd}$pNw9n6^AOI2RknxElS(zX2}^cXps(~T)q(V-Ir`5 zA@Nlm7r}B+kL?8(k6wmytTI3c(XX+tIVcRG*wu`i&D9=d8yo`Fldbmi8`I5k=S-udtCq07bp35e z0~}2!aHqqvkS19}$@5P4(=p0!ag)*j38QOC>H3QJd>a6tphl^jtQj`E{KrgdoxMbQ zoY_9PmHrb9^q(|)LS2%h_j#-G8zSy@gVM)LYw_s3wKO~nM4ox>f8FegH}qWL+ETEx z8C=QGBJi$4&8t_^c@+rjqqlcI*O%D}`Z!uiL}7g}ba|aK{mOMf$yTqU(d1xxk8^HB ztk(Nv78tPgLjgDNpgqObz*=zT@#@AY^g+-o@`oYo34Owjs>-tasFr8-&=doYN96}h zWlHWijF$Z6k{X<4P*_Rzl|C#D1yjDstz(!JOfwAOS#n&v6>gbxn+z?fhAUu*J9rB@ zkUl5R`o(=B-p7Ep2j8|Ln66~$tf04!u0(G{+xV&Q_|QJgUbaq`#BF=HEOS%~okk5> zc?!onCvfRyq_wnhr|5C#nu)9jD_tHM=bHt}&W}(sHK=4`>`tD<}xMWXcy`h zB4yD@*id>?74*Ld+k4m&!s~uxTs!1S9xsWgI~>oBZo|+k;0R$7>7jJoO4$lp$l7l~ zJ-IT&8LRoGy$5vmX>v#Awkz%PT8~siaL>Iwk54R0|P}|q_gMo2JQMWk}3(zWS^*L=Gaf#>DJE(lWGS5 zt}Ro*g(XVQj0}mT>VT;9&?g!kgU)GKuh7CgqM(<(>S_4;SLN6F2FKqyGj_5~QUQgE z`8&#)eTM`;48XNBPgq|MCobr9?*Be`?D#|C#1~^;RMxDiLFZx3zU;)(CN*dKvz6)4 zE`f+1P#p%goo(AX*8YAZ2GTMQvKB#iR&(|ZrSOS>NSS* zI)Nnj%JWjllhYjNC{SRY@Lqj;K$Wa3vco3e&Yleds&eL+#tzg;3 zJ%cGnUh`Y_Yq7*Ji?mLB2FOeEUO8@Nm>HQDllV{~-?I=WGpr%&5{w7VD-IPh#N0fs ze>)fm+IYiwm48x}9EQ=x(LS9Xp(c9{^ab#=DhmK83leG;z^XC6Cl9G4o<@a{e}g{AIq~u5>vTSL5n{MgKO8~uEe*WyalP@h ztRIMYn5+tW=NIOoC{a3LiC;CodW20U!yE zfCDqF8FG}P9MEW_!?5+betelR0Q2uXvt7mnQpO(IC0GEIx33%Jjcbp`U>0%_qMNx= zh|zvJZ(kcsJC)M@Gr&Z29Z_5ow-oDavLNCSqeNBLJy(G27}|%CwarFEjGE ztYxniXl5Pkg_gv@IPf{d?|f=CCDl-mMmmjEsVagHhdhpP?85!@S-Y1@*@9bs|Q#Ypzc3q1EeeXeuZncb3TS#n5!jnIX zR4UGmN8SK4K+L~rla8}reyd)d-SooH^X#L7MqdS>X_q700R~e;ZHj0jsxwM>(CZ#Z zL>8LBH8O6G3dJ2i5Dfe<_-=%KaH0d;MtWzzc zi{8yF1o4MugmF~j38zXV`&Zp+duUy3<;*GDDhBjSeQs1~g|JlgGZ!>^&;nP~qJ=n@ zJhw#DTcPOrC1beT2=ap1sc7!AeNdUUQ_I$SoAs7bo8$azvIY+*stkqUAR8&)8Em|! zW@2a4(T>n59dbq_ft{Bw@ek8ekW<5S9FiKMLt5m0!lJ~UUQ+Px0S8%znPT&~1f?)9|%9Y^jLyv94R4j^vH?J7YrFbhg`4uLf zSG?W+ndl2^JF|$NpoDy9kA{SmcWD}RC7S8Ur&*jKEJl8hz*~BPD-kvci<$=iRu_Ts zb=s!DuUPyZg%ks$s6~)`{<%VNd=wb#pz*FN+AXek9lj)cLjV+Vzn{1j0-jJ>hwc&4 z9{NzS- zs=vROXufQj=FJFB7*jhSjb3fTL#Q?4le?}_)Jc_#S@ln3MglKGFeglw;J4_U;brqd!o z_-p!dGL2z65K3F|(1OiF*=>~F=OVyW=uIUOn+Y`-$Edl>Qq$W8(^WW_Q@+~Q!AVqo zD+O=!H9iFW4QpRQMlP3%mlc$di6Vxa?@ZdQR)0$diuUS5Mh0ILEAj_;Gp1iTw3e+W z6xraFvEdfrN1NJLxWKxM_w^7I-z><&vW$m2ypj^wmc$yCJ>6 zL{yHb?>aTF3FSeuGcV*J1>G7g3>DoO$UO2p^=uEny4?Mt7_oNWGG+kE6UV=hq7x{JPLIb?8vf)-YR>x(WAX(&t=( zX6=KPMQN$k4UyDCVB0N7^#|wqsNWSyhS1{>E6t;ZG(2@1=J+g^Tt}Pes@0wsRrq?# zIOapn`kQ_?3RWoF<~NHsH~?!zw1$sM;yX(v?^aWmAdv@4;dz%)KOu+@$7-k`Oalzq zG==G0pIUgbKJ044&Iy0>_{b?qAL5M8mG|uXg$r(`;}XDz<+B64D3Ua@R<+p6LXY|D zqEnyH==eo%&5wDmE%50-z2lmJEN+MwO&(p0TmG@F#E>TY+~@~)4-j29y~OjhXc#2`1Xm#Oxr`^K&)&c|}=eDd)H&75rU%gMj*U7;}1dU&Mq>i@;E3REiDfU+|$w+2xx(URiO1FwI& zG3de2W!?A6jn7&gPWsHlV)6g;C^MosF)t(rnz`22;&#Z@%H zH2sG)N*G0s*r3PT@3!)z0pkfh%V=#N@Mp9W{K`)?$G=4uJFEkr2?WWlC1hWWNA}odPEg>xS6Hs+a}{ouJB=e?bZS=>F&!?IOzRm z%3^WI0;^UTz*=S$JKvT@NwV#kCG-hVn8TZ6cP^&Y7;N1~I`Hvt3NvpS1&Hs5+2%ncu zmMIUm_`CMagqyH#SbGyBd4*VGzdYO;hK(YWtoNRD{XZ37GO4`Njs_?vKeXk2C|8qp zZxDWOx`HerZY!VP{q>&Gf$}NcF`SAYA{k*JP_I%Puu2u98U+elzm;8?9H9hip@!$_ zm)~p>Mk$am0>cioKTSmmGvwgmERYg-yCaY4$OB1`XTYpn(*Q$l18G5@W6w{ z$m92fzbE{TDBywIr1vyt#6LG>9tn?(U2d)4(|L%{xP(REI_~(?+GUg+|FfFYw|Yo3 zshe>|+rBZIFQ~k3z`(8~e+V7haU=aXe8Zc1#===2`(F=*f%tQzmZhD_$S;rAaWl=sdaZ!HVB8O* zfOzA&?1H%>Xf5-CWUI3Bz~s)9O}Gg~V&EGG${K;^7@c(;?0GBwEq6*rGJ+#*19*=^ zA$;gJKbt)h|l~m3;F~YyTQRV((;!+)VEObFA=1f?o_ke<#u5CRNu65wr^roseFb z?!+E;I(F?Y@gn6}b`6{l9=6%LGE5felTod>18(EgATLsGP|+wkey5{o zb!dGl|2_v;4f*kj`e?>hL=>*qq0{8dK2gqJa=vN)IKle!kj7YqGji1&j9YCX$2q8B zw&&#nEzG7G3*&$;mlx)IO3>R}nnm_c}B@GxolcFd*L)(Z@ zX(jFsR+qlDy9~^FNr+#EUKWiYb4L1y%cpC1m@~G^G~ypbZ5C=df8!%ISbBJ}Wp?WD zNr9`+^%{-r%0rdYwr*0Sm+-CoIj&Z0bxPrO)ochB>#c>7zSxUh?`ElyA3bF`%2q6j z5^ln%`F}%(0BXNG%0!hFe+0gbyogbQ-z{`@vku4~Wp`Y@H5VBfQ%5isci_?ilYdm7 zKKv6RYk~)=hpv|+K6EYl?vP5c)tJdXezsXG6u&k+?~F5zAb>L5GPOX{AQ**QgM2ep z1Y#S~n{+Aza0uan-lcnPl4A?=BezLnS+=x?`VRBzG}O9S24 zpIXv{C$l>0rzw0Uje2m5<1z+MAbo2LFSBH9hdPTl35$ZiNv8PI|JBkdtj8X9-?4M? zgle14eeHWAZDp?*v_31~*kpy>0RcUEK$oW{)4oP=9$w|IXX#J#OT3!2t%*ZD^t9m}1Zb_6WD3TTkzm=|>2h4(aqpR%6Gt}t90hwJ^TMXG%#>ITSG|&MeOjamP;($%hYlbg)AO^n_Mh1{ zFJ;F@cKQk03S+Rw+y$F8yQyz_CSrLJ5$9o3Hkjsl>x)1x4HSuzz7d=HYG#iM6nFNK9VQ*ubNUg@gly5aFp zbiPlUOvgZrWi@};OJ#)|5n^Gl6orOgvdDoCVT#AP2V`-PIfT+`>#FHLrUigY_(5CW z5`20T(_!h_x;B^g*O&>O z9U1dmJ2D*ySdgyDOW_$4KPk}nZ!}eu(NzM!*jllG9rQHH;P8GXVUWRM@kZg!N4`gZ zW(mK>#m%RPWXKp6W0%cyvDk;$vE|xl;1q|u`n{!LxGHvL+iGC{?IiNSlgMj0Xq-8l z5ifrDU&%bElsO318JjB==PiJyu|toi3>HFbf>IpS*E-|eB8N`_mIM9ox{zJd>?ggb zY^R9J7x%s*A#Ch1zulQ=O@%7#2hRJ98Oz5!@8AHtxY=+(oo5n-I_F%)(tOsc!+kNF z#b}1$YYQ7O3&a6_)2U&{-Sja>hNnuwQS>v|S3XRjE2gxEh);Z*87X`oou|Ul{Yu3B zBS^5UA;BpZ`%Q&4;*C=9?_!v9XyeoaQ-NPzwC)t|rAv18?;DXL8gRSqW@*=|fFW$a zGEyiQM&77C5hh~-Lb5kVg9!QCT9K0$L1;r8IVbY!{y@Wm z`SiV2PVq|$Q=NH>u%UCO;UJkFRi#mR<<}8DNucWsL+^-ZV>lBy!l0h}bAID}9_-=B zFd+EN!eWjEn%COVk@7*3i3O(v-7SEtz<6_;N6VeH6Tg!0(N=N_DL zauxtEHMujhHXrlDroc@Pv}UgJx7miSk|U;6UP7yykJfCtzVCU;=Nl2*UVK?I^iu8D zBhi#i)c~o))Q2;wuQXZB(!Prw%k9?C$P3eF38h#c&J zt%7|EUyzB##RC&ijZ$RI&u#Uc3eFihfoHR~=h1Y-wlkaFBUYWozkF{GWW0bm4~#E0cLggeWZ=1@jI`72=<#bh4*>IVw`pdBNhSRyU40}a zRA{Hr1(?l~T7+s#RggW7fo5Eb6SStjCwZwmY?B(UvtN0{gWCe9j9&On=lFnj;ZI9n zo2JvZ>UtyEv_)B}V!?}*zH!>S$-g#c-1YajaFK~yv12N9dz*anLNRsZpm!oulx@71 zS(c|eY-AbmHoAD-y?=ySvb!^}biem2O^R;}l%f91g=IGXO=#uPU- z3eC-}2SClmc0lAw2|Qb%u~3BrIeI*Df=d-g%*3cG5;i3lQ4SSO|6^MD-$e|oab z*Bb>4T{Ei9(uozz5-X4({S?1LAU3!Y{0_<%UE166Fy6CyJ0DPKr+%-SRi4Vw#MP4s_&g3Aa>m#E;z$CbTk9cqvsWpHdS<)bO8`zO0qNIWjOCwO<>&g==4avOp;%Mz(oE$XQNQAMYZ z>buE_?e2O@21^yAr(w~SWCYKBjGq86Ej8Bo6*IA_+T4M4XMg%}(@N5!sV*9@UnE?y z3mfO$;JK)VCfgn*lQZ$1dg$EGj|Fok!!e+1*ixoss^Jtrr962$ z-w(4bb7x2S51vlMCO8|>N11fQSu$6VJYM*Q+*`3w=npo@i9fq&T66Zw>t>3c4_Vuy zW=Q7D;045cx}RM?PKg|1dZIlfiELK*^SOtF1DmEZZ!kuO=AMHwlnKqG2v9OGaZ7-s*2}YQP zgqqj-*pUxQi2_YSU!&LC80g6MK?W**)J+unK}f!6KWa`EGUzv52` zZ5`s3720^Ih)QyS#G3;8`tc)_K$X=j0O$ z)3z3l-Tr>2>8E+Pj;`=DXx2>i9#$#jU@wo+Z`A4Fy5bT=ulJ7=rrm5CFtQYcRqSt| zuqTPfp#RCszSgFbdI8SVaK#>Lf*03~b+PjB(+j#KmZDJAW_UPF37Xm)x5f}#dJUWy zW&tZf*5>7JNa&Go3eIst;(b9ka#Q4()MVtoHQh26WI&qC;LXFZKfl<2DA;NiFj?r6D}px^ zDDnk5>>q<>+b^Vy$4hW$Vm&V^E=bYm@Ll_4Q-NgDR%IF)D7PLR92kT451YAorsLxH z^bK46_M&Y_L~SFa^yhcyr{U8z2!bttp;A|!S+h}t8N@gsw8ar)yH)bJK|RHu%H_=> zLz!jJ%nxGXLh!H}SRKFDRW9%bV488=U6iLsyHl<6cis+~XiZK{m>T<5WwhV5={X!% z_9wfo$<&rtNo>TkhDJf)(B0AuD*i9nh%VP10(7t$#e4)y*aNG{RH}yIpIb+KfiU7XIj%y!EUbslX*JJBN z2rsSVPfZ%O1m~%b_qGqd1?Xip#8}OO?O?PA&81UVkd~vDRM&l24+_wU;P5&&AqmGR zmi90_#MsY+dj77?Wb_emrx0D7);rfVm@@6r3z@;b=ti$kHe2vqsG3Sj!ahliLLkuu zm!B~SV~c=OoL838NmmKsq%zf%vZw7~kg9L&Q8w2fu|4=wP<1L6%N<4TX8}vJt;hxx z^&VNa44&eCHK#*}%_AH#aUW9uHViGbf2Su-6weWCCICI0>oi~H#t0y>4II{>-PG88 z5)T+z+)2`hn-YUK!!gF3rFA^0G|xDP%9NMfn7Dr1ah-L}=EC*OrzmF4--YC&ZQ15B znRUX-!05=(x6omzG)}0m3`>dd<|4`uqi|jW)%|E!W@d)4(Cp#W&w4=#RuiZaW^;~U zY@R=(`iO$rL>)OFMp&#%!kf)FTHeEE%x+BvZa040p=m0BzOf3XDC1&X4;s^sN8iB! z!-Dom6#{bkv|`3K>!rV$AG<2y>h4Ybd$J;cX*3&_r{b(lM@b#J)?DT3lyD;W-C7Y{ z1Kt_@_X}Gb>|c+&N9LpfGF7__1Pl=?aMLoxZ%->?qavMiUbQy4i{)LqEtUzFGb-Cj zKf3sU3Q!1BTzxBrG^Cc%C32Rtd#3cQ87EH$8aC!kx`8b~?*-7S zb6u~0VugNg*adAu6~5j#zs{>BzZ=?o6Tn6Ikd$rv7ww=AJeJ)BF*)Y_V0rl6($WPX zVW1T6qyxwj4Sgq?!tJJ;Nx+7LTNtfprfkLf*^Rp$ECsuBPytT)2JHEiCy9uP`=F4G zURZ!t5+jJz$AM&`T%kVyx+4M6`kk+;TqoHP=ZgiBsryB3h5AU8X5 z_r3)4THIk^Fd}y@M~IX|nFvXwUbz%MO7OKZL7|q{@?O9iqlVi`>xCa9;2{Zq zCe!z=4?pTqlF>!QhpnS ze*BcX5z8(WvV`oA1gwh=p0o7~Kw;7Fg*W77Mlb76WkPgTZ~1*29ttDUx*fU44o~+o zKLkOoA8?3x4ppkRCLZT8%1gC8>Y(6zN4WJPQ^d^;0tXiaGpAT=R3nQ|P#ZeuS zF7J%UU)poes}T(B^M;0ab)wJ;F<;K)?zpcHnFD{}4Ut|r$2jE6vr!0=yTJ1>8~rcT z@RZOsIl0UYg)+bGAahzHvzKxbT}Pq3#wXV&JAnvdtNKS%Qjywnt>ly!&(pJd96+fm zr%ze$PZ@>RWm?AnHj(;?N#_|h`VeOEqZ@V%DhUaz-8;5NI?L)mMK4l{H7p{@Lp}Mo zV2l$b_HF=Le_S1_Nf!xNA)PsdSR#)~Z+I8+VO*5><9sXn+u<@jv1FR?Gj7HbvIzNXD3 z+q-M6$xAZcE@hGGQmDucPzq{nyFkVx82*6^>l3V%Pi=NlT=pLmU@%Jrbjw#4cr~@p zk1sIJMQ&0{GPp0t=T`G&YkyiTrRV$DKebj;c(KpI`T$s!G{NA|Z(p$_5PdYBAXI(^ zHt~DaA%bED`T?ldGEL5dxByMIi?O|!tulLJf{uXD=xh3)1D{%;4f@V-0b2n@z1RstI9wj0Om zIMy&gccpB=J9^^?)$)Yq-Pd^>y}hbj5@Cr7`%JbnLHCa%uU)=v0dkuu6;bUwoPt9Z zt1ug?4RLeK{vl$INw|h`{KRuX)@D$T72`!4Vj=H)yLny6=MuK(magR=1-oRn1*6%s zP(xWcYgcmeEN46n`DD#a zhTrdlr3gs(U)bp%~TR@VF3>8kBwxpeNzl=E^si5r-ss@8ejFtV7Qe~Fl~PD0-^=gWAS z{zySgf2LXSg!PsG^eXY@Il?`o-&j}tE2^e&VOJLxCMxwGP&heyxk4;xD~~b+(lcq0 zw25TZ8wga1F4hPNCi=1m^M~k(ZxMz0xm;^;}rztlTjEjCcyXh*y zw<%&YN&HT3hH3;Brh;8y?*&xHVs}C{m)T0XVA{oW-5+@!Va}%f{R8kJireAG7O#_3 z%p2HQ8oz;p3Rff|iUNbf-t=w&*%4l!HWj}$aD%M~E1X=NEIk6@;DNXE`PEo9=*(nV z2)tcPW&R4@N%)LN|5IYK`;cbmdwRYCu<;wD>ZD_QDq${>sqf|6!e8srird$0RfpxC4JeN*3q)Jd%5Nj^XJ*@~3QyLhkqJS5Il`r%cE%IH1gKhjjn_;D5x|^a!^80tnI^^Mwk53*9yazUR3gPN36Q z**u4n(?4cheFCR?h_LKX0m&X3<@y*Cl04qksgYj5WAZDu=5a_&+w(<*Bq_&!gVdI^ zI5~@F62a$hsD5GJZ}L+2g@A%kcNf{=Q76`EtKuVr-dXg&ud6edUcL2o{mFkqH6MnD z`pQj&z;kT}0xx}4_Wy$=Rhd+8{)65pf3AxF4+^Ar&RY3&&*+ZF&xegsb@nkEG-9|F zT>DZekc(6#iox0K?W1gSq_5|{)bw3UCy49%at87{plE(EDn441oR8h{`-d~PV6el9 z%SU#HHut4E=`?Xw1D(jl_sbD5U2Hy1gRW@UMHlqvZPm!M}!6U}YybYPiVs#ZH z!t;)5BYZcHSQZ~>r3ZiY7uK-gUcP;o6I*LaJ67S<#z1~LOY-a-I8}6R1v^I@;Wd}R znqiQ^tw`PdidssROl(;4*|Z*fzdp;e(sblF+u^{SOOzA@OgUh3;fk%+&{ySl?!s3~ zHL}8SMvpc8jZit9p!ps%M$;jE>%Hh#7>F1Yo^7_dMi!V~?9B|VZGJOoUpL)Xj34-? zNz`CXA2Cc|Z3n0+l&x@`hU(iL>G8htojrOiI}Jk*WY*4Oq3uRqI})VSsp{NvYN?^; zurRiwb2@&y%hM!TA=+E_!>F`FHN{xBvXh3-{W56M!)nMhEIw=6)y=q2NKbv>5h@x; z0yiOq9K&O}mLN`lpPPQqV$pNjE-WXgi5hQkW}C+4P>7L0CAS`Znm(p%n&m3_5qV zfX@mvFB47%)(8;%9jU4S>;0E_H4KFeITCa~{Ry1dVH8l~2##aJq^4c(bA>QREV~`l zX?$0!7sBIHVirNUHa*7Wo$pf?R4say!VlXry`3rND-(90wuJ58iVlKtT}pshj)tcW zqf^kJl!%zf@|)LE1hlJ)ueljtH@{`qrxMeXz^=TP?pY41 zfg4BtZ%+(w;;Ok0_V5?lS*t829;_Hm34`;9XADsgBx_Rh11Xrz-sErX3(e%7?FOJth?e7o;jNr%ih zIw4n?0gE+`I%#LU6?aS=E18LBXDfvwhp5TXNun$|UBUkTALo0Je7~2NJZ*QBqD^#_ z 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