From 059be96536fcc014836078f76b39a6b78470aa84 Mon Sep 17 00:00:00 2001 From: chermack <505360893@qq.com> Date: Sun, 26 Jul 2026 00:09:57 +0800 Subject: [PATCH] init --- .idea/.gitignore | 3 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + trojan-master.zip | Bin 0 -> 158177 bytes .../.github/workflows/docker-publish.yml | 55 + trojan-master/.gitignore | 2 + trojan-master/LICENSE | 674 ++ trojan-master/README.md | 101 + trojan-master/asset/1.png | Bin 0 -> 63317 bytes trojan-master/asset/2.png | Bin 0 -> 31454 bytes trojan-master/asset/Dockerfile | 23 + trojan-master/asset/asset.go | 12 + trojan-master/asset/clash-rules.yaml | 117 + trojan-master/asset/client.json | 33 + trojan-master/asset/jetbrains.svg | 66 + trojan-master/asset/trojan-install.sh | 200 + trojan-master/asset/trojan-web.service | 15 + trojan-master/build.sh | 62 + trojan-master/cmd/add.go | 19 + trojan-master/cmd/clean.go | 23 + trojan-master/cmd/completion.go | 30 + trojan-master/cmd/del.go | 19 + trojan-master/cmd/export.go | 27 + trojan-master/cmd/import.go | 27 + trojan-master/cmd/info.go | 20 + trojan-master/cmd/log.go | 23 + trojan-master/cmd/port.go | 20 + trojan-master/cmd/restart.go | 19 + trojan-master/cmd/root.go | 65 + trojan-master/cmd/start.go | 19 + trojan-master/cmd/status.go | 20 + trojan-master/cmd/stop.go | 19 + trojan-master/cmd/tls.go | 19 + trojan-master/cmd/update.go | 25 + trojan-master/cmd/updateWeb.go | 19 + trojan-master/cmd/upgrade.go | 35 + trojan-master/cmd/version.go | 30 + trojan-master/cmd/web.go | 47 + trojan-master/core/base.go | 33 + trojan-master/core/client.go | 50 + trojan-master/core/leveldb.go | 41 + trojan-master/core/mysql.go | 412 + trojan-master/core/server.go | 122 + trojan-master/core/tools.go | 113 + trojan-master/go.mod | 56 + trojan-master/go.sum | 271 + trojan-master/install.sh | 210 + trojan-master/main.go | 7 + trojan-master/trojan/client.go | 43 + trojan-master/trojan/info.go | 12 + trojan-master/trojan/install.go | 224 + trojan-master/trojan/trojan.go | 150 + trojan-master/trojan/user.go | 196 + trojan-master/trojan/web.go | 56 + trojan-master/util/bytefmt.go | 66 + trojan-master/util/command.go | 155 + trojan-master/util/linux.go | 121 + trojan-master/util/string.go | 168 + trojan-master/util/websocket.go | 146 + trojan-master/web/auth.go | 178 + trojan-master/web/controller/common.go | 166 + trojan-master/web/controller/data.go | 105 + trojan-master/web/controller/trojan.go | 200 + trojan-master/web/controller/user.go | 233 + trojan-master/web/web.go | 196 + trojan-web-master.zip | Bin 0 -> 258849 bytes trojan-web-master/.eslintrc.js | 15 + trojan-web-master/.gitignore | 23 + trojan-web-master/.prettierrc.json | 5 + trojan-web-master/README.md | 15 + trojan-web-master/index.html | 29 + trojan-web-master/jsconfig.json | 8 + trojan-web-master/package-lock.json | 9055 +++++++++++++++++ trojan-web-master/package.json | 33 + trojan-web-master/src/App.vue | 3 + trojan-web-master/src/api/common.js | 25 + trojan-web-master/src/api/data.js | 17 + trojan-web-master/src/api/permission.js | 22 + trojan-web-master/src/api/trojan.js | 33 + trojan-web-master/src/api/user.js | 25 + .../src/assets/404_images/404.png | Bin 0 -> 98071 bytes .../src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes trojan-web-master/src/assets/logo.png | Bin 0 -> 6849 bytes .../src/components/Breadcrumb/index.vue | 79 + .../src/components/Hamburger/index.vue | 44 + .../src/components/SvgIcon/index.vue | 45 + trojan-web-master/src/icons/index.js | 4 + trojan-web-master/src/icons/svg/dashboard.svg | 1 + .../src/icons/svg/documentation.svg | 1 + trojan-web-master/src/icons/svg/eye-open.svg | 1 + trojan-web-master/src/icons/svg/eye.svg | 1 + trojan-web-master/src/icons/svg/password.svg | 1 + trojan-web-master/src/icons/svg/user.svg | 1 + trojan-web-master/src/lang/element/en.js | 122 + trojan-web-master/src/lang/element/zh-cn.js | 122 + trojan-web-master/src/lang/en.js | 127 + trojan-web-master/src/lang/index.js | 42 + trojan-web-master/src/lang/zh.js | 147 + trojan-web-master/src/main.js | 42 + trojan-web-master/src/router/index.js | 95 + trojan-web-master/src/store/actions.js | 19 + trojan-web-master/src/store/getters.js | 3 + trojan-web-master/src/store/index.js | 15 + trojan-web-master/src/store/modules.js | 5 + trojan-web-master/src/store/modules/app.js | 56 + trojan-web-master/src/store/mutations.js | 36 + trojan-web-master/src/store/state.js | 16 + trojan-web-master/src/styles/element-ui.scss | 62 + trojan-web-master/src/styles/index.scss | 66 + trojan-web-master/src/styles/mixin.scss | 28 + trojan-web-master/src/styles/normalize.scss | 171 + trojan-web-master/src/styles/sidebar.scss | 209 + trojan-web-master/src/styles/transition.scss | 48 + trojan-web-master/src/styles/variables.scss | 25 + trojan-web-master/src/utils/common.js | 34 + trojan-web-master/src/utils/request.js | 84 + .../src/views/dashboard/index.vue | 304 + trojan-web-master/src/views/errorPage/404.vue | 233 + .../src/views/layout/components/AppMain.vue | 30 + .../src/views/layout/components/Navbar.vue | 416 + .../views/layout/components/Sidebar/Link.vue | 42 + .../layout/components/Sidebar/SidebarItem.vue | 86 + .../views/layout/components/Sidebar/index.vue | 47 + .../src/views/layout/components/index.js | 3 + trojan-web-master/src/views/layout/index.vue | 107 + .../src/views/layout/mixin/ResizeHandler.js | 45 + trojan-web-master/src/views/login/login.vue | 218 + .../src/views/login/register.vue | 176 + trojan-web-master/src/views/trojan/index.vue | 356 + trojan-web-master/src/views/user/index.vue | 630 ++ trojan-web-master/vite.config.js | 88 + trojanZ.iml | 9 + 部署架构建议.md | 190 + 134 files changed, 19678 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 trojan-master.zip create mode 100644 trojan-master/.github/workflows/docker-publish.yml create mode 100644 trojan-master/.gitignore create mode 100644 trojan-master/LICENSE create mode 100644 trojan-master/README.md create mode 100644 trojan-master/asset/1.png create mode 100644 trojan-master/asset/2.png create mode 100644 trojan-master/asset/Dockerfile create mode 100644 trojan-master/asset/asset.go create mode 100644 trojan-master/asset/clash-rules.yaml create mode 100644 trojan-master/asset/client.json create mode 100644 trojan-master/asset/jetbrains.svg create mode 100644 trojan-master/asset/trojan-install.sh create mode 100644 trojan-master/asset/trojan-web.service create mode 100644 trojan-master/build.sh create mode 100644 trojan-master/cmd/add.go create mode 100644 trojan-master/cmd/clean.go create mode 100644 trojan-master/cmd/completion.go create mode 100644 trojan-master/cmd/del.go create mode 100644 trojan-master/cmd/export.go create mode 100644 trojan-master/cmd/import.go create mode 100644 trojan-master/cmd/info.go create mode 100644 trojan-master/cmd/log.go create mode 100644 trojan-master/cmd/port.go create mode 100644 trojan-master/cmd/restart.go create mode 100644 trojan-master/cmd/root.go create mode 100644 trojan-master/cmd/start.go create mode 100644 trojan-master/cmd/status.go create mode 100644 trojan-master/cmd/stop.go create mode 100644 trojan-master/cmd/tls.go create mode 100644 trojan-master/cmd/update.go create mode 100644 trojan-master/cmd/updateWeb.go create mode 100644 trojan-master/cmd/upgrade.go create mode 100644 trojan-master/cmd/version.go create mode 100644 trojan-master/cmd/web.go create mode 100644 trojan-master/core/base.go create mode 100644 trojan-master/core/client.go create mode 100644 trojan-master/core/leveldb.go create mode 100644 trojan-master/core/mysql.go create mode 100644 trojan-master/core/server.go create mode 100644 trojan-master/core/tools.go create mode 100644 trojan-master/go.mod create mode 100644 trojan-master/go.sum create mode 100644 trojan-master/install.sh create mode 100644 trojan-master/main.go create mode 100644 trojan-master/trojan/client.go create mode 100644 trojan-master/trojan/info.go create mode 100644 trojan-master/trojan/install.go create mode 100644 trojan-master/trojan/trojan.go create mode 100644 trojan-master/trojan/user.go create mode 100644 trojan-master/trojan/web.go create mode 100644 trojan-master/util/bytefmt.go create mode 100644 trojan-master/util/command.go create mode 100644 trojan-master/util/linux.go create mode 100644 trojan-master/util/string.go create mode 100644 trojan-master/util/websocket.go create mode 100644 trojan-master/web/auth.go create mode 100644 trojan-master/web/controller/common.go create mode 100644 trojan-master/web/controller/data.go create mode 100644 trojan-master/web/controller/trojan.go create mode 100644 trojan-master/web/controller/user.go create mode 100644 trojan-master/web/web.go create mode 100644 trojan-web-master.zip create mode 100644 trojan-web-master/.eslintrc.js create mode 100644 trojan-web-master/.gitignore create mode 100644 trojan-web-master/.prettierrc.json create mode 100644 trojan-web-master/README.md create mode 100644 trojan-web-master/index.html create mode 100644 trojan-web-master/jsconfig.json create mode 100644 trojan-web-master/package-lock.json create mode 100644 trojan-web-master/package.json create mode 100644 trojan-web-master/src/App.vue create mode 100644 trojan-web-master/src/api/common.js create mode 100644 trojan-web-master/src/api/data.js create mode 100644 trojan-web-master/src/api/permission.js create mode 100644 trojan-web-master/src/api/trojan.js create mode 100644 trojan-web-master/src/api/user.js create mode 100644 trojan-web-master/src/assets/404_images/404.png create mode 100644 trojan-web-master/src/assets/404_images/404_cloud.png create mode 100644 trojan-web-master/src/assets/logo.png create mode 100644 trojan-web-master/src/components/Breadcrumb/index.vue create mode 100644 trojan-web-master/src/components/Hamburger/index.vue create mode 100644 trojan-web-master/src/components/SvgIcon/index.vue create mode 100644 trojan-web-master/src/icons/index.js create mode 100644 trojan-web-master/src/icons/svg/dashboard.svg create mode 100644 trojan-web-master/src/icons/svg/documentation.svg create mode 100644 trojan-web-master/src/icons/svg/eye-open.svg create mode 100644 trojan-web-master/src/icons/svg/eye.svg create mode 100644 trojan-web-master/src/icons/svg/password.svg create mode 100644 trojan-web-master/src/icons/svg/user.svg create mode 100644 trojan-web-master/src/lang/element/en.js create mode 100644 trojan-web-master/src/lang/element/zh-cn.js create mode 100644 trojan-web-master/src/lang/en.js create mode 100644 trojan-web-master/src/lang/index.js create mode 100644 trojan-web-master/src/lang/zh.js create mode 100644 trojan-web-master/src/main.js create mode 100644 trojan-web-master/src/router/index.js create mode 100644 trojan-web-master/src/store/actions.js create mode 100644 trojan-web-master/src/store/getters.js create mode 100644 trojan-web-master/src/store/index.js create mode 100644 trojan-web-master/src/store/modules.js create mode 100644 trojan-web-master/src/store/modules/app.js create mode 100644 trojan-web-master/src/store/mutations.js create mode 100644 trojan-web-master/src/store/state.js create mode 100644 trojan-web-master/src/styles/element-ui.scss create mode 100644 trojan-web-master/src/styles/index.scss create mode 100644 trojan-web-master/src/styles/mixin.scss create mode 100644 trojan-web-master/src/styles/normalize.scss create mode 100644 trojan-web-master/src/styles/sidebar.scss create mode 100644 trojan-web-master/src/styles/transition.scss create mode 100644 trojan-web-master/src/styles/variables.scss create mode 100644 trojan-web-master/src/utils/common.js create mode 100644 trojan-web-master/src/utils/request.js create mode 100644 trojan-web-master/src/views/dashboard/index.vue create mode 100644 trojan-web-master/src/views/errorPage/404.vue create mode 100644 trojan-web-master/src/views/layout/components/AppMain.vue create mode 100644 trojan-web-master/src/views/layout/components/Navbar.vue create mode 100644 trojan-web-master/src/views/layout/components/Sidebar/Link.vue create mode 100644 trojan-web-master/src/views/layout/components/Sidebar/SidebarItem.vue create mode 100644 trojan-web-master/src/views/layout/components/Sidebar/index.vue create mode 100644 trojan-web-master/src/views/layout/components/index.js create mode 100644 trojan-web-master/src/views/layout/index.vue create mode 100644 trojan-web-master/src/views/layout/mixin/ResizeHandler.js create mode 100644 trojan-web-master/src/views/login/login.vue create mode 100644 trojan-web-master/src/views/login/register.vue create mode 100644 trojan-web-master/src/views/trojan/index.vue create mode 100644 trojan-web-master/src/views/user/index.vue create mode 100644 trojan-web-master/vite.config.js create mode 100644 trojanZ.iml create mode 100644 部署架构建议.md diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2b8a1c3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/trojan-master.zip b/trojan-master.zip new file mode 100644 index 0000000000000000000000000000000000000000..5d362a374069995e926c72ec14fa42350b9c23f2 GIT binary patch literal 158177 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
asxPX$!P{>>dS69*z@!k2wM6uD=!l3?2Q3=`fO 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 d+&$)tJ!GB/ + IMAGE_NAME: jrohy/trojan + + +jobs: + buildx: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Get latest tag + uses: oprypin/find-latest-tag@v1 + id: octokit # The step ID to refer to later. + with: + repository: ${{ github.repository }} # The repository to scan. + + # https://github.com/docker/login-action + - name: Login + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # https://github.com/docker/build-push-action + - name: Build & Push + uses: docker/build-push-action@v2 + with: + context: . + file: ./asset/Dockerfile + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: | + ${{ env.IMAGE_NAME }}:${{ steps.octokit.outputs.tag }} + ${{ env.IMAGE_NAME }}:latest diff --git a/trojan-master/.gitignore b/trojan-master/.gitignore new file mode 100644 index 0000000..8cd0df3 --- /dev/null +++ b/trojan-master/.gitignore @@ -0,0 +1,2 @@ +.vscode +.idea \ No newline at end of file diff --git a/trojan-master/LICENSE b/trojan-master/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/trojan-master/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/trojan-master/README.md b/trojan-master/README.md new file mode 100644 index 0000000..282500f --- /dev/null +++ b/trojan-master/README.md @@ -0,0 +1,101 @@ +# trojan +![](https://img.shields.io/github/v/release/Jrohy/trojan.svg) +![](https://img.shields.io/docker/pulls/jrohy/trojan.svg) +[![Go Report Card](https://goreportcard.com/badge/github.com/Jrohy/trojan)](https://goreportcard.com/report/github.com/Jrohy/trojan) +[![Downloads](https://img.shields.io/github/downloads/Jrohy/trojan/total.svg)](https://img.shields.io/github/downloads/Jrohy/trojan/total.svg) +[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) + + +trojan多用户管理部署程序 + +## 功能 +- 在线web页面和命令行两种方式管理trojan多用户 +- 启动 / 停止 / 重启 trojan 服务端 +- 支持流量统计和流量限制 +- 命令行模式管理, 支持命令补全 +- 集成acme.sh证书申请 +- 生成客户端配置文件 +- 在线实时查看trojan日志 +- 在线trojan和trojan-go随时切换 +- 支持trojan://分享链接和二维码分享(仅限web页面) +- 支持转化为clash订阅地址并导入到[clash_for_windows](https://github.com/Fndroid/clash_for_windows_pkg/releases)(仅限web页面) +- 限制用户使用期限 + +## 安装方式 +*trojan使用请提前准备好服务器可用的域名* + +### a. 一键脚本安装 +``` +#安装/更新 +source <(curl -sL https://git.io/trojan-install) + +#卸载 +source <(curl -sL https://git.io/trojan-install) --remove + +``` +安装完后输入'trojan'可进入管理程序 +浏览器访问 https://域名 可在线web页面管理trojan用户 +前端页面源码地址: [trojan-web](https://github.com/Jrohy/trojan-web) + +### b. docker运行 +1. 安装mysql + +因为mariadb内存使用比mysql至少减少一半, 所以推荐使用mariadb数据库 +``` +docker run --name trojan-mariadb --restart=always -p 3306:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=trojan -e MYSQL_ROOT_HOST=% -e MYSQL_DATABASE=trojan -d mariadb:10.2 +``` +端口和root密码以及持久化目录都可以改成其他的 + +2. 安装trojan +``` +docker run -it -d --name trojan --net=host --restart=always --privileged jrohy/trojan init +``` +运行完后进入容器 `docker exec -it trojan bash`, 然后输入'trojan'即可进行初始化安装 + +启动web服务: `systemctl start trojan-web` + +设置自启动: `systemctl enable trojan-web` + +更新管理程序: `source <(curl -sL https://git.io/trojan-install)` + +## 运行截图 +![avatar](asset/1.png) +![avatar](asset/2.png) + +## 命令行 +``` +Usage: + trojan [flags] + trojan [command] + +Available Commands: + add 添加用户 + clean 清空指定用户流量 + completion 自动命令补全(支持bash和zsh) + del 删除用户 + help Help about any command + info 用户信息列表 + log 查看trojan日志 + port 修改trojan端口 + restart 重启trojan + start 启动trojan + status 查看trojan状态 + stop 停止trojan + tls 证书安装 + update 更新trojan + updateWeb 更新trojan管理程序 + version 显示版本号 + import [path] 导入sql文件 + export [path] 导出sql文件 + web 以web方式启动 + +Flags: + -h, --help help for trojan +``` + +## 注意 +安装完trojan后强烈建议开启BBR等加速: [one_click_script](https://github.com/jinwyp/one_click_script) + +## Thanks +感谢JetBrains提供的免费GoLand +[![avatar](asset/jetbrains.svg)](https://jb.gg/OpenSource) diff --git a/trojan-master/asset/1.png b/trojan-master/asset/1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9b35c57adef9fe535cb34b1231fb13b7a98889 GIT binary patch literal 63317 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 II;Vst0F9dKPXGV_ literal 0 HcmV?d00001 diff --git a/trojan-master/asset/2.png b/trojan-master/asset/2.png new file mode 100644 index 0000000000000000000000000000000000000000..07ed09f9bfceddca80ff963cbf5ef78e70c69023 GIT binary patch literal 31454 zcmeFZcU03^_c!W{&)5)gR6wMS<5+15NH32v*k~e3FDlZzbV8DGP#CGB(yM~>5_%1Z zf+R|SC;NUGKW@y?4E5Ef(KoaSr?Jz0cmCUC#IM zb^FV*dyeecwr!j2)hoZ=*tTtF@V0H=x9{2^{pQeTZ?N>&chNU4U)$BTXEWWtg| zvG?lg^3>GEwb<$#iN^K;Np_13#o_q{_x3!_fAgD4&u3Tdmuju#A9a8J;~&=BUzF@W z`@<8*U9Nr?t&UD13e&PecNx6@E$h?up==dCZZv{J=9uqg9I(~AT^55cu zbo{fjZv4=<$KQT+EIIw{aogic1E;?p4_JrQ{Pp<%@WP*19dOB6;ipLo53~MXB>(x2 zUocFvIyp=jc1Tmy9zo@2{+rt0Y(Z;TYiWLtfX_FL*eMBfPyaUWai#N({LvhkviIhU z99hm+C`=>a(Lht-8kI>s2jVps48?;FZE1mY+{Pq|`P9bH-RbUE-P9PV@ZObUq+{y* zkw}aS(y&oSRW!1gq`n)Tuu+|GwMQLDL98UH_pRup19pC!uZO#7O{dt9MDY`kD!j5S zd+aoWU50WdL}!Kfj*EN0lS-!D%zIByes%B@FR(EPf-8Wz`Y?|9sQ65Y*L32iv4XeF zBZJ$&uGXp)R$R#$#ts87qYiNH@y6cukRNFsOvkC0B{uYn2$o4_%-9@6XO~p;Zffc7 zUngz56qa7e8H`A^6j$}X)M6n6EHdGNMc1dqU#6);c4=gh3h3u~?)nI?B>5{fhq}Ja z%XHtYU4%T@C?EnpKVG9q zxj_qE$iRhg)b@hK@87L8!U5wS+aVUB`Qk~aWc(@RMcp^$zdhBi&}Er)BEK%JVoyMg zxjr+~I;>Y1&RbVU>hj){Fo)P(tJZWG9iT??+UuPpa39-YM?s!nNa7qch#>KQw|;%< z+le|GY@C5(pk1C%xKAlK%a8(wH4fT87}!Pgo+2b|pobcXpg~-Rfmco4!j*qZL`$lg zVoGH18BcW?IS?R~6O&zOAoL=)!4B$pT%M4gK$MlE%vYZNIXqI}ka|$ZC)3g{f`D(H zzM;^iW9h-5Bz>-rT)F`bJ(BV}_uZPhWoCihhLrvf>jo!>NfKakPWP_AtHEz7+8|Nj zEc3BB=`FTa#|sm-&)hV2p!Y1wbqXe#c8YZbY|!p>>mgen!UYrYLvuY~6>vEsjbur1 zQtSe#^TVN`qEJ^y548h*B35S*A-v<>zr}gKZ_QIPq@u(VT0>Jy+DwN20;$#x&H)~S zs_S?-K+Fzh;L^Nv3YscpPX|X>BsZC0ziiJDvOl)B{}xt}(XBHsz-j(lVSg*#0eF{v z`Zn4eh@X12nⅆy-&xicO(M`=B8b49Acxzi#j_CP6tOj{w0G?aZDO=Xf+HlM71AO z)Ny04)?3A1H61?s6g#Xdm9qfn6dRTFd2a2RbPvL_r6$gbU51jhXl6UR<4&3dYy~Gt z{6r1HKo|Zd*wBY9?cHaBdKUJt&VPK`-6>U&1Qv}{(@L5*XT^1cscch9v6hB$sa&ou=6jqi_=fZvzpEXBd zbw*^c*vUg(^|?Tb2T`rBsceaEV3VI#sqj@}e{;0)m`cqcja48Ay(Chuj}nm?ij?)f z$dv@BWQ)3Jk%NPWTZ5IlkEFvHbHXc3afzgXhLUo^_k$F`+q0EYf1sMzTS~y^%HnW$6FTM zv((PHo4{f^wY@Y~+6QKPLe2hX%QaXhOS+#RX>1%>Ay_7Amx>}Mx;YHuzFKil=Sljz zwXZhmF?`g|Djk;tUgtJOj~mGOdWzvdZ5&LW5%Ra=aJWlo9Ts#P%9=hoEXf_k4Ldx< zJAh6?!9k-#ag^b;O+9p~rEQv{_I*|rQPy%a#v4~7JsA=(*W6RSXRGJ5reAxm(XGuPm)HIgMi5;Bor8Q zM(B|Bd$(pH1HepKNm9PEMYfnGIhV{{rVic0iqR>k(aLUUXz~9{dty4SZr+sB=#W-Y zOrhx;3tf4`m;GmD;>(OK|2JcA;N@822|GlP*!Lm7JR{ZMP15IFCkQcI3<(uLkTU)C z4`EVZk^48RTcZ_>ch*i-2fC`Q_f9zEzbp)Mn(`n0n>9rp>MD6C_2l`;9;w=OYTu3! zj^-@-EqI%3W=yj|%+I_{_GO>GHtk@EIyaSpKz;K(zk#-l-5CbhRH#nmh4Vh3$!H)* zJiJDy!c;*<%p}V_L=i&rBg`DM)9c%mpKknr0{{GH#FiUR1iJkC_wh1a%DH~;2Hb}ps z4r<#f%FmcAdfN3#9k%u;l8FoPd&hc)PCn5jr1&8EzW(=Di(8Q67=5#G_31zJb>hKR z{GOsk>708Mi1?b@z~gnfG&yA7nXO&Cy1VtaRk?u4IQf6Hm!8gm>w3YTQ8KtTGf&&= zv@o~!jNV6-e+5Rbem=eRr$+P4rS!#!=n=v3kjIsAtZK8px?fkS{JK(1-u8B=qcE%` z0e(-*aVmV`E3Y)SgO|6fjwtfq`F#wM`3KA;@DPk|g? z0uy~!6C%24=x16^!m`~Y|8&oz{YClmUf@FRSma)m|P(Nh2hbU)B<9TKOcP_Vv8~->I z>*Fqxw7FOrvB9Zp<3HD?OC+GExwm2dS8g@gPddKj$amH6ExyUg?SV8!U-j^>%770u z6d+fhv=GO07rTH*VLp~12(0N$e{D=V5S)%%vl*G~Z#kC=lJM_(io(X?FY<)GS+t2K z?YvT(5Kr6l_5=DvVm2CmWfcAEorZP;?|ApYoW75twvGbEFdBSA_(W3gI4Q2p+YeeV zYn@CK1sz~Se>_Q|%E=d0h(SW*&DR~xcqxeIux;pg{T5aZL?j>){k{fkul}uHw7mA` zr)9F?r*6brSjv$GG@BpwT=@Ds-4bw6kF3@9;olPYn)O# zEsH&;>@}6|w{p>@f#)8#s^lgP$F0ZC$NG{8euFYSr3@Fh%Cx(hszx3{uUiARgaYm` znT8yZ$U&GgKOTDwVRQm6=VW4dN`cu`OFT`dJf12e;tbcJ8}aFvV+;T?`m>FouQ^}_ zUbmnQN?Hja1q2lH{d<#7KLiWC$?Xi_;h}0qT7{e!|kXSo3z2jXP^k0AVtuDA=T*Iu8dQ`7&Z<-l9kWZ%QeZE$kzx)-kTJ-`A>S6PXnf$ zepxy-e;?*k->F&BfQ30_*3K|2#fBq9PuPA-9q$6jUP<_k9e^yzg(T5V%mX)h2DTGm z>w=CS3J5qAqLqX_P4k%|sDd~tcYhx^AZfK30oPm&@;fdh%fS>txI{R;$;wgiK7Pn@ zpL|=^)9y`U0(FPV_exvj-*(&zwjBFMAF!{T2^6>RxZ~;%*ZA4A+_VTFN&O;kdFN42 zEL(7{s9{?=WxTi2AkQG>u8smQg?1{~6x{PU6RJa=1UVF2`rNUm=VVxR&u4H*<+|NR zPL3Qd>E0+UEXT$#jYV3L2?G;PyP=FIYsOw*6D0M7pC|)Y*sxLB{XX(btl2L^#Kf4OJZ2-3H zuFJxPi9vORMK7k@V!E$6;Y@}Jh4tOYY%??g z8EP|QOK(Mo=0W)GWt!#4cL-{=s60MjkcE%Q#wXx|nz_^y){c0WscZt#Qo%CEkQQBT z`QJsZX;o~!+_`)vxbb^NZB=z-fTO9O+p~$Z`nobbptT2?>vyzJt@aGpoe^T1j+?vx zk-qo?|0**A$w9|V|Op;tl$4><}f|0o`Ue;lVuYCHqpJ`Py=3m$aDWi+M0_-0~eq7!k7bj{tSzo8> z@%_k9z>n5pI1LD7uXoP9(_(LJ@oL_p!^*Yk;uudg*7#y~8Q0kF(luNzub7*6*Cojj zz@sms&55Fci8t7LHRd(~gcXruy@{C7^!1;Q#WU`(n5p54mX<(p1l4y#=;h_J%MB7L z%_8MDU<9CEvk~LqM&0-|6_39HH;*l#x8)97)lO&N*xDnh={VQ^4G|ntr=_D_D>YXe z%bJNZr~A_3uv{>$ADYv4C6V@*e_I(mq~k*CO;CKw(PD+U5BX)0U%`kTHV!wx!{ z&0gDuGy(P0y>y zmKFy=EE%x8MG~eW4ZL3B@<{Rp&R>|ohs}iMw%ot%wO+j+)^}hCK$QB$v6AtHN{i31 ziQe2154Sz%Z3H+%R4 zF9fG2L2_w?XXQg-Hu7E8_CQzRyOEF$fhs&?iA>=KnR@3uUQSd6=;%yxkN>eEDzZij zEOb}hD{5a5Di^u z-~o%agFRw3Iuws)wby->St8!Q=w{x7M-A_T<^wuPRXz5!M0ekCG`#^uU`-b!&##2# zhEhT-*XKT;BBc_ZAq2C~1!s+5@Uq4Tjm27wFv0rFfP{1V2^tV5;R4V%a%lq!BkQ6H zmj}Z6;w-_?oA>Bu^c9~6X1T`V7V7}%VU(~(BKbRgWGtIOFjL`|ol;C9@gXyo&IFhA zxQW0WrDcP4Vd55csk?PpA)nv!EoqkVbg)hY7o)(cAQsDKpSn3a=h*QuJqi7t`Xe8L zcy2;4oB7qqBrS1$_K_IcX=|8@himhVM^zFUCP)Pr>$+ zd<(R0O(|Tp4&|G`)_O*I)5)|~tdRs$A1@X0s$}mS05a@k^_ff5DHR>R25x{t7TWq6 zzbFs}rdOmP{DkwFhq`<%lre>_oR)LS&QsZTjfcukSaIP=g7!bdR(~u>$4$q`cgaRU zh|_m_5(lT@wb~)IBEgK>w$6u~Fp4%s&Ba;7aWzQr%>qe33uNH&)k>^N z;oLj!MP8KKspBIORCJ!2Hi*k??*vwn<9sK3;_saaA!HuMyp6rk8?Kl2i*hRR;NO?96H9brA6MLqLYyiuBwPUr`n# zw7ff>)ta`zXZ|I2XgG~^BO5i*Zn2>44L=iH3xq`ry)q`8PX{+v#zdZ?#0W@MXB>Q{ z_F1AQ4#a&*V*6$hB%A-(+TCqOX}VFu*O7Sh#x2d}+(zT7&Ggs7A|m}W6f&N_1!6+` zb01xESjM=mzxm$(Ia|=M%k~Jx!KY8(X1Q}FG{zCIU}%-_;tH1Gf0bPH6?R3IgIdCuERe}$N6+fVR^%vJx_m;W)XTD)Nd|aMU z&~%)i?(TMPYofF|BQOq@%-s?UA?<~=6L-7Ih`kh@VK7reodK=*#`d@CmzX_$TT$V! zjswPD)9kIM=A=6oZtZxpR`QFGb5Ns<5;}^M=F7D@48w}Hr1hVs=~DWFB@_uSjbxZp z-ZEh&_~0aQ&Fg@(^H9^IY%rN9O60*M@z^**T!(+ve+Uw{?4X~xL$VY<3}!bz+W=6<81aIQ;4L|qL3`&f*Y~i1jtpAEdqqizqQk^qssuR7H>fEij zoN6HuOE(DlkD;fO#i(_5g?Iuk3*VGjsDMNr5)am30fH zfB890Yr2jY2e0Qm6*WUVS2gdQtnT-U60C#zSHXJs{v)UQ6}u!9h_G=@xyNkM?bSr_ zI%rftODgq4U*Zq$?3el8ZQ_*Jzy<2lo_{LX&|7jZ>m^Y+oB6GnFCLAUWN40zn<5~|(3k2es zC$%Or*hD9S50Ek(IDu!+2nSX9HWr3=~us&0-Dldb%HJ9Xa~z4 z(V+a<=A3woiS}=0rfomDNeP0B7tBdjhEf&#Tmd@_63k+U87csaj?awBFqekr3W~JkQU-9oh zC%^vRTCV)RQv4}ywO%kpx;%lX_-%YFAvNpHm+!WhpMxMN_IY|B^+Z{4&AP@lvCA!=!cu9~ACMl+G&)Zu4bArn`@ z+94o#Fc6a0>-DuVKKqE7mXLI^P8KFOnW$Kv4Bw=jB`f(GM$J$8F1`5hx^HwgrFzNc zz&6j*QVJv!oS$eF%`Y`w2GX&KRZU*%8J^GS#BD#=`pqNUZev`3brg(W9?cqDU`=g` zYfGG`xEQcc<3wuOD9vtu|H5^KD8h= z`bK!JM7enxW)DUvkQ#l@}fpc32j4r&5QUE&CT`F((eMS0XK=f(HPqV~L(=0Q4M?vD$`YN5bHONz+r z$0bk45dTdj!uN`S7#8TIYob?H2`V;>r|yIeaa2R|VTp^ynqnR6W3 z%z#3-Vx6317EaZGJiy6XSo;1R2wK@5WU7GW$@MQ&>;&nl)w9 zBDGeYEd&ecw>!2%Yv-q&hh7h@3D`;Hfl39#2~P7B&e$5F#5W}ZpDR;7?&|t!v}1GR zkFJy2f%ZoL2MtZ^3Tw7SyG1*ic50qQc2KW_tu4gHH@%$b{!n}8fpYKCG@&(g zyPk}qB{f7eKjAr*?Q1riIhwc(9HDmgjhP~oTHAK=Wf5=JL09kI6C&9gE3gs?V+stX z`=v24MI6zoV7H6rjq8D{p;$ZowN*blD~_-ntf zXe#xryQB9C6it+OpnX&G?#$|*(E3HeHz+;JR3uX;;u7KSLnyK{!|oZlHjM_oh?_?u z);u$UknhQPIeJ0Waa$yR=(%G&vcq5DXV63df4(NFtJStG`MPfT(R#}YD{|n<7>t_L zwv*O0pWpe$=V_p&v?3j4DEic#lvVlE}fHuq?*FVacXM!zbfzjlf zJSjYqzZG6~OB1Z6h?ctM<~lkI&1@+0i)b?${@o{e-!=CZ&u55;bLFGNc+FC0nKEYF zpiJE$Ci`5DDJ%8p?IS6&-K@~VS6QfX`DrGLlD`5&cp5fC<80MekVR{TWBu#O9e>DP zdS;+mJNs&^cm&Naw&;oSqWYzAtZC2qpeZRAJ62wiR2r}c|!qi>C}g7Y2VM#~@Fm~%cVO)ujn^zfKJn8oO-h`HO7 zi1G=1cx#a1w|%{#%yxx-F4c!OgDq=zojHt-%?zk<0xt!q^-L$It2H9LRef{5G%(Nm z6AHWaVl@?ODa&n`-(mzxnAnPGa`o~*W8qoUvYLYjbz|U613L0ZQt6NMWkMX_R z@*#o3m?krMxDNbB;drNG;8_ADwLCj-T7QRWt*l5Ru#Bwi+R^D4zm(|X3v!19BKV;G z(ELnW(<24dd2_qT;8^m;3fo!7<2s`0&-kL);rr>bV`E`wz3-Y(yU1^%%vL+R%@J#e zs#RHMM6?pQ=-p-k7`bvdc?ZsJd!+h@=?ofwBS7O;1El-XEA8_evma#e*WDXFr~FXZ}PN6HD{`(9<)>jwf|pPZD?*9!W^aA?54`eJ^EgI>Hav z8^V(NxMx2fV|}X6!({7c6?O>2?BYMB|5y;z$TVZGhn4y`Ji8y7HP(os4zpJAjta_B-#G zcOk8Wi5o0War-&3veKrlT+L4F24>+BdKk0QTFYarRp{$cTePhK9MztP+;m>sRM>V> z`!J^@wki@RGEvy|;<(nseTc|tN`2dYoC8uZPBO zO*#AasnDXlEpJSP&lhS@>2mU5n*pP8fG_qfafglOM1TvD6?{Q2G1I{~+=I2E-@W7( zSMercY4p8oOSv(v<0y7EB{7ej*a!c`F>GgsZ#&_{OkuX|yqb#xq{b~G&|;#FBeDg< z|Fi>`b@s%MpulB_-;-7S0XcYFZ6BT8q0>WXe~UhQ{&do5~7FTfEG ztRS-?o(SrVd4^eA>)X8WgppS8gSL3G-HRg?BOA{LhYUbJv}k2fn95InTdroB6QL~t z>*$2ya~4%B0q0uyojb|}m({^{YsxLMin-9FfHIey#1TK%DihjoHs2#0?4P#?HwLle zgFM+fJ<4c=UWj9MnwWV$yDi{Lo4$ep$D{=_AZh|A4c;{OCa-V8$SkFPc#?@O)b>NH zTRjXKE$q2L>;_r_xiZSXXek?77G$A{gR%=ajL9%ml(P>69D2ga_ke-%zf8z2nL?mO z4%uMs(5AvEyi8ljb)B{RdIlt()Lrn%y5(Nf-U8pi*8RqbKQsZ7S{nxM&WaPE8>RkA z$X7;eXcQrF;gkHheM;WESk``=lJ+ETT9)wYe1@ChS$ykQ@f$x@6uB>&>;PSO`7)}# zKhx{p{NZ!uWUUttA#-toW~Evn7tjnKAA+KBfHhfz2{vz=y?xY<$TYVZNMb|e8_G%U_Vr@r@o87>Jxm3Ry&G1k!K|Ads zg~u~`mOqyjQ25;3--G<(X3pael=TP&tQPjx03xGpr&JD9ZDzqQ4ag90wOXrbU?&4Y z7Q575r4IMK*7uLW&%GtT5i~$BFj!cG<_iMzeAAH%Cp7g0#4>(-_)f>a00w$qBRH!w zAmNxyw9M2%Bpx;N^G5Og7hTQfh@F;5`8QFgU3SQKwYmm*TS)aT#1?@w}5R!v_r_Z&`BXZNsANQU2$Hws**)G=D8EXaUZh&mPzOBv!DZrJ%#iSG3GVW;im6^MQk#o{OR$>VmIfq@Alc(1Yri)6Lo8ubl5z_vD=ZBcmP8$e?4#$fqXK zP|TSlX~$6G2))c(;296r$T`&euG9ICvdm|HQYCjt?Wrn&N$m|CRFmRFg5(can~Dyj z;zVcucYBWI=*5|w+uD$?Wd}RCT{z}U?&LLr^~9ziymKi$yU*Kv)dRJ&_3FRiRQP)8 z!fuUtRXu2%Os33rOX|#?6;}m?zM+vQobe8XR%dpf7oZfazk1og?7L^0q1zqC)_5h* z%A&pH$U>SkCgt_DASk0HZ)#>o3yCjSfeygnKloojo%*Jf^FvF|yiiQ~xw(G(kiJ(5 zseIeg2nXJmBY@TmmzG`!3A?&4bRnbwWHQ#BHFFiw{ESZY2&7@Cu6|hA859w3dkEE^WwC#d62O5n|QiVTQ8Iqa={os>N;ASHQ6@4KaQ4 z8Vj_W-`FfU5n#}Yb#Zrh($Ua+52D{b{9%mqyDM>TGJu4(v2*MxlO zblHn+J{6Ze7v$ppVDAY?;6B>i?OQ z_=Q=d64WBg*1Y+5+e_U}@o1N{blkNgC%sr7mXiBRD)XDSnv*@=@zuQ#f7w0oM=rOg z+D@2y{q#igaMAq@(?&nKJSA45sO#o9~prdlN-=`N* zm35TSt#Wg7jiw8xyi1z%5#{RyZRM_hv-1<$9|#z>^4;^xw!*E`@ik@gf08Eu8=A-G zPEjp;PyPJ&Av5;#w|*R8i=$+mS3Z>WLSnY5COCl(z%2ZQwkj= z_}1C|n?}}_hj`lVNk8LF&1(OvC-kpxrJa=3HX6*Q{M;TLMlJMfRsZ9)b#J36^2y;_ z6|Pp{W=e!C?hef~u6>%c*UKv5sCYiEm$yJ-yiwm~9o768-ZfZtt^~liH(Q`!-?N}#?~`7@O<=E@N8O3z^+5r5!LfYUZiiN}sfAK@ zvbp!RvD3|es>z~}HZ#-J+@Z!C%ftH?VytF?cBTHgeMt_pKuj2ka8T!A{7G9&oU^x? zLR@A^OLM7QEo1Qb7rUIEumGm(mOzUd>= zFZ510MWwxy4?Yf!aXF{1I&d!VcqxDbi(GRuB^%+D;xhU3-2O-dvpD2~R`QAwsAW!Z z9|3TpwB+tTJ(E`h&l#LVV_XLJXTOPxpFYWXBp{|Ma(g3J@)H(Fln0%fAByg}cQBTG zJK+0Tuh987n0@nLKrAt9~` z+K17h=22yCKgyI$49h)iWyJ_z(36=0xSG$WeTT3MZk`O%B2fbupN?%z7=PNZOUIk+ zrfBzcT{LHF%{Lnn%V0o=e`jWr+YfbFOB>PsvzFI2va*cR-Dh2k(s9AtKfGuKc$mla zFiiIETZq-1H+~y-N7B;!T@qfF6n&Dg%N(Db>Sc5=`^%BC{JoyZN5!y&FS6)G8<7hTeMM)E@0HxKJYWiC@Z^jSzzp0 zaBcPHXEi=&o86EsN(YI+VapM&gSAbO;Nh2k1aF2s3$@9rP-DGUf5U8TEY$8iaa1uQ zR+N-X-#ZXt;f@xNqX|IlCqL3t=GaVC-6OktO?l-X+;9VN#hJMS6kyk$cQ;>Up`111 zP?h%snDKJnX|A`?9^LuY^h;3t<)}15EiX~&rQ?;8R?d|kd_K7*N*+Z@ z6jx-OO<_D+BSZgT)ToEU-fJ&m%kDS;STYaV04c29$c3~|Kd*{HFn6D4sI@ej{x_U~z zsKU_40>glc`2-f09Y1KB{NgJZ;6nnCk5=YXG= zU%1?PYlF<7y^PJCxLZq&(8|B8*04k+OJz4GmEFf^!sa^hQ2+n|)*si6sK{_2&hQHv zwMXC9FKdeB9BKfAW~Z@4a|F5 z&~~>%3kpVP;i>49Ei)}mjwa6x)(tYtBcZs$Xpe*jYDous)HP}lf4L%~QsKS_L)x!V zisw8c>(~$c=yx2NSV`!JB@U}%eqSQ=xv1|FG*XG@y#UAOl??B~ryO}T2jb7FCh}n` z%9{WN_?UNV@bU0ZD`f^=7RuQL%I_@znkw(w(sW(QWdepD^Ny#|4ORbO&9`J(*WWbW zuO|4(d+PeQWsf}BZ{FLq+I8)V5uxp*XDKy8Cx3gt!Qf2VF9aw06N_;(;PlF+Ir20Q zdNgJ)a`X`rB|Elrh)HJOAJ()EGxkdQjG>U5q7rxc$61t~K`^r$2lAg0cX54uz+xAw zddOk4OtFrgUOA?4K-%N*T4e{BvkDk`y+|bJ01?MnUyMKw$V;r_`2v?pdlpksb;Ush&c zI6}|EL1?zw^m^&Tsf8WK=cJwd5$|}|k=&ySx#V_fm;Y{SU$)7JZnU0jf}_Vg%xg^U z8txSR!{C?bt*YBr5|qC;9T)FTt-newEm>;4;G2PaMw;&Z9m^k|LydeN-d5=bijH6N zJfbsLsi5#nxg^-fq%`sgeSi~R>d`K}Jd=E^v^UnrtaOpbB9;M|pKelHt|=#^!Sd8A z@T)8PUsA~P2kjMQ^n%FmpHLe#rl}vl;97HQE?`w<9prmx#rZc0VBO>vGkte7;zhiA z3-|Xzf0Ol1QS618!OQs^+QfO+sjjw-^`gyqa(3vsM@h*W ziq(VZln3{9;HvS12b>pO%WCU@778N+rWOBG2{5#D(?m_7WIN=$qPA}yqE4lS-q<}k z|14RWHG0mU%q8<<*c6n${)*^0lIV=I!1dK~(R4wjQ{Ei*punn))W73N3Q*IJfbjJs>r zL3v5{l6oHf;z#aoqj}c&`811gh5NGO-$(pN(M=W67 zwfgJAyx~(&NzKL)P1gL^z+}r1vPT!nH=)|&(PwL-yB9XcKCvcV$|K4vISZW^XS*DO zT6JdzE9>hX{Sa7Q&}9O-cWxrWVI=TLNyXkq{0+>d0?{3CA2kHYXGp!G=S+=Nb*!Bg z#}K(%y_lFwe5z9;pAz)?V_!8M5$(Nd;%?@j$bS&ID2iDK7^0>NROWc=iz!kEIgu*E z%s8$W(b@23aMy{2)k*%exl+r34iv}q%a2JI5ar~@zpV2ELSrN^BJZw^JZ_OK{$QH( zaFEh_ntRC-d}1EJit&L3Hf9u5kv1q9BsMaqrQFH{*w)y1{#x2@Vyq_gX8503D4A$! z`?M|HL>T3{bV@F^Fke}E#luA#rdkf~DNl{1o6GT=A7(_9?M6muB4;Po`XB~~&!u0@ zXFW1{-U^5fBfU776*Mvp7!sS7?}FI75e$%FXMFl$D!0a2jl<^gb~{Tjf99h!Nb|}L z53MM=Z@ckBPS0`(d!i5PmD?=;Nf}8YGz}l9qtPS;}mMBAV(c zyz_K12`i5UYl(aJI~{7>z8o8IDBo^;DEcV}&>EPb9gOGpbnyE4eA;MxKJTwwD(mVG z0dDDg%Tkz&MGe=BR`6?4R(8_+OHI!$Zpmv`5lfrZEW=~y?jLM5VlkH-WvV9m?Wxx= zlN7_d#&f5vb}D`!Nr@ipMg#J+b#!A| z1{2;QU))Wc8dGlGlhWSDMV-#VR*$Kh9VUFi9sEhOkU}jCudVYlj}3dDxoDQepkHoe z4gj$aB0snIlHQIRzA^vkL54VOs;KX|JQ_V2hF9Vck~_sWE}0xa24o<^fl)8iTp9sO zP0e+7fcBi#X%8KZDb(Shz86xzh@NPbh&!Ia3wO}8w47W{BbGXvyV!{c*6&L;PC3+# zAI5e4jPb$)&arN7W9OEy(;oS^>Gh&H1s3Edi7V#xftr+{Bf2O2E_A_zcqkRY zz+sG2f0K1o2&}(X(p?v3L-FjWYhG=<1!enbJ(|zSK#Ix+G6aP;XY!ASMGX#TIiVqL znm-3<*`lzGGzOvFIxGs`{ybcu-t&l^8g1&nJ_lLz1s&E6A7!Y`4ClL@X=t;bn4B`nzqt? zkK;bieF(aeIPsP~5WXuO)GYK84qft1L5&!Bost6*@@tgnSw_<=`kAUDHRW;E)O6$- zuKpR+5*1KV+(CMQE*QD#>&uEw8>)YiHLjR})V67o+QHYPBKfXQ@4GJO1&0Qn;rd5_ z-nbBw?roqH%O3tdC=1rq1W8}mOtZFwzbksr$ z#k-TP1CT$qF`h;)s5~)-w6PkocTWujE=N=5?zFZq>aIg|6zhkq8%K!`k*H5pUtB(3&Xh z=}iuBo78UK@bG<7nEqvn-Z<2e99BD4b2^v|AB5cM_ZCLY{VT^;>)jWUYzliJUN|{i zrh|~#jA>qz-nnRrn3&PI3f}1jdmj_uKn!Qfa{w>{?pwN(dUs6hF~(Lba0w~=XKBmLwD{0E#O6a;s2ApG zxCUwb;La87ZA8RJInJvvvw{q?YV#iA`dVXS)7xiO*d61i#;YKMC!teJzbq!z!`?Xq zC(4OeaX&v!#@u;_DCBk7+DEL?_`briVl`klii(`a&f zSvj1&o<^D$kcH6R3aqKOlj|QXOtZroBYtREv`2{#^l1#%(;xh6fuFnPa`A|# zK%(q8l@AhL+Jzq&#Vu0XUk+CB7nXj|@TpplC^`d#TzsI(zV3g_6SJE%ERn9_4uZd7X*2d>Jqpn=(wcw%eJ-1NLc~ym|^OU0p zxml$J=UYPKcm8!GafoXdy8bYu7jD8m1 zbrD31H${|kuHe!>M<}P#fIbaR;*q5_8?}e5LtWLIC|_Uile61Ws%+-j*MP4zzaFfS zEGn)O_2n4ZK-K@e*7i3Q+=zML7B_m}oH?Rb^L{Xse7D;zznzPi3)oCFx50Hs`O$jY z+c&+CG(7|JoQ_>G3sv1hu&>;wpbR>D-Zw$(-&Ln@O3UC;%6z@m9qxJ4%iPwohB~i> zUGB}ik--RO7es#rN?+Np2)TiUQ6S92imveA|wO!Ubc z_C!KLslIAy;j%&IaA?0l;3Y=IUIB^-FPfw@`SA*%}e3dYUv z?IvC#RfJySQ3tutn`CL`1hccTCrrY1l1|10fGhVG8y}cs8EkFq^Q=~I) zT(0A_R}rw(98?6H{1I>oNnb0lpiMR=7N;g=sM3DCH>rm9qP@3ca>+|x2MZGMlZwXy zOR?0mtvYysZTS87YKIUu0lMp(uA<4tqK}H;kSF z%+^dA6mUY`-yB?0h2S-d86EH zGTN6;8}Oj+4oMW*2pU-~-P|*Ep4#OOOzz(718ajP8(HaDOWm#TegZ7Ab(8<@wc|f- zM@a>9q7eYLG%&hMX(-6fQ5u#F@`jTWe7!4@*M9XPrPQ`91hSA`tc>PRw>`C%o zQbKH5yN(=cXX$%m!VcENjAENfOcs7x2M98{PY|pwf7F*ct<|=jY9acx1be_#oOTt& z8!V|3c^pS-v*I?-miG5S?Xdd4*!y(LlaFhKfN8K+!3w93RK**qpP>A%KrU*&8)Gaj zw;t+hJzf2Cv)c|%O;x04YGwBgvyZV{1u$|7wLL@c=FRS#kPsxzAnUbvT{HpYOo_I$ zUc2t7tPXCr4oeig4ycYATwjM_Biy#q)LX4Q0rR5^SNQzqq=@du@Z@{3a-DfS!&Yq@ zhtKGlaBbZdY*s(M<}jp3YD=!i(DHS%*U$p@AE?(7Sfm8C+80s;5_zbP|2VQGs^m4l zy_i}Ls3Kg6o^Gik@%?GWr+&qxKFv!yHuf=+8kBUsysJ?VXaxjk&> z(Bs|IP7SsLR$BqyXn2}$v$h1HibTO2tr-d%JcJMI%j=ux6P;y=_m|2lKa>%o#^7{&1%oyu+=iCy+oSz zBUHxK3CHeTpD+*;H3O)pgG=Bc1n@wemc){`aNysi?%uqC59`sf6jnncSBfQx`@0J? zTqx*@a5`niZ7Ov-`jvc8#9n%m_A`T)6ID_vR}Xc*Jueu35$sTiAA*I9qBsu+E5aFe zQoOmk+jLa+SEj+`@N8=DLY!4^hg*}vWNKMs3+$*0bTCm;v3G!xbf*;?Jb0&$Da(zw zpHa@s5Hy9y3$&(tI9xEZJ4r6Z;mcmr$r%5yuc#m)=@?Tl8|9pgQ21(U@R6B3fKN77 zM`mt-cCov3i4KqDMU<@0cc;7G|BQP+7s(%tTw$?Y8AmWkpHSx$%X+3J4uiaP^E(me ziA1G1VscENStxw@@hURh{kkJw1w}VcoV;(v>Z?Vy^!q0?x%6q5M?=N}GO*}WuloS% zyR|-^^#giE|8bR|Z1ml7exFk_Qx}u4s_PHS%_r6t1!O6qQz*Z$d*;&!R6aO;aWfbZtKXQ}zU|Rk~Ncb*+)Syvu_=id9xX3=&SIy35 zm*sk<*wWWQv~E)*?#fyCaJa{BIRW`@O(+<7m8Is>t|Bk!ysDt#TIf%@dXyq;m zhL+b2R3`>`w~b=R<-JE62(vNLqC^_E@G9Wb0`Kkfy?s2~yU5Q@Y{U!tz`loMw7iWK z<X>A?^(495FSHi7_n@tnl@Cm{EW0qW|&@!_A|DqNNTJNEle_tSJLy5YK(^ockx~1 zrI{i3|Iw~XHKC$##nLK?zYHn`P;!=3(F8R!?~}AG$&S$ zx+$)Ey>F6<7V_+d)fcWi+uOO3;}FPz6X|L3N5b})P5AENiZrBZyQytJvr%ZwQ};5& z(l?AWWj~)x#}KpYjtw!>y$tC;x`s1F4ot;es0h4^tA>OUi7m7(SGbJ0CDW5&h*NV) zFl^%P~C2J4iJhyGHfoI-Jf;g1GUK=C5oCTKT> z2)-^6WXLiO%2*9cAC&#v9kX`D78?g}tfS$lHQubLN?>9(+QawN+9q-7@;`H^kWb5Q zEltgC(@lftvbXD^%{ke)IosUrAjKFhLJDtq+J=$Kv?ph8A!x$^Oy1wZE+`>(annnnD6uSfivZdt z=H@}!PMR^;Yl}Dva#iv)J&x&0a5yV@mzKDd|APoN0f_ESY}q6GN~AFgT;T+3r1m<6XMtV4|tNAhnWG_Z}6 zNtJwH&vF=ZP-hi0vuzgh%{8UmS~jhSabm;oQj|2i-{;wAYKToPa}TabYUsVi!~~_ zzBeP|3^(~h+qY?jA<4Q5kF|j-W{!zT zoaYd#RWm^f^%`@OxFtc^wACuiXs3h)Sa9>;9ZP>IRH+-Y?yfIuGtvkO#AU#{CYHWt zy<b6+WAN(PZ$4C>(1zjfqhs;2yy(;jE% zRt+DIwMn&(iYVWLAfL;ajm@oKZ?Y$L(H)ge0uGw*F(9L3J#D$WtbtBcheUtd-Csj} zs0GB-L_@v-W3W{Cd!>lyY@pX<1!2+Bo$TDAL?6Ch@|kN?A~8hnfZm?BeKVT46C&r9 zTcb&lu|X7Q#?#v8PxS|csLS~WegrtPn6Yf@?RY5+OA=FITH*|@rYLj~csO7%756DI zAJHu}n+~VWy~a^C*Vcq_pC)C;eaSvg7G0tR=t`m-WjHbkL6A<1Uf1vv^)GGm6kQMN zD`I@K+8Zb7^f4Ka$MiY6x<6`~_BFJlix_)Uf#|o?m=APiUs8Q6Vz;VE;*~cL>C+BeO7mrg3i3t44Xov;e2$ztV+A+Z>gO+xT z4Xz5KfPn>~`*Q7FRdo+k)xfwq$5dcl>;6(tU;QMTS>ZI7VLs6_&Q~CbqL?Tbyhw5Ncn2`HKw@fv~(p45HQB@MZS=xrGCeR!-CCn0SVo)n`yGQ(+*R>gl$@ z8vv&1EF2rQYDL~%D_j=K=)`!peU~*#RI+b~RyJBDe?SCul0We_!UgN&1}|lQx>q?r z-Fe?`c%+ofXYu?Z7$1$+2!$sBeGSJpl0O>EN)I+_l3rINe>M3{paIn6uvj`3eUPu) zR9?9-a0(z(AxjQzD}L_i<-pPH`C&8oz#%M!TNk`$PpY(CTQGy0g{eLuj2^K;90rvE z4PSLWF)CGve4r{-3vWpcWoQLOv*VRownE)K-L@;h=G-Q9O1}&m^$opNl;F(1`->$* zGPXnBH;JMgQIMtR8eWLf3R@2U$759h7{(h9p(aq0 zV0f1ll~qKPrIkm8{62W6?3$2+@H~zl6K}dIXggL#6!$W7BN=2<;&MyH^&zMI^oXI0>SqbSF>sSC zj~gpAzS0#McH>S@wmISJZsX`Kj-IkVd(0W(G!7q*#SkAe7DpOQ^c?YE4{03nn2E&S zeCX;o?=)C9iRDr3=1N2CeMk742<~}Vy_vcC^+3{Xc@=-Jxar_#y27E7j`NjjJ4N{w zR%q+{Pu*8XrH#SU%Knyoqa(}dw1g@h|1k@oF?S*jRBQ$!9Ke1XPoG22_twu|iWG=R zVDt|w$f{lmn10VHGry~D1vlw>^%f$Xo9~h8BV3tcE~rrl*#7s~b8w~Ekilx$X1Ki_ zTt^Ov<{T;rv)E_>XgcVn+`f)9y6j_L75}d3Kg{|w&uPn@_(xKqF_qX6rfR)rO02y! zG^}OPS_H^oLgkhqR!#0!4xQ24zG;c4z{24WO=%I>#`6qMC9CO&S|vH;1&^C&b%$>C zI9mh`g)Bi>uYUDjObJG=o^JDNcitHP;HYQ(?Ug3mtm{MV27-oAi9xWTp{=2Iqt)3Y z!NGGsca_%J{$CIs|7La#e9Eo3H2;Q<6V5^XoL+pQOl=!?xNYON!jxWx(Jm9EzxCL* zW1Vi~7mm=w)|}^onB?Wr!wR|PtRFX%&kZ)UJWZGj4Y&u@AQP~5X(?BVOH$0wf zH)H6Fejz=nJDAH8{LV?dp4c_jUI5V0$yH&e5F&3X*+Z7>%4#2Up9?Q4Db*mY2a_*N zz0So18qxd7hptFeWbgu_TJ13$KEuH(Ej5wG?-1+dLXD1jAi2%Kl?ML+Ur2$UCFSV8 zYx869!ab@^4&&6QDv^)jc->cKE5C4n;tW9Mn78{@C8bt>HJK>!SEC{p44nK;*g*JOL=adg9`XQ;n6+H23W*dt(kia)6Lb=qUq8IvZ9 zA=SSG+?S3zW$>72t+urp|FFt(13nCYu50ZOsCSOnG~oXMsGZh|CO7qp=(n>uXa07i z%#6$*qnyrl+C|$lSdc=R&aJ6PG2!QxOT2Vpa+=#$@pbb1)`w-0dy;(^$CjNqOcg5P zSl|);_^+}F9rC9_tTwO zhdSbg@39KKAxnp!$^!;lN|s4_+J*l13Qa+SI|VeSv9;`f9O#jF@#O_)Bjcw%4KOZY zIZj3;au$lWXDu;oz*7(|>>{v_<`^NSM#Y+ri1oMcnQGj{loUry-_h6B7lp01C8dIV zmi)h~^}97t`>SD)x|$`crXY&(B64DUn6(O@HEZSP-?P-cQ+>n+iQm|;-8$K32}>b* z_#|v>b zia08mvMKBa=_~_=hch8V)!V53Z|olxc~vi}q3T~-q0C40yN&%VUzMtDgQ*LZU3gOv znp(q=R>i`=A)EB^G%+pn-G;w-h^}}I^{E>v`BCZV@QA&`bBOfH6kRS$TC`>TUd za>C@#ypd*)#8>h;<{dh{`b-&x>&eEbWFzuSbw!wGJ`z~_#hY&xx*n+L z3NPZUcG$1H26wbrDt<=*VQhgFP|XjBk?>{RnQjP&+_^5>XSn=HUhXkNgTQJB+o6Mz>C=(GTfByJIkNB`#bv+kGPir{9g3c=BQR>de(PYl- z6^`r|4u9(xn+kf;uBAKFn>65wnrQVc8D7)fLdl%SYa(xKCV*_(=IS>A$y@)o;3vLE zwY!%~j=gxFIPw3?uu&tP-%I~mEnPe@+rI>Z4!x+Whq&G#hz&moC$IRNX5RbMXnFB3 zQJ%+3cx6$m#(8R(15^$Y+gcZb{ry4sN+wn~eNgvEMbO4IwXpT3#pO@EKWHdte#2YR z3+IU0VlysZ)JW-irANYM{JON~#m$S6inc)y%E>dN0 ze+o5&*;}lI(a|01>_IHK=<9@srvqY8GR|s4oo-P%1@iAuV2y7)Yhz2LMbjZ(o^ocx zP!fow6SC_V^{nx1WTju*Lv^Vn;Njg1NwIpJ&YJ5m%nn%@JqLiL_@r@(r6-q~E4v^_LQPDc4_` zb3X*fj4=0SY9@*CDc^d;@Unx)nJ?+l>FS1*bns1qiG*lBcLPNmmjKEX_W(~WdOreU08M{9H5;~v95pAZc~7`v*`|KLM6GZ zTq91?l3|!sSEk{#dORK3b#oeSe4v{i`ZQwrrEU|b`cp7F8YW%ahAg9K(0skff2jtr z&F?(|@z4GEQo7;FG?&IYaiYH8M7gGalHOK130SKX^N2y`hqphXgBu$JE_PyJ*EyvS zxlVvj4(x@uwja{N#QZ>V1sB}CZ(i$liIyIUzn62U(!rE$ziH+^}^r}TC%(7E)R7>dDd zv&?X2HZrZV5``c;xdSD|*}epKeYm#Vbx(0d9iRbWKbrR!JivDFcZ6o+*QbLwP9+;* zYD=v>KTa8R{+O%-$tf6AIhGqJH9e)BFXSX)R|j9~*pwLkC@AtKWu{#aEXo2^Q9#ra zfJ9ecg@@}}1TZYC$a;4p@&S}$?pA%HypuU@z!-f)4k*27j@(A+#?Y$^ zA+pYOscLFvV-X}1ADU1fRr%i7ziV4>`69Y*(1U86M8Evkf~VpA$X-FWQds%0sKz3& z!Tu;Ujc!8q8JTAglC3tmW9Sr9HJR4jF;$U?o3Rzmk;vPRD{cXlSYc%nT1IiL*Q)HF z)XoH##+zl?4!*3zm4f@i?^a&&-$-J=ddvv_xzBd)b3fs@Pk1~ni=#bQ2D2SR@+DbC zdOgWvGMep_yTGznxkoT1-3srN+QHN~-Ih4*xs?scR!%Oug(yLXH%F%8!^LMNljwk? zZM+S=_nL5Vzie5TV_u|P?lQoll>{hdfJJ8og+o4~@3BMZSA5?UZyYhNr3VO(sZ)N$ zzu$9;Cy0aK-N9Q~?PG7P(7uP3Q<2{X$shOa@$MMB(=~PBK=;r3ihKo`kX3^e&ZA<} z@kGHv+Rt6Z@zlx}(z>W$AJ(p{vRvxB?Ey5A3GGv;y{76bVd}v5%Dq19&cI!ASjvHs zf~xN~LAhZgn!PP3#^q>CKCasUAw7WlOCiO$dD;Ts0$c0TXglD<20Vx|y?mR#qONyW zKGux)N2D^ka5bH1A*-)KFG1cJhLBxpogcKGh>(Tzlz~boK8!BKt~jsnNhTgm)*F@P zfkba-jnv f%aKF+?hZak*H{Zvxh`r+6BusG`~;Ox?=eVRDQLzv36VHZLRP_zV<2 z3fx6UK2EuF)-^hd7n;_9UG+66S$r@*_>uH15s>KXWz@j==-4=tjo`)v7$d03e1E(A zEy#Bf@-t#O3VbysRa6IL?;}_*M&NoTHqI)BVRpG0=jJBNB2!wQ#clomNLXw$)(Dzw zYMd3bOI(>qY98EVK4bMP1W%u8(3rzz^otVX`>D2(iq~Gg3JDr{#Oci^>?~I5aT`|p zp_}MRGH2?DUv@)So^BDyG@`!hFU4g~R`pb19hY13ND2{X~S9VJ5K?lzZCPB_Exe^`PC3yUKL;!3o zlc_Mb-@!Hd)QDS90PL8 zuP*?dxA0gaa}AVs7P4;OZI3a+&Dcp6o~3IlTvrV0hWduA2I_mHiU1~U20hO^jcE26 z)?oGhCT9c3@%LMxWi@?3Z^L{%YG+-d{KmaxcS>&&;NegpdEH@X+XBvm=9!wnZT7QH zAD40+Br~KVJJ<{Tv@U$w3Zc&qNK2x1XTQH~yXKergVyLq9oPHTmHM@d_1kWWkv2X~ z%;*y%+lf(wOUE9|`#kHOXbqm3T#1Gti^rl*%9S_m)9P-xOWUlOEQkkz4pmHF*-jREE?Qpd9X8}Xqw0p`T~}9<HJ}~p9y`yc0I9v(iW@=u|K5!3 zZcVA53!VD#L;h^l)iFZoUihbUPBvL%B%1yqcz!LP^%?@ST?&l-#p2Bp2RH+U_HpoS zfU+>7rq~5i?&cchLqG#8aTNb#v}yLD{!Oly!;=r;CPYbg!7W^SGk*DB$}v5p+fA#jEt4;Y@M>S99<7^p^x-Xyh}_X=ucmWjUGtHaN` z(Py)McmM5tDOBIx3vSXrDic#c>M>+=D>!7xe$I|~sgwSCRYZu`YGNB_DT!(5vcs

c?QpEzW$b^H;DDgsw*~Yg`s+ zUWgy;Oywejb@F0nxx5rpK_ihC?T1SLAg?EXNU13BdjBw;zg`P-Ukwv^jYw;OU6Wtv-r6zp zjAL2!@y{{_J?0Ufk>GL^><*N&pE|MenF7E5ir9z?^%){l6ZAmkK_r94x%a38!hr68 zS*ja+L{~S@=H1NTG|1ml#uI*0uECEwBO`ATVOcL~K-U%uaS4*$9G54!O<3MRkTu!< zyw^*Y2ImjI-NqJC2-T(B&bs`iEab-A2K-zLsds^!a1ip5s}^~HgC^nx6J;^kYxrs! zuR#}>-t^AZ`He?DtdA*r#u#ZNRQ@kU+E7zM&jJ!pFJAW{8-vo>4Ou zsUT%QXTY84T(AUeJV>AVLTgRrQD*E6x{}fm>)C_B#1Pllo*kvWe@`&F^;p=`#Jw5v zM9tqTzU?H|^@XlzIS-b`xc94b918bnOI!u$|GfPfAdiR=oJCt4|Bd#2&cdXLhf9iH~4xcHxX4Fb?v{1>=A>z@xgtL%D^!FKrq?Qe{wm^=a{v7K@aHvPyT1J4f8jd@zYN}&!TVEP zv+G~_uFNmr@t5!T%Xj?wwDCp!`9%l&`9t{sGKuSk7;9Ss+)jGD%tLqVyyi7?n;)^4 HZ$JEB&@b7} literal 0 HcmV?d00001 diff --git a/trojan-master/asset/Dockerfile b/trojan-master/asset/Dockerfile new file mode 100644 index 0000000..5b63b1f --- /dev/null +++ b/trojan-master/asset/Dockerfile @@ -0,0 +1,23 @@ +FROM --platform=$TARGETPLATFORM centos:7 + +LABEL maintainer="Jrohy " + +ARG TARGETARCH + +ARG VERSION_CHECK="https://api.github.com/repos/Jrohy/trojan/releases/latest" + +ARG DOWNLAOD_URL="https://github.com/Jrohy/trojan/releases/download/" + +ARG SERVICE_URL="https://raw.githubusercontent.com/Jrohy/trojan/master/asset/trojan-web.service" + +ARG SYSTEMCTL_URL="https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py" + +RUN yum install socat bash-completion crontabs iptables openssl unzip -y && \ + LATEST_VERSION=`curl -H 'Cache-Control: no-cache' -s "$VERSION_CHECK" | grep 'tag_name' | cut -d\" -f4` && \ + [[ $TARGETARCH =~ "arm64" ]] && ARCH="arm64" || ARCH="amd64" && \ + curl -fL "$DOWNLAOD_URL/$LATEST_VERSION/trojan-linux-$ARCH" -o /usr/local/bin/trojan && \ + curl -L $SERVICE_URL -o /etc/systemd/system/trojan-web.service && \ + curl -L $SYSTEMCTL_URL -o /usr/bin/systemctl && \ + chmod +x /usr/local/bin/trojan /usr/bin/systemctl && \ + echo "source <(trojan completion bash)" >> ~/.bashrc && \ + yum clean all diff --git a/trojan-master/asset/asset.go b/trojan-master/asset/asset.go new file mode 100644 index 0000000..9a0ce1b --- /dev/null +++ b/trojan-master/asset/asset.go @@ -0,0 +1,12 @@ +package asset + +import "embed" + +//go:embed trojan-install.sh client.json clash-rules.yaml +var f embed.FS + +// GetAsset 获取资源[]byte +func GetAsset(name string) []byte { + data, _ := f.ReadFile(name) + return data +} diff --git a/trojan-master/asset/clash-rules.yaml b/trojan-master/asset/clash-rules.yaml new file mode 100644 index 0000000..c92310f --- /dev/null +++ b/trojan-master/asset/clash-rules.yaml @@ -0,0 +1,117 @@ +# Source: https://github.com/Loyalsoldier/clash-rules +rules: + - RULE-SET,applications,DIRECT + - DOMAIN,clash.razord.top,DIRECT + - DOMAIN,yacd.haishan.me,DIRECT + - RULE-SET,private,DIRECT + - RULE-SET,reject,REJECT + - RULE-SET,icloud,DIRECT + - RULE-SET,apple,DIRECT + - RULE-SET,google,DIRECT + - RULE-SET,proxy,PROXY + - RULE-SET,direct,DIRECT + - RULE-SET,lancidr,DIRECT + - RULE-SET,cncidr,DIRECT + - RULE-SET,telegramcidr,PROXY + - GEOIP,LAN,DIRECT + - GEOIP,CN,DIRECT + - MATCH,PROXY + +rule-providers: + reject: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt" + path: ./ruleset/reject.yaml + interval: 86400 + + icloud: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt" + path: ./ruleset/icloud.yaml + interval: 86400 + + apple: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt" + path: ./ruleset/apple.yaml + interval: 86400 + + google: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt" + path: ./ruleset/google.yaml + interval: 86400 + + proxy: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt" + path: ./ruleset/proxy.yaml + interval: 86400 + + direct: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt" + path: ./ruleset/direct.yaml + interval: 86400 + + private: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt" + path: ./ruleset/private.yaml + interval: 86400 + + gfw: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt" + path: ./ruleset/gfw.yaml + interval: 86400 + + greatfire: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt" + path: ./ruleset/greatfire.yaml + interval: 86400 + + tld-not-cn: + type: http + behavior: domain + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt" + path: ./ruleset/tld-not-cn.yaml + interval: 86400 + + telegramcidr: + type: http + behavior: ipcidr + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt" + path: ./ruleset/telegramcidr.yaml + interval: 86400 + + cncidr: + type: http + behavior: ipcidr + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt" + path: ./ruleset/cncidr.yaml + interval: 86400 + + lancidr: + type: http + behavior: ipcidr + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt" + path: ./ruleset/lancidr.yaml + interval: 86400 + + applications: + type: http + behavior: classical + url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt" + path: ./ruleset/applications.yaml + interval: 86400 \ No newline at end of file diff --git a/trojan-master/asset/client.json b/trojan-master/asset/client.json new file mode 100644 index 0000000..d0c63aa --- /dev/null +++ b/trojan-master/asset/client.json @@ -0,0 +1,33 @@ +{ + "run_type": "client", + "local_addr": "127.0.0.1", + "local_port": 1080, + "remote_addr": "example.com", + "remote_port": 443, + "password": [ + "password1" + ], + "log_level": 1, + "ssl": { + "verify": true, + "verify_hostname": true, + "cert": "", + "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA", + "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", + "sni": "", + "alpn": [ + "h2", + "http/1.1" + ], + "reuse_session": true, + "session_ticket": false, + "curves": "" + }, + "tcp": { + "no_delay": true, + "keep_alive": true, + "reuse_port": false, + "fast_open": false, + "fast_open_qlen": 20 + } +} diff --git a/trojan-master/asset/jetbrains.svg b/trojan-master/asset/jetbrains.svg new file mode 100644 index 0000000..75d4d21 --- /dev/null +++ b/trojan-master/asset/jetbrains.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trojan-master/asset/trojan-install.sh b/trojan-master/asset/trojan-install.sh new file mode 100644 index 0000000..c4d1a3b --- /dev/null +++ b/trojan-master/asset/trojan-install.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# source: https://github.com/trojan-gfw/trojan-quickstart +set -eo pipefail + +# trojan: 0, trojan-go: 1 +TYPE=0 + +INSTALL_VERSION="" + +while [[ $# > 0 ]];do + KEY="$1" + case $KEY in + -v|--version) + INSTALL_VERSION="$2" + echo -e "prepare install $INSTALL_VERSION version..\n" + shift + ;; + -g|--go) + TYPE=1 + ;; + *) + # unknown option + ;; + esac + shift # past argument or value +done +############################# + +function prompt() { + while true; do + read -p "$1 [y/N] " yn + case $yn in + [Yy] ) return 0;; + [Nn]|"" ) return 1;; + esac + done +} + +if [[ $(id -u) != 0 ]]; then + echo Please run this script as root. + exit 1 +fi + +ARCH=$(uname -m 2> /dev/null) +if [[ $ARCH != x86_64 && $ARCH != aarch64 ]];then + echo "not support $ARCH machine". + exit 1 +fi +if [[ $TYPE == 0 && $ARCH != x86_64 ]];then + echo "trojan not support $ARCH machine" + exit 1 +fi + +if [[ $TYPE == 0 ]];then + CHECKVERSION="https://api.github.com/repos/trojan-gfw/trojan/releases/latest" +else + CHECKVERSION="https://api.github.com/repos/p4gefau1t/trojan-go/releases" +fi +NAME=trojan +if [[ -z $INSTALL_VERSION ]];then + VERSION=$(curl -H 'Cache-Control: no-cache' -s "$CHECKVERSION" | grep 'tag_name' | cut -d\" -f4 | sed 's/v//g' | head -n 1) +else + if [[ -z `curl -H 'Cache-Control: no-cache' -s "$CHECKVERSION"|grep 'tag_name'|grep $INSTALL_VERSION` ]];then + echo "no $INSTALL_VERSION version file!" + exit 1 + fi + VERSION=`echo "$INSTALL_VERSION"|sed 's/v//g'` +fi +if [[ $TYPE == 0 ]];then + TARBALL="$NAME-$VERSION-linux-amd64.tar.xz" + DOWNLOADURL="https://github.com/trojan-gfw/$NAME/releases/download/v$VERSION/$TARBALL" +else + [[ $ARCH == x86_64 ]] && TARBALL="trojan-go-linux-amd64.zip" || TARBALL="trojan-go-linux-armv8.zip" + DOWNLOADURL="https://github.com/p4gefau1t/trojan-go/releases/download/v$VERSION/$TARBALL" +fi + +TMPDIR="$(mktemp -d)" +INSTALLPREFIX="/usr/bin/$NAME" +SYSTEMDPREFIX=/etc/systemd/system + +BINARYPATH="$INSTALLPREFIX/$NAME" +CONFIGPATH="/usr/local/etc/$NAME/config.json" +SYSTEMDPATH="$SYSTEMDPREFIX/$NAME.service" + +echo Creating $NAME install directory +mkdir -p $INSTALLPREFIX /usr/local/etc/$NAME + +echo Entering temp directory $TMPDIR... +cd "$TMPDIR" + +echo Downloading $NAME $VERSION... +curl -LO --progress-bar "$DOWNLOADURL" || wget -q --show-progress "$DOWNLOADURL" + +echo Unpacking $NAME $VERSION... +if [[ $TYPE == 0 ]];then + tar xf "$TARBALL" + cd "$NAME" +else + if [[ -z `command -v unzip` ]];then + if [[ `command -v dnf` ]];then + dnf install unzip -y + elif [[ `command -v yum` ]];then + yum install unzip -y + elif [[ `command -v apt-get` ]];then + apt-get install unzip -y + fi + fi + unzip "$TARBALL" + mv trojan-go trojan +fi + +echo Installing $NAME $VERSION to $BINARYPATH... +install -Dm755 "$NAME" "$BINARYPATH" + +echo Installing $NAME server config to $CONFIGPATH... +if ! [[ -f "$CONFIGPATH" ]] || prompt "The server config already exists in $CONFIGPATH, overwrite?"; then + cat > "$CONFIGPATH" << EOF +{ + "run_type": "server", + "local_addr": "0.0.0.0", + "local_port": 443, + "remote_addr": "127.0.0.1", + "remote_port": 80, + "password": [ + "password1", + "password2" + ], + "log_level": 1, + "ssl": { + "cert": "/path/to/certificate.crt", + "key": "/path/to/private.key", + "key_password": "", + "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384", + "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", + "prefer_server_cipher": true, + "alpn": [ + "http/1.1" + ], + "alpn_port_override": { + "h2": 81 + }, + "reuse_session": true, + "session_ticket": false, + "session_timeout": 600, + "plain_http_response": "", + "curves": "", + "dhparam": "" + }, + "tcp": { + "prefer_ipv4": false, + "no_delay": true, + "keep_alive": true, + "reuse_port": false, + "fast_open": false, + "fast_open_qlen": 20 + }, + "mysql": { + "enabled": false, + "server_addr": "127.0.0.1", + "server_port": 3306, + "database": "trojan", + "username": "trojan", + "password": "", + "key": "", + "cert": "", + "ca": "" + } +} +EOF +else + echo Skipping installing $NAME server config... +fi + +if [[ -d "$SYSTEMDPREFIX" ]]; then + echo Installing $NAME systemd service to $SYSTEMDPATH... + [[ $TYPE == 1 ]] && { NAME="trojan-go"; FLAG="-config"; } + cat > "$SYSTEMDPATH" << EOF +[Unit] +Description=$NAME +After=network.target network-online.target nss-lookup.target mysql.service mariadb.service mysqld.service + +[Service] +Type=simple +StandardError=journal +ExecStart=$BINARYPATH $FLAG $CONFIGPATH +ExecReload=/bin/kill -HUP \$MAINPID +Restart=on-failure +RestartSec=3s + +[Install] +WantedBy=multi-user.target +EOF + echo Reloading systemd daemon... + systemctl daemon-reload +fi + +echo Deleting temp directory $TMPDIR... +rm -rf "$TMPDIR" + +echo Done! \ No newline at end of file diff --git a/trojan-master/asset/trojan-web.service b/trojan-master/asset/trojan-web.service new file mode 100644 index 0000000..d61743c --- /dev/null +++ b/trojan-master/asset/trojan-web.service @@ -0,0 +1,15 @@ +[Unit] +Description=trojan-web +Documentation=https://github.com/Jrohy/trojan +After=network.target network-online.target nss-lookup.target mysql.service mariadb.service mysqld.service docker.service + +[Service] +Type=simple +StandardError=journal +ExecStart=/usr/local/bin/trojan web +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure +RestartSec=3s + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/trojan-master/build.sh b/trojan-master/build.sh new file mode 100644 index 0000000..2de4122 --- /dev/null +++ b/trojan-master/build.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +github_token="" + +project="Jrohy/trojan" + +#获取当前的这个脚本所在绝对路径 +shell_path=$(cd `dirname $0`; pwd) + +function uploadfile() { + file=$1 + ctype=$(file -b --mime-type $file) + + curl -H "Authorization: token ${github_token}" -H "Content-Type: ${ctype}" --data-binary @$file "https://uploads.github.com/repos/$project/releases/${release_id}/assets?name=$(basename $file)" + + echo "" +} + +function upload() { + file=$1 + dgst=$1.dgst + openssl dgst -md5 $file | sed 's/([^)]*)//g' >> $dgst + openssl dgst -sha1 $file | sed 's/([^)]*)//g' >> $dgst + openssl dgst -sha256 $file | sed 's/([^)]*)//g' >> $dgst + openssl dgst -sha512 $file | sed 's/([^)]*)//g' >> $dgst + uploadfile $file + uploadfile $dgst +} + +cd $shell_path + +version=`git describe --tags $(git rev-list --tags --max-count=1)` +now=`TZ=Asia/Shanghai date "+%Y%m%d-%H%M"` +go_version=`go version|awk '{print $3,$4}'` +git_version=`git rev-parse HEAD` +ldflags="-w -s -X 'trojan/trojan.MVersion=$version' -X 'trojan/trojan.BuildDate=$now' -X 'trojan/trojan.GoVersion=$go_version' -X 'trojan/trojan.GitVersion=$git_version'" + +GOOS=linux GOARCH=amd64 go build -ldflags "$ldflags" -o "result/trojan-linux-amd64" . +GOOS=linux GOARCH=arm64 go build -ldflags "$ldflags" -o "result/trojan-linux-arm64" . + +if [[ $# == 0 ]];then + cd result + + upload_item=($(ls -l|awk '{print $9}'|xargs -r)) + + curl -X POST -H "Authorization: token ${github_token}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/$project/releases -d '{"tag_name":"'$version'", "name":"'$version'"}' + + sleep 2 + + release_id=`curl -H 'Cache-Control: no-cache' -s https://api.github.com/repos/$project/releases/latest|grep id|awk 'NR==1{print $2}'|sed 's/,//'` + + for item in ${upload_item[@]} + do + upload $item + done + + echo "upload completed!" + + cd $shell_path + + rm -rf result +fi diff --git a/trojan-master/cmd/add.go b/trojan-master/cmd/add.go new file mode 100644 index 0000000..c7ac0a4 --- /dev/null +++ b/trojan-master/cmd/add.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// addCmd represents the add command +var addCmd = &cobra.Command{ + Use: "add", + Short: "添加用户", + Run: func(cmd *cobra.Command, args []string) { + trojan.AddUser() + }, +} + +func init() { + rootCmd.AddCommand(addCmd) +} diff --git a/trojan-master/cmd/clean.go b/trojan-master/cmd/clean.go new file mode 100644 index 0000000..a67ea51 --- /dev/null +++ b/trojan-master/cmd/clean.go @@ -0,0 +1,23 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// cleanCmd represents the clean command +var cleanCmd = &cobra.Command{ + Use: "clean", + Short: "清空指定用户流量", + Long: `传入指定用户名来清空用户流量, 多个用户名空格隔开, 例如: +trojan clean zhangsan lisi +`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + trojan.CleanDataByName(args) + }, +} + +func init() { + rootCmd.AddCommand(cleanCmd) +} diff --git a/trojan-master/cmd/completion.go b/trojan-master/cmd/completion.go new file mode 100644 index 0000000..26f63d1 --- /dev/null +++ b/trojan-master/cmd/completion.go @@ -0,0 +1,30 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "os" +) + +// completionCmd represents the completion command +var completionCmd = &cobra.Command{ + Use: "completion", + Short: "自动命令补全(支持bash和zsh)", + Long: ` +支持bash和zsh的命令补全 +a. bash环境添加下面命令到 ~/.bashrc + source <(trojan completion bash) + +b. zsh环境添加以下命令到~/.zshrc + source <(trojan completion zsh) +`, +} + +func init() { + rootCmd.AddCommand(completionCmd) + completionCmd.AddCommand(&cobra.Command{Use: "bash", Short: "bash命令补全", Run: func(cmd *cobra.Command, args []string) { + rootCmd.GenBashCompletion(os.Stdout) + }}) + completionCmd.AddCommand(&cobra.Command{Use: "zsh", Short: "zsh命令补全", Run: func(cmd *cobra.Command, args []string) { + rootCmd.GenZshCompletion(os.Stdout) + }}) +} diff --git a/trojan-master/cmd/del.go b/trojan-master/cmd/del.go new file mode 100644 index 0000000..a82901f --- /dev/null +++ b/trojan-master/cmd/del.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// delCmd represents the del command +var delCmd = &cobra.Command{ + Use: "del", + Short: "删除用户", + Run: func(cmd *cobra.Command, args []string) { + trojan.DelUser() + }, +} + +func init() { + rootCmd.AddCommand(delCmd) +} diff --git a/trojan-master/cmd/export.go b/trojan-master/cmd/export.go new file mode 100644 index 0000000..4dba671 --- /dev/null +++ b/trojan-master/cmd/export.go @@ -0,0 +1,27 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "trojan/core" + "trojan/util" +) + +// exportCmd represents the export command +var exportCmd = &cobra.Command{ + Use: "export", + Short: "导出数据库sql文件", + Args: cobra.ExactArgs(1), + Run: func(cmd *cobra.Command, args []string) { + mysql := core.GetMysql() + if err := mysql.DumpSql(args[0]); err != nil { + fmt.Println(util.Red(err.Error())) + } else { + fmt.Println(util.Green("导出sql成功!")) + } + }, +} + +func init() { + rootCmd.AddCommand(exportCmd) +} diff --git a/trojan-master/cmd/import.go b/trojan-master/cmd/import.go new file mode 100644 index 0000000..3c0b8e0 --- /dev/null +++ b/trojan-master/cmd/import.go @@ -0,0 +1,27 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "trojan/core" + "trojan/util" +) + +// importCmd represents the import command +var importCmd = &cobra.Command{ + Use: "import", + Short: "导入数据库sql文件", + Args: cobra.ExactArgs(1), + Run: func(cmd *cobra.Command, args []string) { + mysql := core.GetMysql() + if err := mysql.ExecSql(args[0]); err != nil { + fmt.Println(util.Red(err.Error())) + } else { + fmt.Println(util.Green("导入sql成功!")) + } + }, +} + +func init() { + rootCmd.AddCommand(importCmd) +} diff --git a/trojan-master/cmd/info.go b/trojan-master/cmd/info.go new file mode 100644 index 0000000..c1558dc --- /dev/null +++ b/trojan-master/cmd/info.go @@ -0,0 +1,20 @@ +package cmd + +import ( + "trojan/trojan" + + "github.com/spf13/cobra" +) + +// infoCmd represents the info command +var infoCmd = &cobra.Command{ + Use: "info", + Short: "用户信息列表", + Run: func(cmd *cobra.Command, args []string) { + trojan.UserList() + }, +} + +func init() { + rootCmd.AddCommand(infoCmd) +} diff --git a/trojan-master/cmd/log.go b/trojan-master/cmd/log.go new file mode 100644 index 0000000..3e19e7e --- /dev/null +++ b/trojan-master/cmd/log.go @@ -0,0 +1,23 @@ +package cmd + +import ( + "trojan/util" + + "github.com/spf13/cobra" +) + +var line int + +// logCmd represents the log command +var logCmd = &cobra.Command{ + Use: "log", + Short: "查看trojan日志", + Run: func(cmd *cobra.Command, args []string) { + util.Log("trojan", line) + }, +} + +func init() { + logCmd.Flags().IntVarP(&line, "line", "n", 300, "查看日志行数") + rootCmd.AddCommand(logCmd) +} diff --git a/trojan-master/cmd/port.go b/trojan-master/cmd/port.go new file mode 100644 index 0000000..6263158 --- /dev/null +++ b/trojan-master/cmd/port.go @@ -0,0 +1,20 @@ +package cmd + +import ( + "trojan/trojan" + + "github.com/spf13/cobra" +) + +// portCmd represents the info command +var portCmd = &cobra.Command{ + Use: "port", + Short: "修改trojan端口", + Run: func(cmd *cobra.Command, args []string) { + trojan.ChangePort() + }, +} + +func init() { + rootCmd.AddCommand(portCmd) +} diff --git a/trojan-master/cmd/restart.go b/trojan-master/cmd/restart.go new file mode 100644 index 0000000..935eb11 --- /dev/null +++ b/trojan-master/cmd/restart.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// restartCmd represents the restart command +var restartCmd = &cobra.Command{ + Use: "restart", + Short: "重启trojan", + Run: func(cmd *cobra.Command, args []string) { + trojan.Restart() + }, +} + +func init() { + rootCmd.AddCommand(restartCmd) +} diff --git a/trojan-master/cmd/root.go b/trojan-master/cmd/root.go new file mode 100644 index 0000000..a2f75e0 --- /dev/null +++ b/trojan-master/cmd/root.go @@ -0,0 +1,65 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "os" + "trojan/core" + "trojan/trojan" + "trojan/util" +) + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "trojan", + Run: func(cmd *cobra.Command, args []string) { + mainMenu() + }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Println(err) + os.Exit(1) + } +} + +func check() { + if !util.IsExists("/usr/local/etc/trojan/config.json") { + fmt.Println("本机未安装trojan, 正在自动安装...") + trojan.InstallTrojan("") + core.WritePassword(nil) + trojan.InstallTls() + trojan.InstallMysql() + util.SystemctlRestart("trojan-web") + } +} + +func mainMenu() { + check() +exit: + for { + fmt.Println() + fmt.Println(util.Cyan("欢迎使用trojan管理程序")) + fmt.Println() + menuList := []string{"trojan管理", "用户管理", "安装管理", "web管理", "查看配置", "生成json"} + switch util.LoopInput("请选择: ", menuList, false) { + case 1: + trojan.ControlMenu() + case 2: + trojan.UserMenu() + case 3: + trojan.InstallMenu() + case 4: + trojan.WebMenu() + case 5: + trojan.UserList() + case 6: + trojan.GenClientJson() + default: + break exit + } + } +} diff --git a/trojan-master/cmd/start.go b/trojan-master/cmd/start.go new file mode 100644 index 0000000..791e14c --- /dev/null +++ b/trojan-master/cmd/start.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// startCmd represents the start command +var startCmd = &cobra.Command{ + Use: "start", + Short: "启动trojan", + Run: func(cmd *cobra.Command, args []string) { + trojan.Start() + }, +} + +func init() { + rootCmd.AddCommand(startCmd) +} diff --git a/trojan-master/cmd/status.go b/trojan-master/cmd/status.go new file mode 100644 index 0000000..07d834a --- /dev/null +++ b/trojan-master/cmd/status.go @@ -0,0 +1,20 @@ +package cmd + +import ( + "trojan/trojan" + + "github.com/spf13/cobra" +) + +// statusCmd represents the status command +var statusCmd = &cobra.Command{ + Use: "status", + Short: "查看trojan状态", + Run: func(cmd *cobra.Command, args []string) { + trojan.Status(true) + }, +} + +func init() { + rootCmd.AddCommand(statusCmd) +} diff --git a/trojan-master/cmd/stop.go b/trojan-master/cmd/stop.go new file mode 100644 index 0000000..7fdc7f2 --- /dev/null +++ b/trojan-master/cmd/stop.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// stopCmd represents the stop command +var stopCmd = &cobra.Command{ + Use: "stop", + Short: "停止trojan", + Run: func(cmd *cobra.Command, args []string) { + trojan.Stop() + }, +} + +func init() { + rootCmd.AddCommand(stopCmd) +} diff --git a/trojan-master/cmd/tls.go b/trojan-master/cmd/tls.go new file mode 100644 index 0000000..859b1ae --- /dev/null +++ b/trojan-master/cmd/tls.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// tlsCmd represents the tls command +var tlsCmd = &cobra.Command{ + Use: "tls", + Short: "证书安装", + Run: func(cmd *cobra.Command, args []string) { + trojan.InstallTls() + }, +} + +func init() { + rootCmd.AddCommand(tlsCmd) +} diff --git a/trojan-master/cmd/update.go b/trojan-master/cmd/update.go new file mode 100644 index 0000000..7619de5 --- /dev/null +++ b/trojan-master/cmd/update.go @@ -0,0 +1,25 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/trojan" +) + +// upgradeCmd represents the update command +var updateCmd = &cobra.Command{ + Use: "update", + Short: "更新trojan", + Long: "可添加版本号更新特定版本, 比如'trojan update v0.10.0', 不添加版本号则安装最新版", + Args: cobra.MaximumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + version := "" + if len(args) == 1 { + version = args[0] + } + trojan.InstallTrojan(version) + }, +} + +func init() { + rootCmd.AddCommand(updateCmd) +} diff --git a/trojan-master/cmd/updateWeb.go b/trojan-master/cmd/updateWeb.go new file mode 100644 index 0000000..2fb0036 --- /dev/null +++ b/trojan-master/cmd/updateWeb.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "trojan/util" +) + +// updateWebCmd represents the update command +var updateWebCmd = &cobra.Command{ + Use: "updateWeb", + Short: "更新trojan管理程序", + Run: func(cmd *cobra.Command, args []string) { + util.RunWebShell("https://git.io/trojan-install") + }, +} + +func init() { + rootCmd.AddCommand(updateWebCmd) +} diff --git a/trojan-master/cmd/upgrade.go b/trojan-master/cmd/upgrade.go new file mode 100644 index 0000000..19309d1 --- /dev/null +++ b/trojan-master/cmd/upgrade.go @@ -0,0 +1,35 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "trojan/core" + "trojan/trojan" +) + +// upgradeCmd represents the update command +var upgradeCmd = &cobra.Command{ + Use: "upgrade", + Short: "升级数据库和trojan配置文件", +} + +func upgradeConfig() { + domain, _ := core.GetValue("domain") + if domain == "" { + return + } + core.WriteDomain(domain) + trojan.Restart() +} + +func init() { + rootCmd.AddCommand(upgradeCmd) + upgradeCmd.AddCommand(&cobra.Command{Use: "db", Short: "升级数据库", Run: func(cmd *cobra.Command, args []string) { + if err := core.GetMysql().UpgradeDB(); err != nil { + fmt.Println(err) + } + }}) + upgradeCmd.AddCommand(&cobra.Command{Use: "config", Short: "升级配置文件", Run: func(cmd *cobra.Command, args []string) { + upgradeConfig() + }}) +} diff --git a/trojan-master/cmd/version.go b/trojan-master/cmd/version.go new file mode 100644 index 0000000..aa7da1e --- /dev/null +++ b/trojan-master/cmd/version.go @@ -0,0 +1,30 @@ +package cmd + +import ( + "fmt" + "trojan/trojan" + "trojan/util" + + "github.com/spf13/cobra" +) + +// versionCmd represents the Version command +var versionCmd = &cobra.Command{ + Use: "version", + Short: "显示版本号", + Run: func(cmd *cobra.Command, args []string) { + upTime := trojan.UpTime() + trojanVersion := trojan.Version() + fmt.Println() + fmt.Printf("Version: %s\n\n", util.Cyan(trojan.MVersion)) + fmt.Printf("BuildDate: %s\n\n", util.Cyan(trojan.BuildDate)) + fmt.Printf("GoVersion: %s\n\n", util.Cyan(trojan.GoVersion)) + fmt.Printf("GitVersion: %s\n\n", util.Cyan(trojan.GitVersion)) + fmt.Printf("TrojanVersion: %s\n\n", util.Cyan(trojanVersion)) + fmt.Printf("TrojanUpTime: %s\n\n", util.Cyan(upTime)) + }, +} + +func init() { + rootCmd.AddCommand(versionCmd) +} diff --git a/trojan-master/cmd/web.go b/trojan-master/cmd/web.go new file mode 100644 index 0000000..fb02f79 --- /dev/null +++ b/trojan-master/cmd/web.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "trojan/util" + "trojan/web" +) + +var ( + host string + port int + ssl bool + timeout int +) + +// webCmd represents the web command +var webCmd = &cobra.Command{ + Use: "web", + Short: "以web方式启动", + Run: func(cmd *cobra.Command, args []string) { + web.Start(host, port, timeout, ssl) + }, +} + +func init() { + webCmd.Flags().StringVarP(&host, "host", "", "0.0.0.0", "web服务监听地址") + webCmd.Flags().IntVarP(&port, "port", "p", 80, "web服务启动端口") + webCmd.Flags().BoolVarP(&ssl, "ssl", "", false, "web服务是否以https方式运行") + webCmd.Flags().IntVarP(&timeout, "timeout", "t", 120, "登录超时时间(min)") + webCmd.AddCommand(&cobra.Command{Use: "stop", Short: "停止trojan-web", Run: func(cmd *cobra.Command, args []string) { + util.SystemctlStop("trojan-web") + }}) + webCmd.AddCommand(&cobra.Command{Use: "start", Short: "启动trojan-web", Run: func(cmd *cobra.Command, args []string) { + util.SystemctlStart("trojan-web") + }}) + webCmd.AddCommand(&cobra.Command{Use: "restart", Short: "重启trojan-web", Run: func(cmd *cobra.Command, args []string) { + util.SystemctlRestart("trojan-web") + }}) + webCmd.AddCommand(&cobra.Command{Use: "status", Short: "查看trojan-web状态", Run: func(cmd *cobra.Command, args []string) { + fmt.Println(util.SystemctlStatus("trojan-web")) + }}) + webCmd.AddCommand(&cobra.Command{Use: "log", Short: "查看trojan-web日志", Run: func(cmd *cobra.Command, args []string) { + util.Log("trojan-web", 300) + }}) + rootCmd.AddCommand(webCmd) +} diff --git a/trojan-master/core/base.go b/trojan-master/core/base.go new file mode 100644 index 0000000..46b993a --- /dev/null +++ b/trojan-master/core/base.go @@ -0,0 +1,33 @@ +package core + +// Config 结构体 +type Config struct { + RunType string `json:"run_type"` + LocalAddr string `json:"local_addr"` + LocalPort int `json:"local_port"` + RemoteAddr string `json:"remote_addr"` + RemotePort int `json:"remote_port"` + Password []string `json:"password"` + LogLevel int `json:"log_level"` +} + +// SSL 结构体 +type SSL struct { + Cert string `json:"cert"` + Cipher string `json:"cipher"` + CipherTls13 string `json:"cipher_tls13"` + Alpn []string `json:"alpn"` + ReuseSession bool `json:"reuse_session"` + SessionTicket bool `json:"session_ticket"` + Curves string `json:"curves"` + Sni string `json:"sni"` +} + +// TCP 结构体 +type TCP struct { + NoDelay bool `json:"no_delay"` + KeepAlive bool `json:"keep_alive"` + ReusePort bool `json:"reuse_port"` + FastOpen bool `json:"fast_open"` + FastOpenQlen int `json:"fast_open_qlen"` +} diff --git a/trojan-master/core/client.go b/trojan-master/core/client.go new file mode 100644 index 0000000..2134e95 --- /dev/null +++ b/trojan-master/core/client.go @@ -0,0 +1,50 @@ +package core + +import ( + "encoding/json" + "fmt" + "os" + "trojan/asset" +) + +// ClientConfig 结构体 +type ClientConfig struct { + Config + SSl ClientSSL `json:"ssl"` + Tcp ClientTCP `json:"tcp"` +} + +// ClientSSL 结构体 +type ClientSSL struct { + SSL + Verify bool `json:"verify"` + VerifyHostname bool `json:"verify_hostname"` +} + +// ClientTCP 结构体 +type ClientTCP struct { + TCP +} + +// WriteClient 生成客户端json +func WriteClient(port int, password, domain, writePath string) bool { + data := asset.GetAsset("client.json") + config := ClientConfig{} + if err := json.Unmarshal(data, &config); err != nil { + fmt.Println(err) + return false + } + config.RemoteAddr = domain + config.RemotePort = port + config.Password = []string{password} + outData, err := json.MarshalIndent(config, "", " ") + if err != nil { + fmt.Println(err) + return false + } + if err = os.WriteFile(writePath, outData, 0644); err != nil { + fmt.Println(err) + return false + } + return true +} diff --git a/trojan-master/core/leveldb.go b/trojan-master/core/leveldb.go new file mode 100644 index 0000000..7e19536 --- /dev/null +++ b/trojan-master/core/leveldb.go @@ -0,0 +1,41 @@ +package core + +import ( + "github.com/syndtr/goleveldb/leveldb" +) + +var dbPath = "/var/lib/trojan-manager" + +// GetValue 获取leveldb值 +func GetValue(key string) (string, error) { + db, err := leveldb.OpenFile(dbPath, nil) + if err != nil { + return "", err + } + defer db.Close() + result, err := db.Get([]byte(key), nil) + if err != nil { + return "", err + } + return string(result), nil +} + +// SetValue 设置leveldb值 +func SetValue(key string, value string) error { + db, err := leveldb.OpenFile(dbPath, nil) + if err != nil { + return err + } + defer db.Close() + return db.Put([]byte(key), []byte(value), nil) +} + +// DelValue 删除值 +func DelValue(key string) error { + db, err := leveldb.OpenFile(dbPath, nil) + if err != nil { + return err + } + defer db.Close() + return db.Delete([]byte(key), nil) +} diff --git a/trojan-master/core/mysql.go b/trojan-master/core/mysql.go new file mode 100644 index 0000000..d3426d5 --- /dev/null +++ b/trojan-master/core/mysql.go @@ -0,0 +1,412 @@ +package core + +import ( + "crypto/sha256" + "database/sql" + "errors" + "fmt" + mysqlDriver "github.com/go-sql-driver/mysql" + "io" + "log" + "time" + + "strconv" + "strings" + + // mysql sql驱动 + _ "github.com/go-sql-driver/mysql" +) + +// Mysql 结构体 +type Mysql struct { + Enabled bool `json:"enabled"` + ServerAddr string `json:"server_addr"` + ServerPort int `json:"server_port"` + Database string `json:"database"` + Username string `json:"username"` + Password string `json:"password"` + Cafile string `json:"cafile"` +} + +// User 用户表记录结构体 +type User struct { + ID uint + Username string + Password string + EncryptPass string + Quota int64 + Download uint64 + Upload uint64 + UseDays uint + ExpiryDate string +} + +// PageQuery 分页查询的结构体 +type PageQuery struct { + PageNum int + CurPage int + Total int + PageSize int + DataList []*User +} + +// CreateTableSql 创表sql +var CreateTableSql = ` +CREATE TABLE IF NOT EXISTS users ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + username VARCHAR(64) NOT NULL, + password CHAR(56) NOT NULL, + passwordShow VARCHAR(255) NOT NULL, + quota BIGINT NOT NULL DEFAULT 0, + download BIGINT UNSIGNED NOT NULL DEFAULT 0, + upload BIGINT UNSIGNED NOT NULL DEFAULT 0, + useDays int(10) DEFAULT 0, + expiryDate char(10) DEFAULT '', + PRIMARY KEY (id), + INDEX (password) +) DEFAULT CHARSET=utf8mb4; +` + +// GetDB 获取mysql数据库连接 +func (mysql *Mysql) GetDB() *sql.DB { + // 屏蔽mysql驱动包的日志输出 + mysqlDriver.SetLogger(log.New(io.Discard, "", 0)) + conn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", mysql.Username, mysql.Password, mysql.ServerAddr, mysql.ServerPort, mysql.Database) + db, err := sql.Open("mysql", conn) + if err != nil { + fmt.Println(err.Error()) + return nil + } + return db +} + +// CreateTable 不存在trojan user表则自动创建 +func (mysql *Mysql) CreateTable() { + db := mysql.GetDB() + defer db.Close() + if _, err := db.Exec(CreateTableSql); err != nil { + fmt.Println(err) + } +} + +func queryUserList(db *sql.DB, sql string) ([]*User, error) { + var ( + username string + encryptPass string + passShow string + download uint64 + upload uint64 + quota int64 + id uint + useDays uint + expiryDate string + ) + var userList []*User + rows, err := db.Query(sql) + if err != nil { + return nil, err + } + defer rows.Close() + for rows.Next() { + if err := rows.Scan(&id, &username, &encryptPass, &passShow, "a, &download, &upload, &useDays, &expiryDate); err != nil { + return nil, err + } + userList = append(userList, &User{ + ID: id, + Username: username, + Password: passShow, + EncryptPass: encryptPass, + Download: download, + Upload: upload, + Quota: quota, + UseDays: useDays, + ExpiryDate: expiryDate, + }) + } + return userList, nil +} + +func queryUser(db *sql.DB, sql string) (*User, error) { + var ( + username string + encryptPass string + passShow string + download uint64 + upload uint64 + quota int64 + id uint + useDays uint + expiryDate string + ) + row := db.QueryRow(sql) + if err := row.Scan(&id, &username, &encryptPass, &passShow, "a, &download, &upload, &useDays, &expiryDate); err != nil { + return nil, err + } + return &User{ID: id, Username: username, Password: passShow, EncryptPass: encryptPass, Download: download, Upload: upload, Quota: quota, UseDays: useDays, ExpiryDate: expiryDate}, nil +} + +// CreateUser 创建Trojan用户 +func (mysql *Mysql) CreateUser(username string, base64Pass string, originPass string) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + encryPass := sha256.Sum224([]byte(originPass)) + if _, err := db.Exec(fmt.Sprintf("INSERT INTO users(username, password, passwordShow, quota) VALUES ('%s', '%x', '%s', -1);", username, encryPass, base64Pass)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// UpdateUser 更新Trojan用户名和密码 +func (mysql *Mysql) UpdateUser(id uint, username string, base64Pass string, originPass string) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + encryPass := sha256.Sum224([]byte(originPass)) + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET username='%s', password='%x', passwordShow='%s' WHERE id=%d;", username, encryPass, base64Pass, id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// DeleteUser 删除用户 +func (mysql *Mysql) DeleteUser(id uint) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + if userList, err := mysql.GetData(strconv.Itoa(int(id))); err != nil { + return err + } else if userList != nil && len(userList) == 0 { + return fmt.Errorf("不存在id为%d的用户", id) + } + if _, err := db.Exec(fmt.Sprintf("DELETE FROM users WHERE id=%d;", id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// MonthlyResetData 设置了过期时间的用户,每月定时清空使用流量 +func (mysql *Mysql) MonthlyResetData() error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + userList, err := queryUserList(db, "SELECT * FROM users WHERE useDays != 0 AND quota != 0") + if err != nil { + return err + } + for _, user := range userList { + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET download=0, upload=0 WHERE id=%d;", user.ID)); err != nil { + return err + } + } + return nil +} + +// DailyCheckExpire 检查是否有过期,过期了设置流量上限为0 +func (mysql *Mysql) DailyCheckExpire() (bool, error) { + needRestart := false + now := time.Now() + utc, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + return false, err + } + addDay, _ := time.ParseDuration("-24h") + yesterdayStr := now.Add(addDay).In(utc).Format("2006-01-02") + yesterday, _ := time.Parse("2006-01-02", yesterdayStr) + db := mysql.GetDB() + if db == nil { + return false, errors.New("can't connect mysql") + } + defer db.Close() + userList, err := queryUserList(db, "SELECT * FROM users WHERE quota != 0") + if err != nil { + return false, err + } + for _, user := range userList { + if expireDate, err := time.Parse("2006-01-02", user.ExpiryDate); err == nil { + if yesterday.Sub(expireDate).Seconds() >= 0 { + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET quota=0 WHERE id=%d;", user.ID)); err != nil { + return false, err + } + if !needRestart { + needRestart = true + } + } + } + } + return needRestart, nil +} + +// CancelExpire 取消过期时间 +func (mysql *Mysql) CancelExpire(id uint) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET useDays=0, expiryDate='' WHERE id=%d;", id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// SetExpire 设置过期时间 +func (mysql *Mysql) SetExpire(id uint, useDays uint) error { + now := time.Now() + utc, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + fmt.Println(err) + return err + } + addDay, _ := time.ParseDuration(strconv.Itoa(int(24*useDays)) + "h") + expiryDate := now.Add(addDay).In(utc).Format("2006-01-02") + + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET useDays=%d, expiryDate='%s' WHERE id=%d;", useDays, expiryDate, id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// SetQuota 限制流量 +func (mysql *Mysql) SetQuota(id uint, quota int) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET quota=%d WHERE id=%d;", quota, id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// CleanData 清空流量统计 +func (mysql *Mysql) CleanData(id uint) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET download=0, upload=0 WHERE id=%d;", id)); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// CleanDataByName 清空指定用户名流量统计数据 +func (mysql *Mysql) CleanDataByName(usernames []string) error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + defer db.Close() + runSql := "UPDATE users SET download=0, upload=0 WHERE BINARY username in (" + for i, name := range usernames { + runSql = runSql + "'" + name + "'" + if i == len(usernames)-1 { + runSql = runSql + ")" + } else { + runSql = runSql + "," + } + } + if _, err := db.Exec(runSql); err != nil { + fmt.Println(err) + return err + } + return nil +} + +// GetUserByName 通过用户名来获取用户 +func (mysql *Mysql) GetUserByName(name string) *User { + db := mysql.GetDB() + if db == nil { + return nil + } + defer db.Close() + user, err := queryUser(db, fmt.Sprintf("SELECT * FROM users WHERE BINARY username='%s'", name)) + if err != nil { + return nil + } + return user +} + +// GetUserByPass 通过密码来获取用户 +func (mysql *Mysql) GetUserByPass(pass string) *User { + db := mysql.GetDB() + if db == nil { + return nil + } + defer db.Close() + user, err := queryUser(db, fmt.Sprintf("SELECT * FROM users WHERE BINARY passwordShow='%s'", pass)) + if err != nil { + return nil + } + return user +} + +// PageList 通过分页获取用户记录 +func (mysql *Mysql) PageList(curPage int, pageSize int) (*PageQuery, error) { + var ( + total int + ) + + db := mysql.GetDB() + if db == nil { + return nil, errors.New("连接mysql失败") + } + defer db.Close() + offset := (curPage - 1) * pageSize + querySQL := fmt.Sprintf("SELECT * FROM users LIMIT %d, %d", offset, pageSize) + userList, err := queryUserList(db, querySQL) + if err != nil { + fmt.Println(err) + return nil, err + } + db.QueryRow("SELECT COUNT(id) FROM users").Scan(&total) + return &PageQuery{ + CurPage: curPage, + PageSize: pageSize, + Total: total, + DataList: userList, + PageNum: (total + pageSize - 1) / pageSize, + }, nil +} + +// GetData 获取用户记录 +func (mysql *Mysql) GetData(ids ...string) ([]*User, error) { + querySQL := "SELECT * FROM users" + db := mysql.GetDB() + if db == nil { + return nil, errors.New("连接mysql失败") + } + defer db.Close() + if len(ids) > 0 { + querySQL = querySQL + " WHERE id in (" + strings.Join(ids, ",") + ")" + } + userList, err := queryUserList(db, querySQL) + if err != nil { + fmt.Println(err) + return nil, err + } + return userList, nil +} diff --git a/trojan-master/core/server.go b/trojan-master/core/server.go new file mode 100644 index 0000000..4b4ac21 --- /dev/null +++ b/trojan-master/core/server.go @@ -0,0 +1,122 @@ +package core + +import ( + "encoding/json" + "fmt" + "github.com/tidwall/pretty" + "github.com/tidwall/sjson" + "os" +) + +var configPath = "/usr/local/etc/trojan/config.json" + +// ServerConfig 结构体 +type ServerConfig struct { + Config + SSl ServerSSL `json:"ssl"` + Tcp ServerTCP `json:"tcp"` + Mysql Mysql `json:"mysql"` +} + +// ServerSSL 结构体 +type ServerSSL struct { + SSL + Key string `json:"key"` + KeyPassword string `json:"key_password"` + PreferServerCipher bool `json:"prefer_server_cipher"` + SessionTimeout int `json:"session_timeout"` + PlainHttpResponse string `json:"plain_http_response"` + Dhparam string `json:"dhparam"` +} + +// ServerTCP 结构体 +type ServerTCP struct { + TCP + PreferIPv4 bool `json:"prefer_ipv4"` +} + +// Load 加载服务端配置文件 +func Load(path string) []byte { + if path == "" { + path = configPath + } + data, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + return nil + } + return data +} + +// Save 保存服务端配置文件 +func Save(data []byte, path string) bool { + if path == "" { + path = configPath + } + if err := os.WriteFile(path, pretty.Pretty(data), 0644); err != nil { + fmt.Println(err) + return false + } + return true +} + +// GetConfig 获取config配置 +func GetConfig() *ServerConfig { + data := Load("") + config := ServerConfig{} + if err := json.Unmarshal(data, &config); err != nil { + fmt.Println(err) + return nil + } + return &config +} + +// GetMysql 获取mysql连接 +func GetMysql() *Mysql { + return &GetConfig().Mysql +} + +// WriteMysql 写mysql配置 +func WriteMysql(mysql *Mysql) bool { + mysql.Enabled = true + data := Load("") + result, _ := sjson.SetBytes(data, "mysql", mysql) + return Save(result, "") +} + +// WriteTls 写tls配置 +func WriteTls(cert, key, domain string) bool { + data := Load("") + data, _ = sjson.SetBytes(data, "ssl.cert", cert) + data, _ = sjson.SetBytes(data, "ssl.key", key) + data, _ = sjson.SetBytes(data, "ssl.sni", domain) + return Save(data, "") +} + +// WriteDomain 写域名 +func WriteDomain(domain string) bool { + data := Load("") + data, _ = sjson.SetBytes(data, "ssl.sni", domain) + return Save(data, "") +} + +// WritePassword 写密码 +func WritePassword(pass []string) bool { + data := Load("") + data, _ = sjson.SetBytes(data, "password", pass) + return Save(data, "") +} + +// WritePort 写trojan端口 +func WritePort(port int) bool { + data := Load("") + data, _ = sjson.SetBytes(data, "local_port", port) + return Save(data, "") +} + +// WriteLogLevel 写日志等级 +func WriteLogLevel(level int) bool { + data := Load("") + data, _ = sjson.SetBytes(data, "log_level", level) + return Save(data, "") +} diff --git a/trojan-master/core/tools.go b/trojan-master/core/tools.go new file mode 100644 index 0000000..b738c19 --- /dev/null +++ b/trojan-master/core/tools.go @@ -0,0 +1,113 @@ +package core + +import ( + "bufio" + "database/sql" + "encoding/base64" + "errors" + "fmt" + "os" + "strings" + "trojan/util" +) + +// UpgradeDB 升级数据库表结构以及迁移数据 +func (mysql *Mysql) UpgradeDB() error { + db := mysql.GetDB() + if db == nil { + return errors.New("can't connect mysql") + } + var field string + err := db.QueryRow("SHOW COLUMNS FROM users LIKE 'passwordShow';").Scan(&field) + if err == sql.ErrNoRows { + fmt.Println(util.Yellow("正在进行数据库升级, 请稍等..")) + if _, err := db.Exec("ALTER TABLE users ADD COLUMN passwordShow VARCHAR(255) NOT NULL AFTER password;"); err != nil { + fmt.Println(err) + return err + } + userList, err := mysql.GetData() + if err != nil { + fmt.Println(err) + return err + } + for _, user := range userList { + pass, _ := GetValue(fmt.Sprintf("%s_pass", user.Username)) + if pass != "" { + base64Pass := base64.StdEncoding.EncodeToString([]byte(pass)) + if _, err := db.Exec(fmt.Sprintf("UPDATE users SET passwordShow='%s' WHERE id=%d;", base64Pass, user.ID)); err != nil { + fmt.Println(err) + return err + } + DelValue(fmt.Sprintf("%s_pass", user.Username)) + } + } + } + err = db.QueryRow("SHOW COLUMNS FROM users LIKE 'useDays';").Scan(&field) + if err == sql.ErrNoRows { + fmt.Println(util.Yellow("正在进行数据库升级, 请稍等..")) + if _, err := db.Exec(` +ALTER TABLE users +ADD COLUMN useDays int(10) DEFAULT 0, +ADD COLUMN expiryDate char(10) DEFAULT ''; +`); err != nil { + fmt.Println(err) + return err + } + } + var tableName string + err = db.QueryRow(fmt.Sprintf( + "SELECT * FROM information_schema.TABLES WHERE TABLE_NAME = 'users' AND TABLE_SCHEMA = '%s' ", + mysql.Database) + " AND TABLE_COLLATION LIKE 'utf8%';").Scan(&tableName) + if err == sql.ErrNoRows { + tempFile := "temp.sql" + mysql.DumpSql(tempFile) + mysql.ExecSql(tempFile) + os.Remove(tempFile) + } + return nil +} + +// DumpSql 导出sql +func (mysql *Mysql) DumpSql(filePath string) error { + file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + if err != nil { + return err + } + defer file.Close() + writer := bufio.NewWriter(file) + writer.WriteString("DROP TABLE IF EXISTS users;") + writer.WriteString(CreateTableSql) + db := mysql.GetDB() + userList, err := queryUserList(db, "SELECT * FROM users;") + if err != nil { + return err + } + for _, user := range userList { + writer.WriteString(fmt.Sprintf(` +INSERT INTO users(username, password, passwordShow, quota, download, upload, useDays, expiryDate) VALUES ('%s','%s','%s', %d, %d, %d, %d, '%s');`, + user.Username, user.EncryptPass, user.Password, user.Quota, user.Download, user.Upload, user.UseDays, user.ExpiryDate)) + } + writer.WriteString("\n") + writer.Flush() + return nil +} + +// ExecSql 执行sql +func (mysql *Mysql) ExecSql(filePath string) error { + db := mysql.GetDB() + fileByte, err := os.ReadFile(filePath) + if err != nil { + return err + } + sqlStr := string(fileByte) + sqls := strings.Split(strings.Replace(sqlStr, "\r\n", "\n", -1), ";\n") + for _, s := range sqls { + s = strings.TrimSpace(s) + if s != "" { + if _, err = db.Exec(s); err != nil { + return err + } + } + } + return nil +} diff --git a/trojan-master/go.mod b/trojan-master/go.mod new file mode 100644 index 0000000..a87bac4 --- /dev/null +++ b/trojan-master/go.mod @@ -0,0 +1,56 @@ +module trojan + +go 1.21 + +require ( + github.com/appleboy/gin-jwt/v2 v2.9.1 + github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 + github.com/gin-contrib/gzip v0.0.6 + github.com/gin-gonic/gin v1.9.1 + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-sql-driver/mysql v1.7.1 + github.com/gorilla/websocket v1.5.0 + github.com/robfig/cron/v3 v3.0.1 + github.com/shirou/gopsutil v3.21.11+incompatible + github.com/spf13/cobra v1.7.0 + github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tidwall/gjson v1.17.0 + github.com/tidwall/pretty v1.2.1 + github.com/tidwall/sjson v1.2.5 + github.com/tklauser/go-sysconf v0.3.12 // indirect +) + +require ( + github.com/bytedance/sonic v1.10.1 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect + github.com/chenzhuoyu/iasm v0.9.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.15.4 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/leodido/go-urn v1.2.4 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + golang.org/x/arch v0.5.0 // indirect + golang.org/x/crypto v0.13.0 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/trojan-master/go.sum b/trojan-master/go.sum new file mode 100644 index 0000000..ee00776 --- /dev/null +++ b/trojan-master/go.sum @@ -0,0 +1,271 @@ +github.com/appleboy/gin-jwt/v2 v2.9.1 h1:l29et8iLW6omcHltsOP6LLk4s3v4g2FbFs0koxGWVZs= +github.com/appleboy/gin-jwt/v2 v2.9.1/go.mod h1:jwcPZJ92uoC9nOUTOKWoN/f6JZOgMSKlFSHw5/FrRUk= +github.com/appleboy/gofight/v2 v2.1.2 h1:VOy3jow4vIK8BRQJoC/I9muxyYlJ2yb9ht2hZoS3rf4= +github.com/appleboy/gofight/v2 v2.1.2/go.mod h1:frW+U1QZEdDgixycTj4CygQ48yLTUhplt43+Wczp3rw= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM= +github.com/bytedance/sonic v1.10.1 h1:7a1wuFXL1cMy7a3f7/VFcEtriuXQnUBhtoVfOZiaysc= +github.com/bytedance/sonic v1.10.1/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= +github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo= +github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +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/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 h1:XBBHcIb256gUJtLmY22n99HaZTz+r2Z51xUPi01m3wg= +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203/go.mod h1:E1jcSv8FaEny+OP/5k9UxZVw9YFWGj7eI4KR/iOBqCg= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-playground/validator/v10 v10.15.4 h1:zMXza4EpOdooxPel5xDqXEdXG5r+WggpvnAKMsalBjs= +github.com/go-playground/validator/v10 v10.15.4/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +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/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +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/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/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/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +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/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y= +golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +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-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +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.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +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.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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 v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.0-20210107192922-496545a6307b/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= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/trojan-master/install.sh b/trojan-master/install.sh new file mode 100644 index 0000000..5eb312a --- /dev/null +++ b/trojan-master/install.sh @@ -0,0 +1,210 @@ +#!/bin/bash +# Author: Jrohy +# github: https://github.com/Jrohy/trojan + +# Supported invocation modes: +# bash install.sh [--remove] +# source <(curl -fsSL https:///install.sh) [--remove] +if (return 0 2>/dev/null); then + sourced=1 +else + sourced=0 +fi + +#定义操作变量, 0为否, 1为是 +help=0 + +remove=0 + +update=0 + +download_url="https://github.com/Jrohy/trojan/releases/download/" + +version_check="https://api.github.com/repos/Jrohy/trojan/releases/latest" + +service_url="https://raw.githubusercontent.com/Jrohy/trojan/master/asset/trojan-web.service" + +[[ -e /var/lib/trojan-manager ]] && update=1 + +#Centos 临时取消别名 +[[ -f /etc/redhat-release && -z $(echo $SHELL|grep zsh) ]] && unalias -a + +[[ -z $(echo $SHELL|grep zsh) ]] && shell_way="bash" || shell_way="zsh" + +#######color code######## +red="31m" +green="32m" +yellow="33m" +blue="36m" +fuchsia="35m" + +colorEcho(){ + color=$1 + echo -e "\033[${color}${@:2}\033[0m" +} + +#######get params######### +while [[ $# > 0 ]];do + key="$1" + case $key in + --remove) + remove=1 + ;; + -h|--help) + help=1 + ;; + *) + # unknown option + ;; + esac + shift # past argument or value +done +############################# + +help(){ + echo "Usage: bash install.sh [-h|--help] [--remove]" + echo " or: source <(curl -fsSL https:///install.sh) [--remove]" + echo " -h, --help Show help" + echo " --remove remove trojan" + return 0 +} + +removeTrojan() { + #移除trojan + rm -rf /usr/bin/trojan >/dev/null 2>&1 + rm -rf /usr/local/etc/trojan >/dev/null 2>&1 + rm -f /etc/systemd/system/trojan.service >/dev/null 2>&1 + + #移除trojan管理程序 + rm -f /usr/local/bin/trojan >/dev/null 2>&1 + rm -rf /var/lib/trojan-manager >/dev/null 2>&1 + rm -f /etc/systemd/system/trojan-web.service >/dev/null 2>&1 + + systemctl daemon-reload + + #移除trojan的专用db + docker rm -f trojan-mysql trojan-mariadb >/dev/null 2>&1 + rm -rf /home/mysql /home/mariadb >/dev/null 2>&1 + + #移除环境变量 + sed -i '/trojan/d' ~/.${shell_way}rc + source ~/.${shell_way}rc + + colorEcho ${green} "uninstall success!" +} + +checkSys() { + #检查是否为Root + [ $(id -u) != "0" ] && { colorEcho ${red} "Error: You must be root to run this script"; return 1; } + + arch=$(uname -m 2> /dev/null) + if [[ $arch != x86_64 && $arch != aarch64 ]];then + colorEcho $yellow "not support $arch machine". + return 1 + fi + + if [[ `command -v apt-get` ]];then + package_manager='apt-get' + elif [[ `command -v dnf` ]];then + package_manager='dnf' + elif [[ `command -v yum` ]];then + package_manager='yum' + else + colorEcho $red "Not support OS!" + return 1 + fi + + # 缺失/usr/local/bin路径时自动添加 + [[ -z `echo $PATH|grep /usr/local/bin` ]] && { echo 'export PATH=$PATH:/usr/local/bin' >> /etc/bashrc; source /etc/bashrc; } +} + +#安装依赖 +installDependent(){ + if [[ ${package_manager} == 'dnf' || ${package_manager} == 'yum' ]];then + ${package_manager} install socat crontabs bash-completion -y + else + ${package_manager} update + ${package_manager} install socat cron bash-completion xz-utils -y + fi +} + +setupCron() { + if [[ `crontab -l 2>/dev/null|grep acme` ]]; then + if [[ -z `crontab -l 2>/dev/null|grep trojan-web` || `crontab -l 2>/dev/null|grep trojan-web|grep "&"` ]]; then + #计算北京时间早上3点时VPS的实际时间 + origin_time_zone=$(date -R|awk '{printf"%d",$6}') + local_time_zone=${origin_time_zone%00} + beijing_zone=8 + beijing_update_time=3 + diff_zone=$[$beijing_zone-$local_time_zone] + local_time=$[$beijing_update_time-$diff_zone] + if [ $local_time -lt 0 ];then + local_time=$[24+$local_time] + elif [ $local_time -ge 24 ];then + local_time=$[$local_time-24] + fi + crontab -l 2>/dev/null|sed '/acme.sh/d' > crontab.txt + echo "0 ${local_time}"' * * * systemctl stop trojan-web; "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null; systemctl start trojan-web' >> crontab.txt + crontab crontab.txt + rm -f crontab.txt + fi + fi +} + +installTrojan(){ + local show_tip=0 + if [[ $update == 1 ]];then + systemctl stop trojan-web >/dev/null 2>&1 + rm -f /usr/local/bin/trojan + fi + lastest_version=$(curl -H 'Cache-Control: no-cache' -s "$version_check" | grep 'tag_name' | cut -d\" -f4) + echo "正在下载管理程序`colorEcho $blue $lastest_version`版本..." + [[ $arch == x86_64 ]] && bin="trojan-linux-amd64" || bin="trojan-linux-arm64" + curl -L "$download_url/$lastest_version/$bin" -o /usr/local/bin/trojan + chmod +x /usr/local/bin/trojan + if [[ ! -e /etc/systemd/system/trojan-web.service ]];then + show_tip=1 + curl -L $service_url -o /etc/systemd/system/trojan-web.service + systemctl daemon-reload + systemctl enable trojan-web + fi + #命令补全环境变量 + [[ -z $(grep trojan ~/.${shell_way}rc) ]] && echo "source <(trojan completion ${shell_way})" >> ~/.${shell_way}rc + source ~/.${shell_way}rc + if [[ $update == 0 ]];then + colorEcho $green "安装trojan管理程序成功!\n" + echo -e "运行命令`colorEcho $blue trojan`可进行trojan管理\n" + /usr/local/bin/trojan + else + if [[ `cat /usr/local/etc/trojan/config.json|grep -w "\"db\""` ]];then + sed -i "s/\"db\"/\"database\"/g" /usr/local/etc/trojan/config.json + systemctl restart trojan + fi + /usr/local/bin/trojan upgrade db + if [[ -z `cat /usr/local/etc/trojan/config.json|grep sni` ]];then + /usr/local/bin/trojan upgrade config + fi + systemctl restart trojan-web + colorEcho $green "更新trojan管理程序成功!\n" + fi + setupCron + [[ $show_tip == 1 ]] && echo "浏览器访问'`colorEcho $blue https://域名`'可在线trojan多用户管理" +} + +main(){ + [[ ${help} == 1 ]] && help && return + [[ ${remove} == 1 ]] && removeTrojan && return + [[ $update == 0 ]] && echo "正在安装trojan管理程序.." || echo "正在更新trojan管理程序.." + checkSys || return 1 + [[ $update == 0 ]] && installDependent + installTrojan +} + +main "$@" +result=$? + +# Do not terminate the interactive shell when the script was invoked by source. +if [[ $sourced == 1 ]]; then + return $result +fi +exit $result diff --git a/trojan-master/main.go b/trojan-master/main.go new file mode 100644 index 0000000..ce48c8e --- /dev/null +++ b/trojan-master/main.go @@ -0,0 +1,7 @@ +package main + +import "trojan/cmd" + +func main() { + cmd.Execute() +} diff --git a/trojan-master/trojan/client.go b/trojan-master/trojan/client.go new file mode 100644 index 0000000..0baaccc --- /dev/null +++ b/trojan-master/trojan/client.go @@ -0,0 +1,43 @@ +package trojan + +import ( + "encoding/base64" + "fmt" + "trojan/core" + "trojan/util" +) + +var clientPath = "/root/config.json" + +// GenClientJson 生成客户端json +func GenClientJson() { + fmt.Println() + var user core.User + domain, port := GetDomainAndPort() + mysql := core.GetMysql() + userList, err := mysql.GetData() + if err != nil { + fmt.Println(err.Error()) + return + } + if len(userList) == 1 { + user = *userList[0] + } else { + UserList() + choice := util.LoopInput("请选择要生成配置文件的用户序号: ", userList, true) + if choice < 0 { + return + } + user = *userList[choice-1] + } + pass, err := base64.StdEncoding.DecodeString(user.Password) + if err != nil { + fmt.Println(util.Red("Base64解码失败: " + err.Error())) + return + } + if !core.WriteClient(port, string(pass), domain, clientPath) { + fmt.Println(util.Red("生成配置文件失败!")) + } else { + fmt.Println("成功生成配置文件: " + util.Green(clientPath)) + } +} diff --git a/trojan-master/trojan/info.go b/trojan-master/trojan/info.go new file mode 100644 index 0000000..3a5dfdb --- /dev/null +++ b/trojan-master/trojan/info.go @@ -0,0 +1,12 @@ +package trojan + +var ( + // MVersion 程序版本号 + MVersion string + // BuildDate 编译时间 + BuildDate string + // GoVersion go版本 + GoVersion string + // GitVersion git版本 + GitVersion string +) diff --git a/trojan-master/trojan/install.go b/trojan-master/trojan/install.go new file mode 100644 index 0000000..06aba33 --- /dev/null +++ b/trojan-master/trojan/install.go @@ -0,0 +1,224 @@ +package trojan + +import ( + "fmt" + "net" + "runtime" + "strconv" + "strings" + "time" + "trojan/asset" + "trojan/core" + "trojan/util" +) + +var ( + dockerInstallUrl = "https://docker-install.netlify.app/install.sh" + dbDockerRun = "docker run --name trojan-mariadb --restart=always -p %d:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=%s -e MYSQL_ROOT_HOST=%% -e MYSQL_DATABASE=trojan -d mariadb:10.2" +) + +// InstallMenu 安装目录 +func InstallMenu() { + fmt.Println() + menu := []string{"更新trojan", "证书申请", "安装mysql"} + switch util.LoopInput("请选择: ", menu, true) { + case 1: + InstallTrojan("") + case 2: + InstallTls() + case 3: + InstallMysql() + default: + return + } +} + +// InstallDocker 安装docker +func InstallDocker() { + if !util.CheckCommandExists("docker") { + util.RunWebShell(dockerInstallUrl) + fmt.Println() + } +} + +// InstallTrojan 安装trojan +func InstallTrojan(version string) { + fmt.Println() + data := string(asset.GetAsset("trojan-install.sh")) + checkTrojan := util.ExecCommandWithResult("systemctl list-unit-files|grep trojan.service") + if (checkTrojan == "" && runtime.GOARCH != "amd64") || Type() == "trojan-go" { + data = strings.ReplaceAll(data, "TYPE=0", "TYPE=1") + } + if version != "" { + data = strings.ReplaceAll(data, "INSTALL_VERSION=\"\"", "INSTALL_VERSION=\""+version+"\"") + } + util.ExecCommand(data) + util.OpenPort(443) + util.SystemctlRestart("trojan") + util.SystemctlEnable("trojan") +} + +// InstallTls 安装证书 +func InstallTls() { + domain := "" + server := "letsencrypt" + fmt.Println() + choice := util.LoopInput("请选择使用证书方式: ", []string{"Let's Encrypt 证书", "ZeroSSL 证书", "BuyPass 证书", "自定义证书路径"}, true) + if choice < 0 { + return + } else if choice == 4 { + crtFile := util.Input("请输入证书的cert文件路径: ", "") + keyFile := util.Input("请输入证书的key文件路径: ", "") + if !util.IsExists(crtFile) || !util.IsExists(keyFile) { + fmt.Println("输入的cert或者key文件不存在!") + } else { + domain = util.Input("请输入此证书对应的域名: ", "") + if domain == "" { + fmt.Println("输入域名为空!") + return + } + core.WriteTls(crtFile, keyFile, domain) + } + } else { + if choice == 2 { + server = "zerossl" + } else if choice == 3 { + server = "buypass" + } + localIP := util.GetLocalIP() + fmt.Printf("本机ip: %s\n", localIP) + for { + domain = util.Input("请输入申请证书的域名: ", "") + ipList, err := net.LookupIP(domain) + fmt.Printf("%s 解析到的ip: %v\n", domain, ipList) + if err != nil { + fmt.Println(err) + fmt.Println("域名有误,请重新输入") + continue + } + checkIp := false + for _, ip := range ipList { + if localIP == ip.String() { + checkIp = true + } + } + if checkIp { + break + } else { + fmt.Println("输入的域名和本机ip不一致, 请重新输入!") + } + } + util.InstallPack("socat") + if !util.IsExists("/root/.acme.sh/acme.sh") { + util.RunWebShell("https://get.acme.sh") + } + util.SystemctlStop("trojan-web") + util.OpenPort(80) + checkResult := util.ExecCommandWithResult("/root/.acme.sh/acme.sh -v|tr -cd '[0-9]'") + acmeVersion, _ := strconv.Atoi(checkResult) + if acmeVersion < 300 { + util.ExecCommand("/root/.acme.sh/acme.sh --upgrade") + } + if server != "letsencrypt" { + var email string + for { + email = util.Input(fmt.Sprintf("请输入申请%s域名所需的邮箱: ", server), "") + if email == "" { + fmt.Println("申请域名的邮箱地址为空!") + return + } else if util.VerifyEmailFormat(email) { + break + } else { + fmt.Println("邮箱格式不正确, 请重新输入!") + } + } + util.ExecCommand(fmt.Sprintf("bash /root/.acme.sh/acme.sh --server %s --register-account -m %s", server, email)) + } + issueCommand := fmt.Sprintf("bash /root/.acme.sh/acme.sh --issue -d %s --debug --standalone --keylength ec-256 --force --server %s", domain, server) + if server == "buypass" { + issueCommand = issueCommand + " --days 170" + } + util.ExecCommand(issueCommand) + crtFile := "/root/.acme.sh/" + domain + "_ecc" + "/fullchain.cer" + keyFile := "/root/.acme.sh/" + domain + "_ecc" + "/" + domain + ".key" + core.WriteTls(crtFile, keyFile, domain) + } + Restart() + util.SystemctlRestart("trojan-web") + fmt.Println() +} + +// InstallMysql 安装mysql +func InstallMysql() { + var ( + mysql core.Mysql + choice int + ) + fmt.Println() + if util.IsExists("/.dockerenv") { + choice = 2 + } else { + choice = util.LoopInput("请选择: ", []string{"安装docker版mysql(mariadb)", "输入自定义mysql连接"}, true) + } + if choice < 0 { + return + } else if choice == 1 { + mysql = core.Mysql{ServerAddr: "127.0.0.1", ServerPort: util.RandomPort(), Password: util.RandString(8, util.LETTER+util.DIGITS), Username: "root", Database: "trojan"} + InstallDocker() + fmt.Println(fmt.Sprintf(dbDockerRun, mysql.ServerPort, mysql.Password)) + if util.CheckCommandExists("setenforce") { + util.ExecCommand("setenforce 0") + } + util.OpenPort(mysql.ServerPort) + util.ExecCommand(fmt.Sprintf(dbDockerRun, mysql.ServerPort, mysql.Password)) + db := mysql.GetDB() + for { + fmt.Printf("%s mariadb启动中,请稍等...\n", time.Now().Format("2006-01-02 15:04:05")) + err := db.Ping() + if err == nil { + db.Close() + break + } else { + time.Sleep(2 * time.Second) + } + } + fmt.Println("mariadb启动成功!") + } else if choice == 2 { + mysql = core.Mysql{} + for { + for { + mysqlUrl := util.Input("请输入mysql连接地址(格式: host:port), 默认连接地址为127.0.0.1:3306, 使用直接回车, 否则输入自定义连接地址: ", + "127.0.0.1:3306") + urlInfo := strings.Split(mysqlUrl, ":") + if len(urlInfo) != 2 { + fmt.Printf("输入的%s不符合匹配格式(host:port)\n", mysqlUrl) + continue + } + port, err := strconv.Atoi(urlInfo[1]) + if err != nil { + fmt.Printf("%s不是数字\n", urlInfo[1]) + continue + } + mysql.ServerAddr, mysql.ServerPort = urlInfo[0], port + break + } + mysql.Username = util.Input("请输入mysql的用户名(回车使用root): ", "root") + mysql.Password = util.Input(fmt.Sprintf("请输入mysql %s用户的密码: ", mysql.Username), "") + db := mysql.GetDB() + if db != nil && db.Ping() == nil { + mysql.Database = util.Input("请输入使用的数据库名(不存在可自动创建, 回车使用trojan): ", "trojan") + db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s;", mysql.Database)) + break + } else { + fmt.Println("连接mysql失败, 请重新输入") + } + } + } + mysql.CreateTable() + core.WriteMysql(&mysql) + if userList, _ := mysql.GetData(); len(userList) == 0 { + AddUser() + } + Restart() + fmt.Println() +} diff --git a/trojan-master/trojan/trojan.go b/trojan-master/trojan/trojan.go new file mode 100644 index 0000000..6da673c --- /dev/null +++ b/trojan-master/trojan/trojan.go @@ -0,0 +1,150 @@ +package trojan + +import ( + "errors" + "fmt" + "os" + "os/signal" + "runtime" + "strconv" + "strings" + "trojan/core" + "trojan/util" +) + +// ControlMenu Trojan控制菜单 +func ControlMenu() { + fmt.Println() + tType := Type() + if tType == "trojan" { + tType = "trojan-go" + } else { + tType = "trojan" + } + menu := []string{"启动trojan", "停止trojan", "重启trojan", "查看trojan状态", "查看trojan日志", "修改trojan端口"} + menu = append(menu, "切换为"+tType) + switch util.LoopInput("请选择: ", menu, true) { + case 1: + Start() + case 2: + Stop() + case 3: + Restart() + case 4: + Status(true) + case 5: + go util.Log("trojan", 300) + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, os.Kill) + //阻塞 + <-c + case 6: + ChangePort() + case 7: + if err := SwitchType(tType); err != nil { + fmt.Println(err) + } + } +} + +// Restart 重启trojan +func Restart() { + util.OpenPort(core.GetConfig().LocalPort) + util.SystemctlRestart("trojan") +} + +// Start 启动trojan +func Start() { + util.OpenPort(core.GetConfig().LocalPort) + util.SystemctlStart("trojan") +} + +// Stop 停止trojan +func Stop() { + util.SystemctlStop("trojan") +} + +// Status 获取trojan状态 +func Status(isPrint bool) string { + result := util.SystemctlStatus("trojan") + if isPrint { + fmt.Println(result) + } + return result +} + +// UpTime Trojan运行时间 +func UpTime() string { + result := strings.TrimSpace(util.ExecCommandWithResult("ps -Ao etime,args|grep -v grep|grep /usr/local/etc/trojan/config.json")) + resultSlice := strings.Split(result, " ") + if len(resultSlice) > 0 { + return resultSlice[0] + } + return "" +} + +// ChangePort 修改trojan端口 +func ChangePort() { + config := core.GetConfig() + oldPort := config.LocalPort + randomPort := util.RandomPort() + fmt.Println("当前trojan端口: " + util.Green(strconv.Itoa(oldPort))) + newPortStr := util.Input(fmt.Sprintf("请输入新的trojan端口(若要使用随机端口%s直接回车即可): ", util.Blue(strconv.Itoa(randomPort))), strconv.Itoa(randomPort)) + newPort, err := strconv.Atoi(newPortStr) + if err != nil { + fmt.Println("修改端口失败: " + err.Error()) + return + } + if core.WritePort(newPort) { + util.OpenPort(newPort) + fmt.Println(util.Green("端口修改成功!")) + Restart() + } else { + fmt.Println(util.Red("端口修改成功!")) + } +} + +// Version Trojan版本 +func Version() string { + flag := "-v" + if Type() == "trojan-go" { + flag = "-version" + } + result := strings.TrimSpace(util.ExecCommandWithResult("/usr/bin/trojan/trojan " + flag)) + if len(result) == 0 { + return "" + } + firstLine := strings.Split(result, "\n")[0] + tempSlice := strings.Split(firstLine, " ") + return tempSlice[len(tempSlice)-1] +} + +// SwitchType 切换Trojan类型 +func SwitchType(tType string) error { + ARCH := runtime.GOARCH + if ARCH != "amd64" && ARCH != "arm64" { + return errors.New("not support " + ARCH + " machine") + } + if tType == "trojan" && ARCH != "amd64" { + return errors.New("trojan not support " + ARCH + " machine") + } + if err := core.SetValue("trojanType", tType); err != nil { + return err + } + InstallTrojan("") + return nil +} + +// Type Trojan类型 +func Type() string { + tType, _ := core.GetValue("trojanType") + if tType == "" { + if strings.Contains(Status(false), "trojan-go") { + tType = "trojan-go" + } else { + tType = "trojan" + } + _ = core.SetValue("trojanType", tType) + } + return tType +} diff --git a/trojan-master/trojan/user.go b/trojan-master/trojan/user.go new file mode 100644 index 0000000..1d4e9c1 --- /dev/null +++ b/trojan-master/trojan/user.go @@ -0,0 +1,196 @@ +package trojan + +import ( + "encoding/base64" + "fmt" + "net/url" + "strconv" + "strings" + "trojan/core" + "trojan/util" +) + +// UserMenu 用户管理菜单 +func UserMenu() { + fmt.Println() + menu := []string{"新增用户", "删除用户", "限制流量", "清空流量", "设置限期", "取消限期"} + switch util.LoopInput("请选择: ", menu, false) { + case 1: + AddUser() + case 2: + DelUser() + case 3: + SetUserQuota() + case 4: + CleanData() + case 5: + SetupExpire() + case 6: + CancelExpire() + } +} + +// AddUser 添加用户 +func AddUser() { + randomUser := util.RandString(4, util.LETTER) + randomPass := util.RandString(8, util.LETTER+util.DIGITS) + inputUser := util.Input(fmt.Sprintf("生成随机用户名: %s, 使用直接回车, 否则输入自定义用户名: ", randomUser), randomUser) + if inputUser == "admin" { + fmt.Println(util.Yellow("不能新建用户名为'admin'的用户!")) + return + } + mysql := core.GetMysql() + if user := mysql.GetUserByName(inputUser); user != nil { + fmt.Println(util.Yellow("已存在用户名为: " + inputUser + " 的用户!")) + return + } + inputPass := util.Input(fmt.Sprintf("生成随机密码: %s, 使用直接回车, 否则输入自定义密码: ", randomPass), randomPass) + base64Pass := base64.StdEncoding.EncodeToString([]byte(inputPass)) + if user := mysql.GetUserByPass(base64Pass); user != nil { + fmt.Println(util.Yellow("已存在密码为: " + inputPass + " 的用户!")) + return + } + if mysql.CreateUser(inputUser, base64Pass, inputPass) == nil { + fmt.Println("新增用户成功!") + } +} + +// DelUser 删除用户 +func DelUser() { + userList := UserList() + mysql := core.GetMysql() + choice := util.LoopInput("请选择要删除的用户序号: ", userList, true) + if choice == -1 { + return + } + if mysql.DeleteUser(userList[choice-1].ID) == nil { + fmt.Println("删除用户成功!") + Restart() + } +} + +// SetUserQuota 限制用户流量 +func SetUserQuota() { + var ( + limit int + err error + ) + userList := UserList() + mysql := core.GetMysql() + choice := util.LoopInput("请选择要限制流量的用户序号: ", userList, true) + if choice == -1 { + return + } + for { + quota := util.Input("请输入用户"+userList[choice-1].Username+"限制的流量大小(单位byte)", "") + limit, err = strconv.Atoi(quota) + if err != nil { + fmt.Printf("%s 不是数字, 请重新输入!\n", quota) + } else { + break + } + } + if mysql.SetQuota(userList[choice-1].ID, limit) == nil { + fmt.Println("成功设置用户" + userList[choice-1].Username + "限制流量" + util.Bytefmt(uint64(limit))) + } +} + +// CleanData 清空用户流量 +func CleanData() { + userList := UserList() + mysql := core.GetMysql() + choice := util.LoopInput("请选择要清空流量的用户序号: ", userList, true) + if choice == -1 { + return + } + if mysql.CleanData(userList[choice-1].ID) == nil { + fmt.Println("清空流量成功!") + } +} + +// CancelExpire 取消限期 +func CancelExpire() { + userList := UserList() + mysql := core.GetMysql() + choice := util.LoopInput("请选择要取消限期的用户序号: ", userList, true) + if choice == -1 { + return + } + if userList[choice-1].UseDays == 0 { + fmt.Println(util.Yellow("选择的用户未设置限期!")) + return + } + if mysql.CancelExpire(userList[choice-1].ID) == nil { + fmt.Println("取消限期成功!") + } +} + +// SetupExpire 设置限期 +func SetupExpire() { + userList := UserList() + mysql := core.GetMysql() + choice := util.LoopInput("请选择要设置限期的用户序号: ", userList, true) + if choice == -1 { + return + } + useDayStr := util.Input("请输入要限制使用的天数: ", "") + if useDayStr == "" { + return + } else if strings.Contains(useDayStr, "-") { + fmt.Println(util.Yellow("天数不能为负数")) + return + } else if !util.IsInteger(useDayStr) { + fmt.Println(util.Yellow("输入为非整数!")) + return + } + useDays, _ := strconv.Atoi(useDayStr) + if mysql.SetExpire(userList[choice-1].ID, uint(useDays)) == nil { + fmt.Println("设置限期成功!") + } +} + +// CleanDataByName 清空指定用户流量 +func CleanDataByName(usernames []string) { + mysql := core.GetMysql() + if err := mysql.CleanDataByName(usernames); err != nil { + fmt.Println(err.Error()) + } else { + fmt.Println("清空流量成功!") + } +} + +// UserList 获取用户列表并打印显示 +func UserList(ids ...string) []*core.User { + mysql := core.GetMysql() + userList, err := mysql.GetData(ids...) + if err != nil { + fmt.Println(err.Error()) + return nil + } + domain, port := GetDomainAndPort() + for i, k := range userList { + pass, err := base64.StdEncoding.DecodeString(k.Password) + if err != nil { + pass = []byte("") + } + fmt.Printf("%d.\n", i+1) + fmt.Println("用户名: " + k.Username) + fmt.Println("密码: " + string(pass)) + fmt.Println("上传流量: " + util.Cyan(util.Bytefmt(k.Upload))) + fmt.Println("下载流量: " + util.Cyan(util.Bytefmt(k.Download))) + if k.Quota < 0 { + fmt.Println("流量限额: " + util.Cyan("无限制")) + } else { + fmt.Println("流量限额: " + util.Cyan(util.Bytefmt(uint64(k.Quota)))) + } + if k.UseDays == 0 { + fmt.Println("到期日期: " + util.Cyan("无限制")) + } else { + fmt.Println("到期日期: " + util.Cyan(k.ExpiryDate)) + } + remark := url.QueryEscape(fmt.Sprintf("%s:%d", domain, port)) + fmt.Println("分享链接: " + util.Green(fmt.Sprintf("trojan://%s@%s:%d#%s", string(pass), domain, port, remark))) + fmt.Println() + } + return userList +} diff --git a/trojan-master/trojan/web.go b/trojan-master/trojan/web.go new file mode 100644 index 0000000..1a9cc20 --- /dev/null +++ b/trojan-master/trojan/web.go @@ -0,0 +1,56 @@ +package trojan + +import ( + "crypto/sha256" + "fmt" + "trojan/core" + "trojan/util" +) + +// WebMenu web管理菜单 +func WebMenu() { + fmt.Println() + menu := []string{"重置web管理员密码", "修改显示的域名(非申请证书)"} + switch util.LoopInput("请选择: ", menu, true) { + case 1: + ResetAdminPass() + case 2: + SetDomain("") + } +} + +// ResetAdminPass 重置管理员密码 +func ResetAdminPass() { + inputPass := util.Input("请输入admin用户密码: ", "") + if inputPass == "" { + fmt.Println("撤销更改!") + } else { + encryPass := sha256.Sum224([]byte(inputPass)) + err := core.SetValue("admin_pass", fmt.Sprintf("%x", encryPass)) + if err == nil { + fmt.Println(util.Green("重置admin密码成功!")) + } else { + fmt.Println(err) + } + } +} + +// SetDomain 设置显示的域名 +func SetDomain(domain string) { + if domain == "" { + domain = util.Input("请输入要显示的域名地址: ", "") + } + if domain == "" { + fmt.Println("撤销更改!") + } else { + core.WriteDomain(domain) + Restart() + fmt.Println("修改domain成功!") + } +} + +// GetDomainAndPort 获取域名和端口 +func GetDomainAndPort() (string, int) { + config := core.GetConfig() + return config.SSl.Sni, config.LocalPort +} diff --git a/trojan-master/util/bytefmt.go b/trojan-master/util/bytefmt.go new file mode 100644 index 0000000..65c7619 --- /dev/null +++ b/trojan-master/util/bytefmt.go @@ -0,0 +1,66 @@ +package util + +import ( + "strconv" + "strings" +) + +const ( + // BYTE 字节 + BYTE = 1 << (10 * iota) + // KILOBYTE 千字节 + KILOBYTE + // MEGABYTE 兆字节 + MEGABYTE + // GIGABYTE 吉字节 + GIGABYTE + // TERABYTE 太字节 + TERABYTE + // PETABYTE 拍字节 + PETABYTE + // EXABYTE 艾字节 + EXABYTE +) + +// Bytefmt returns a human-readable byte string of the form 10M, 12.5K, and so forth. The following units are available: +// E: Exabyte +// P: Petabyte +// T: Terabyte +// G: Gigabyte +// M: Megabyte +// K: Kilobyte +// B: Byte +// The unit that results in the smallest number greater than or equal to 1 is always chosen. +func Bytefmt(bytes uint64) string { + unit := "" + value := float64(bytes) + + switch { + case bytes >= EXABYTE: + unit = "E" + value = value / EXABYTE + case bytes >= PETABYTE: + unit = "P" + value = value / PETABYTE + case bytes >= TERABYTE: + unit = "T" + value = value / TERABYTE + case bytes >= GIGABYTE: + unit = "G" + value = value / GIGABYTE + case bytes >= MEGABYTE: + unit = "M" + value = value / MEGABYTE + case bytes >= KILOBYTE: + unit = "K" + value = value / KILOBYTE + case bytes >= BYTE: + unit = "B" + case bytes == 0: + return "0B" + } + + result := strconv.FormatFloat(value, 'f', 2, 64) + result = strings.TrimSuffix(result, ".0") + return result + unit +} diff --git a/trojan-master/util/command.go b/trojan-master/util/command.go new file mode 100644 index 0000000..9863050 --- /dev/null +++ b/trojan-master/util/command.go @@ -0,0 +1,155 @@ +package util + +import ( + "bufio" + "fmt" + "io" + "net/http" + "os/exec" + "strings" +) + +func systemctlReplace(out string) (bool, error) { + var ( + err error + isReplace bool + ) + if IsExists("/.dockerenv") && strings.Contains(out, "Failed to get D-Bus") { + isReplace = true + fmt.Println(Yellow("正在下载并替换适配的systemctl。。")) + if err = ExecCommand("curl -L https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py -o /usr/bin/systemctl && chmod +x /usr/bin/systemctl"); err != nil { + return isReplace, err + } + fmt.Println() + } + return isReplace, err +} + +func systemctlBase(name, operate string) (string, error) { + out, err := exec.Command("bash", "-c", fmt.Sprintf("systemctl %s %s", operate, name)).CombinedOutput() + if v, _ := systemctlReplace(string(out)); v { + out, err = exec.Command("bash", "-c", fmt.Sprintf("systemctl %s %s", operate, name)).CombinedOutput() + } + return string(out), err +} + +// SystemctlStart 服务启动 +func SystemctlStart(name string) { + if _, err := systemctlBase(name, "start"); err != nil { + fmt.Println(Red(fmt.Sprintf("启动%s失败!", name))) + } else { + fmt.Println(Green(fmt.Sprintf("启动%s成功!", name))) + } +} + +// SystemctlStop 服务停止 +func SystemctlStop(name string) { + if _, err := systemctlBase(name, "stop"); err != nil { + fmt.Println(Red(fmt.Sprintf("停止%s失败!", name))) + } else { + fmt.Println(Green(fmt.Sprintf("停止%s成功!", name))) + } +} + +// SystemctlRestart 服务重启 +func SystemctlRestart(name string) { + if _, err := systemctlBase(name, "restart"); err != nil { + fmt.Println(Red(fmt.Sprintf("重启%s失败!", name))) + } else { + fmt.Println(Green(fmt.Sprintf("重启%s成功!", name))) + } +} + +// SystemctlEnable 服务设置开机自启 +func SystemctlEnable(name string) { + if _, err := systemctlBase(name, "enable"); err != nil { + fmt.Println(Red(fmt.Sprintf("设置%s开机自启失败!", name))) + } +} + +// SystemctlStatus 服务状态查看 +func SystemctlStatus(name string) string { + out, _ := systemctlBase(name, "status") + return out +} + +// CheckCommandExists 检查命令是否存在 +func CheckCommandExists(command string) bool { + if _, err := exec.LookPath(command); err != nil { + return false + } + return true +} + +// RunWebShell 运行网上的脚本 +func RunWebShell(webShellPath string) { + if !strings.HasPrefix(webShellPath, "http") && !strings.HasPrefix(webShellPath, "https") { + fmt.Printf("shell path must start with http or https!") + return + } + resp, err := http.Get(webShellPath) + if err != nil { + fmt.Println(err.Error()) + } + defer resp.Body.Close() + installShell, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println(err.Error()) + } + ExecCommand(string(installShell)) +} + +// ExecCommand 运行命令并实时查看运行结果 +func ExecCommand(command string) error { + cmd := exec.Command("bash", "-c", command) + + stdout, _ := cmd.StdoutPipe() + stderr, _ := cmd.StderrPipe() + + if err := cmd.Start(); err != nil { + fmt.Println("Error:The command is err: ", err.Error()) + return err + } + ch := make(chan string, 100) + stdoutScan := bufio.NewScanner(stdout) + stderrScan := bufio.NewScanner(stderr) + go func() { + for stdoutScan.Scan() { + line := stdoutScan.Text() + ch <- line + } + }() + go func() { + for stderrScan.Scan() { + line := stderrScan.Text() + ch <- line + } + }() + var err error + go func() { + err = cmd.Wait() + if err != nil && !strings.Contains(err.Error(), "exit status") { + fmt.Println("wait:", err.Error()) + } + close(ch) + }() + for line := range ch { + fmt.Println(line) + } + return err +} + +// ExecCommandWithResult 运行命令并获取结果 +func ExecCommandWithResult(command string) string { + out, err := exec.Command("bash", "-c", command).CombinedOutput() + if strings.Contains(command, "systemctl") { + if v, _ := systemctlReplace(string(out)); v { + out, err = exec.Command("bash", "-c", command).CombinedOutput() + } + } + if err != nil && !strings.Contains(err.Error(), "exit status") { + fmt.Println("err: " + err.Error()) + return "" + } + return string(out) +} diff --git a/trojan-master/util/linux.go b/trojan-master/util/linux.go new file mode 100644 index 0000000..0f2878f --- /dev/null +++ b/trojan-master/util/linux.go @@ -0,0 +1,121 @@ +package util + +import ( + "bufio" + "fmt" + "io" + "math/rand" + "net" + "net/http" + "os" + "os/exec" + "strconv" + "time" +) + +// PortIsUse 判断端口是否占用 +func PortIsUse(port int) bool { + _, tcpError := net.DialTimeout("tcp", fmt.Sprintf(":%d", port), time.Millisecond*50) + udpAddr, _ := net.ResolveUDPAddr("udp4", fmt.Sprintf(":%d", port)) + udpConn, udpError := net.ListenUDP("udp", udpAddr) + if udpConn != nil { + defer udpConn.Close() + } + return tcpError == nil || udpError != nil +} + +// RandomPort 获取没占用的随机端口 +func RandomPort() int { + for { + rand.New(rand.NewSource(time.Now().UnixNano())) + newPort := rand.Intn(65536) + if !PortIsUse(newPort) { + return newPort + } + } +} + +// IsExists 检测指定路径文件或者文件夹是否存在 +func IsExists(path string) bool { + _, err := os.Stat(path) //os.Stat获取文件信息 + if err != nil { + if os.IsExist(err) { + return true + } + return false + } + return true +} + +// GetLocalIP 获取本机ipv4地址 +func GetLocalIP() string { + resp, err := http.Get("http://api.ipify.org") + if err != nil { + resp, _ = http.Get("http://icanhazip.com") + } + defer resp.Body.Close() + s, _ := io.ReadAll(resp.Body) + return string(s) +} + +// InstallPack 安装指定名字软件 +func InstallPack(name string) { + if !CheckCommandExists(name) { + if CheckCommandExists("yum") { + ExecCommand("yum install -y " + name) + } else if CheckCommandExists("apt-get") { + ExecCommand("apt-get update") + ExecCommand("apt-get install -y " + name) + } + } +} + +// OpenPort 开通指定端口 +func OpenPort(port int) { + if CheckCommandExists("firewall-cmd") { + ExecCommand(fmt.Sprintf("firewall-cmd --zone=public --add-port=%d/tcp --add-port=%d/udp --permanent >/dev/null 2>&1", port, port)) + ExecCommand("firewall-cmd --reload >/dev/null 2>&1") + } else { + if len(ExecCommandWithResult(fmt.Sprintf(`iptables -nvL --line-number|grep -w "%d"`, port))) > 0 { + return + } + ExecCommand(fmt.Sprintf("iptables -I INPUT -p tcp --dport %d -j ACCEPT", port)) + ExecCommand(fmt.Sprintf("iptables -I INPUT -p udp --dport %d -j ACCEPT", port)) + ExecCommand(fmt.Sprintf("iptables -I OUTPUT -p udp --sport %d -j ACCEPT", port)) + ExecCommand(fmt.Sprintf("iptables -I OUTPUT -p tcp --sport %d -j ACCEPT", port)) + } +} + +// Log 实时打印指定服务日志 +func Log(serviceName string, line int) { + result, _ := LogChan(serviceName, "-n "+strconv.Itoa(line), make(chan byte)) + for line := range result { + fmt.Println(line) + } +} + +// LogChan 指定服务实时日志, 返回chan +func LogChan(serviceName, param string, closeChan chan byte) (chan string, error) { + cmd := exec.Command("bash", "-c", fmt.Sprintf("journalctl -f -u %s -o cat %s", serviceName, param)) + + stdout, _ := cmd.StdoutPipe() + + if err := cmd.Start(); err != nil { + fmt.Println("Error:The command is err: ", err.Error()) + return nil, err + } + ch := make(chan string, 100) + stdoutScan := bufio.NewScanner(stdout) + go func() { + for stdoutScan.Scan() { + select { + case <-closeChan: + stdout.Close() + return + default: + ch <- stdoutScan.Text() + } + } + }() + return ch, nil +} diff --git a/trojan-master/util/string.go b/trojan-master/util/string.go new file mode 100644 index 0000000..1364712 --- /dev/null +++ b/trojan-master/util/string.go @@ -0,0 +1,168 @@ +package util + +import ( + "fmt" + "github.com/eiannone/keyboard" + "math/rand" + "reflect" + "regexp" + "strconv" + "time" +) + +const ( + // RED 红色 + RED = "\033[31m" + // GREEN 绿色 + GREEN = "\033[32m" + // YELLOW 黄色 + YELLOW = "\033[33m" + // BLUE 蓝色 + BLUE = "\033[34m" + // FUCHSIA 紫红色 + FUCHSIA = "\033[35m" + // CYAN 青色 + CYAN = "\033[36m" + // WHITE 白色 + WHITE = "\033[37m" + // RESET 重置颜色 + RESET = "\033[0m" + // LETTER 大小写英文字母常量 + LETTER = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + // DIGITS 数字常量 + DIGITS = "0123456789" + // SPECIALS 特殊字符常量 + SPECIALS = "~=+%^*/()[]{}/!@#$?|" + // ALL 全部字符常量 + ALL = LETTER + DIGITS + SPECIALS +) + +// IsInteger 判断字符串是否为整数 +func IsInteger(input string) bool { + _, err := strconv.Atoi(input) + return err == nil +} + +// RandString 随机字符串 +func RandString(length int, source string) string { + var runes = []rune(source) + b := make([]rune, length) + rand.New(rand.NewSource(time.Now().UnixNano())) + for i := range b { + b[i] = runes[rand.Intn(len(runes))] + } + return string(b) +} + +// VerifyEmailFormat 邮箱验证 +func VerifyEmailFormat(email string) bool { + pattern := `^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(email) +} + +func getChar(str string) string { + err := keyboard.Open() + if err != nil { + panic(err) + } + defer keyboard.Close() + fmt.Print(str) + char, _, _ := keyboard.GetKey() + fmt.Printf("%c\n", char) + if char == 0 { + return "" + } + return string(char) +} + +// LoopInput 循环输入选择, 或者直接回车退出 +func LoopInput(tip string, choices interface{}, singleRowPrint bool) int { + reflectValue := reflect.ValueOf(choices) + if reflectValue.Kind() != reflect.Slice && reflectValue.Kind() != reflect.Array { + fmt.Println("only support slice or array type!") + return -1 + } + length := reflectValue.Len() + if reflectValue.Type().String() == "[]string" { + if singleRowPrint { + for i := 0; i < length; i++ { + fmt.Printf("%d.%s\n\n", i+1, reflectValue.Index(i).Interface()) + } + } else { + for i := 0; i < length; i++ { + if i%2 == 0 { + fmt.Printf("%d.%-15s\t", i+1, reflectValue.Index(i).Interface()) + } else { + fmt.Printf("%d.%-15s\n\n", i+1, reflectValue.Index(i).Interface()) + } + } + } + } + for { + inputString := "" + if length < 10 { + inputString = getChar(tip) + } else { + fmt.Print(tip) + _, _ = fmt.Scanln(&inputString) + } + if inputString == "" { + return -1 + } else if !IsInteger(inputString) { + fmt.Println("输入有误,请重新输入") + continue + } + number, _ := strconv.Atoi(inputString) + if number <= length && number > 0 { + return number + } + fmt.Println("输入数字越界,请重新输入") + } +} + +// Input 读取终端用户输入 +func Input(tip string, defaultValue string) string { + input := "" + fmt.Print(tip) + _, _ = fmt.Scanln(&input) + if input == "" && defaultValue != "" { + input = defaultValue + } + return input +} + +// Red 红色 +func Red(str string) string { + return RED + str + RESET +} + +// Green 绿色 +func Green(str string) string { + return GREEN + str + RESET +} + +// Yellow 黄色 +func Yellow(str string) string { + return YELLOW + str + RESET +} + +// Blue 蓝色 +func Blue(str string) string { + return BLUE + str + RESET +} + +// Fuchsia 紫红色 +func Fuchsia(str string) string { + return FUCHSIA + str + RESET +} + +// Cyan 青色 +func Cyan(str string) string { + return CYAN + str + RESET +} + +// White 白色 +func White(str string) string { + return WHITE + str + RESET +} diff --git a/trojan-master/util/websocket.go b/trojan-master/util/websocket.go new file mode 100644 index 0000000..9bd2f0c --- /dev/null +++ b/trojan-master/util/websocket.go @@ -0,0 +1,146 @@ +package util + +import ( + "errors" + "fmt" + "github.com/gorilla/websocket" + "net/http" + "sync" +) + +// http升级websocket协议的配置 +var wsUpgrader = websocket.Upgrader{ + // 允许所有CORS跨域请求 + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +// WsMessage websocket消息 +type WsMessage struct { + MessageType int + Data []byte +} + +// WsConnection 封装websocket连接 +type WsConnection struct { + wsSocket *websocket.Conn // 底层websocket + inChan chan *WsMessage // 读取队列 + outChan chan *WsMessage // 发送队列 + + mutex sync.Mutex // 避免重复关闭管道 + isClosed bool + CloseChan chan byte // 关闭通知 +} + +// 读取协程 +func (wsConn *WsConnection) wsReadLoop() { + var ( + msgType int + data []byte + msg *WsMessage + err error + ) + for { + // 读一个message + if msgType, data, err = wsConn.wsSocket.ReadMessage(); err != nil { + fmt.Println("Read error: " + err.Error()) + goto CLOSED + } + msg = &WsMessage{ + msgType, + data, + } + // 放入请求队列 + select { + case wsConn.inChan <- msg: + if string(data) == "exit" { + goto CLOSED + } + case <-wsConn.CloseChan: + goto CLOSED + } + } +CLOSED: + wsConn.WsClose() +} + +// 发送协程 +func (wsConn *WsConnection) wsWriteLoop() { + var ( + msg *WsMessage + err error + ) + for { + select { + // 取一个应答 + case msg = <-wsConn.outChan: + // 写给websocket + if err = wsConn.wsSocket.WriteMessage(msg.MessageType, msg.Data); err != nil { + fmt.Println(err) + goto CLOSED + } + case <-wsConn.CloseChan: + goto CLOSED + } + } +CLOSED: + wsConn.WsClose() +} + +// InitWebsocket 初始化ws +func InitWebsocket(resp http.ResponseWriter, req *http.Request) (wsConn *WsConnection, err error) { + var ( + wsSocket *websocket.Conn + ) + // 应答客户端告知升级连接为websocket + if wsSocket, err = wsUpgrader.Upgrade(resp, req, nil); err != nil { + return + } + wsConn = &WsConnection{ + wsSocket: wsSocket, + inChan: make(chan *WsMessage, 1000), + outChan: make(chan *WsMessage, 1000), + CloseChan: make(chan byte), + isClosed: false, + } + + // 读协程 + go wsConn.wsReadLoop() + // 写协程 + go wsConn.wsWriteLoop() + + return +} + +// WsWrite 发送消息 +func (wsConn *WsConnection) WsWrite(messageType int, data []byte) (err error) { + select { + case wsConn.outChan <- &WsMessage{messageType, data}: + case <-wsConn.CloseChan: + err = errors.New("websocket closed") + } + return +} + +// WsRead 读取消息 +func (wsConn *WsConnection) WsRead() (msg *WsMessage, err error) { + select { + case msg = <-wsConn.inChan: + return + case <-wsConn.CloseChan: + err = errors.New("websocket closed") + } + return +} + +// WsClose 关闭连接 +func (wsConn *WsConnection) WsClose() { + wsConn.wsSocket.Close() + wsConn.mutex.Lock() + defer wsConn.mutex.Unlock() + if !wsConn.isClosed { + wsConn.isClosed = true + close(wsConn.CloseChan) + } +} diff --git a/trojan-master/web/auth.go b/trojan-master/web/auth.go new file mode 100644 index 0000000..4b42203 --- /dev/null +++ b/trojan-master/web/auth.go @@ -0,0 +1,178 @@ +package web + +import ( + "fmt" + "github.com/appleboy/gin-jwt/v2" + "github.com/gin-gonic/gin" + "time" + "trojan/core" + "trojan/util" + "trojan/web/controller" +) + +var ( + identityKey = "id" + authMiddleware *jwt.GinJWTMiddleware + err error +) + +// Login auth用户验证结构体 +type Login struct { + Username string `form:"username" json:"username" binding:"required"` + Password string `form:"password" json:"password" binding:"required"` +} + +func getSecretKey() string { + sk, _ := core.GetValue("secretKey") + if sk == "" { + sk = util.RandString(15, util.ALL) + core.SetValue("secretKey", sk) + } + return sk +} + +func jwtInit(timeout int) { + authMiddleware, err = jwt.New(&jwt.GinJWTMiddleware{ + Realm: "trojan-manager", + Key: []byte(getSecretKey()), + Timeout: time.Minute * time.Duration(timeout), + MaxRefresh: time.Minute * time.Duration(timeout), + IdentityKey: identityKey, + SendCookie: true, + PayloadFunc: func(data interface{}) jwt.MapClaims { + if v, ok := data.(*Login); ok { + return jwt.MapClaims{ + identityKey: v.Username, + } + } + return jwt.MapClaims{} + }, + IdentityHandler: func(c *gin.Context) interface{} { + claims := jwt.ExtractClaims(c) + return &Login{ + Username: claims[identityKey].(string), + } + }, + Authenticator: func(c *gin.Context) (interface{}, error) { + var ( + password string + loginVals Login + ) + if err := c.ShouldBind(&loginVals); err != nil { + return "", jwt.ErrMissingLoginValues + } + userID := loginVals.Username + pass := loginVals.Password + if err != nil { + return nil, err + } + if userID != "admin" { + mysql := core.GetMysql() + user := mysql.GetUserByName(userID) + if user == nil { + return nil, jwt.ErrFailedAuthentication + } + password = user.EncryptPass + } else { + if password, err = core.GetValue(userID + "_pass"); err != nil { + return nil, err + } + } + if password == pass { + return &loginVals, nil + } + return nil, jwt.ErrFailedAuthentication + }, + Authorizator: func(data interface{}, c *gin.Context) bool { + if _, ok := data.(*Login); ok { + return true + } + return false + }, + Unauthorized: func(c *gin.Context, code int, message string) { + c.JSON(code, gin.H{ + "code": code, + "message": message, + }) + }, + TokenLookup: "header: Authorization, query: token, cookie: jwt", + TokenHeadName: "Bearer", + TimeFunc: time.Now, + }) + + if err != nil { + fmt.Println("JWT Error:" + err.Error()) + } +} + +func updateUser(c *gin.Context) { + responseBody := controller.ResponseBody{Msg: "success"} + defer controller.TimeCost(time.Now(), &responseBody) + username := c.DefaultPostForm("username", "admin") + pass := c.PostForm("password") + err := core.SetValue(fmt.Sprintf("%s_pass", username), pass) + if err != nil { + responseBody.Msg = err.Error() + } + c.JSON(200, responseBody) +} + +// RequestUsername 获取请求接口的用户名 +func RequestUsername(c *gin.Context) string { + claims := jwt.ExtractClaims(c) + return claims[identityKey].(string) +} + +// Auth 权限router +func Auth(r *gin.Engine, timeout int) *jwt.GinJWTMiddleware { + jwtInit(timeout) + + newInstall := gin.H{"code": 201, "message": "No administrator account found inside the database", "data": nil} + r.NoRoute(authMiddleware.MiddlewareFunc(), func(c *gin.Context) { + claims := jwt.ExtractClaims(c) + fmt.Printf("NoRoute claims: %#v\n", claims) + c.JSON(404, gin.H{"code": 404, "message": "Page not found"}) + }) + r.GET("/auth/check", func(c *gin.Context) { + result, _ := core.GetValue("admin_pass") + if result == "" { + c.JSON(201, newInstall) + } else { + title, err := core.GetValue("login_title") + if err != nil { + title = "trojan 管理平台" + } + c.JSON(200, gin.H{ + "code": 200, + "message": "success", + "data": map[string]string{ + "title": title, + }, + }) + } + }) + r.POST("/auth/login", authMiddleware.LoginHandler) + r.POST("/auth/register", updateUser) + authO := r.Group("/auth") + authO.Use(authMiddleware.MiddlewareFunc()) + { + authO.GET("/loginUser", func(c *gin.Context) { + result, _ := core.GetValue("admin_pass") + if result == "" { + c.JSON(201, newInstall) + } else { + c.JSON(200, gin.H{ + "code": 200, + "message": "success", + "data": map[string]string{ + "username": RequestUsername(c), + }, + }) + } + }) + authO.POST("/reset_pass", updateUser) + authO.POST("/logout", authMiddleware.LogoutHandler) + authO.POST("/refresh_token", authMiddleware.RefreshHandler) + } + return authMiddleware +} diff --git a/trojan-master/web/controller/common.go b/trojan-master/web/controller/common.go new file mode 100644 index 0000000..56fc769 --- /dev/null +++ b/trojan-master/web/controller/common.go @@ -0,0 +1,166 @@ +package controller + +import ( + "github.com/robfig/cron/v3" + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/disk" + "github.com/shirou/gopsutil/load" + "github.com/shirou/gopsutil/mem" + "github.com/shirou/gopsutil/net" + "time" + "trojan/asset" + "trojan/core" + "trojan/trojan" +) + +// ResponseBody 结构体 +type ResponseBody struct { + Duration string + Data interface{} + Msg string +} + +type speedInfo struct { + Up uint64 + Down uint64 +} + +var si *speedInfo + +// TimeCost web函数执行用时统计方法 +func TimeCost(start time.Time, body *ResponseBody) { + body.Duration = time.Since(start).String() +} + +func clashRules() string { + rules, _ := core.GetValue("clash-rules") + if rules == "" { + rules = string(asset.GetAsset("clash-rules.yaml")) + } + return rules +} + +// Version 获取版本信息 +func Version() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + responseBody.Data = map[string]string{ + "version": trojan.MVersion, + "buildDate": trojan.BuildDate, + "goVersion": trojan.GoVersion, + "gitVersion": trojan.GitVersion, + "trojanVersion": trojan.Version(), + "trojanUptime": trojan.UpTime(), + "trojanType": trojan.Type(), + } + return &responseBody +} + +// SetLoginInfo 设置登录页信息 +func SetLoginInfo(title string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + err := core.SetValue("login_title", title) + if err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// SetDomain 设置域名 +func SetDomain(domain string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + trojan.SetDomain(domain) + return &responseBody +} + +// SetClashRules 设置clash规则 +func SetClashRules(rules string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + core.SetValue("clash-rules", rules) + return &responseBody +} + +// ResetClashRules 重置clash规则 +func ResetClashRules() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + core.DelValue("clash-rules") + responseBody.Data = clashRules() + return &responseBody +} + +// GetClashRules 获取clash规则 +func GetClashRules() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + responseBody.Data = clashRules() + return &responseBody +} + +// SetTrojanType 设置trojan类型 +func SetTrojanType(tType string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + err := trojan.SwitchType(tType) + if err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// CollectTask 启动收集主机信息任务 +func CollectTask() { + var recvCount, sentCount uint64 + c := cron.New() + lastIO, _ := net.IOCounters(true) + var lastRecvCount, lastSentCount uint64 + for _, k := range lastIO { + lastRecvCount = lastRecvCount + k.BytesRecv + lastSentCount = lastSentCount + k.BytesSent + } + si = &speedInfo{} + c.AddFunc("@every 2s", func() { + result, _ := net.IOCounters(true) + recvCount, sentCount = 0, 0 + for _, k := range result { + recvCount = recvCount + k.BytesRecv + sentCount = sentCount + k.BytesSent + } + si.Up = (sentCount - lastSentCount) / 2 + si.Down = (recvCount - lastRecvCount) / 2 + lastSentCount = sentCount + lastRecvCount = recvCount + lastIO = result + }) + c.Start() +} + +// ServerInfo 获取服务器信息 +func ServerInfo() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + cpuPercent, _ := cpu.Percent(0, false) + vmInfo, _ := mem.VirtualMemory() + smInfo, _ := mem.SwapMemory() + diskInfo, _ := disk.Usage("/") + loadInfo, _ := load.Avg() + tcpCon, _ := net.Connections("tcp") + udpCon, _ := net.Connections("udp") + netCount := map[string]int{ + "tcp": len(tcpCon), + "udp": len(udpCon), + } + responseBody.Data = map[string]interface{}{ + "cpu": cpuPercent, + "memory": vmInfo, + "swap": smInfo, + "disk": diskInfo, + "load": loadInfo, + "speed": si, + "netCount": netCount, + } + return &responseBody +} diff --git a/trojan-master/web/controller/data.go b/trojan-master/web/controller/data.go new file mode 100644 index 0000000..a019f1e --- /dev/null +++ b/trojan-master/web/controller/data.go @@ -0,0 +1,105 @@ +package controller + +import ( + "fmt" + "github.com/robfig/cron/v3" + "strconv" + "time" + "trojan/core" + "trojan/trojan" +) + +var c *cron.Cron + +// SetData 设置流量限制 +func SetData(id uint, quota int) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + if err := mysql.SetQuota(id, quota); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// CleanData 清空流量 +func CleanData(id uint) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + if err := mysql.CleanData(id); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +func monthlyResetJob() { + mysql := core.GetMysql() + if err := mysql.MonthlyResetData(); err != nil { + fmt.Println("MonthlyResetError: " + err.Error()) + } +} + +// GetResetDay 获取重置日 +func GetResetDay() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + dayStr, _ := core.GetValue("reset_day") + day, _ := strconv.Atoi(dayStr) + responseBody.Data = map[string]interface{}{ + "resetDay": day, + } + return &responseBody +} + +// UpdateResetDay 更新重置流量日 +func UpdateResetDay(day uint) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + if day > 31 || day < 0 { + responseBody.Msg = fmt.Sprintf("%d为非正常日期", day) + return &responseBody + } + dayStr, _ := core.GetValue("reset_day") + oldDay, _ := strconv.Atoi(dayStr) + if day == uint(oldDay) { + return &responseBody + } + if len(c.Entries()) > 1 { + c.Remove(c.Entries()[len(c.Entries())-1].ID) + } + if day != 0 { + c.AddFunc(fmt.Sprintf("0 0 %d * *", day), func() { + monthlyResetJob() + }) + } + core.SetValue("reset_day", strconv.Itoa(int(day))) + return &responseBody +} + +// ScheduleTask 定时任务 +func ScheduleTask() { + loc, _ := time.LoadLocation("Asia/Shanghai") + c = cron.New(cron.WithLocation(loc)) + c.AddFunc("@daily", func() { + mysql := core.GetMysql() + if needRestart, err := mysql.DailyCheckExpire(); err != nil { + fmt.Println("DailyCheckError: " + err.Error()) + } else if needRestart { + trojan.Restart() + } + }) + + dayStr, _ := core.GetValue("reset_day") + if dayStr == "" { + dayStr = "1" + core.SetValue("reset_day", dayStr) + } + day, _ := strconv.Atoi(dayStr) + if day != 0 { + c.AddFunc(fmt.Sprintf("0 0 %d * *", day), func() { + monthlyResetJob() + }) + } + c.Start() +} diff --git a/trojan-master/web/controller/trojan.go b/trojan-master/web/controller/trojan.go new file mode 100644 index 0000000..b5cfb74 --- /dev/null +++ b/trojan-master/web/controller/trojan.go @@ -0,0 +1,200 @@ +package controller + +import ( + "bufio" + "bytes" + "encoding/csv" + "fmt" + "github.com/gin-gonic/gin" + ws "github.com/gorilla/websocket" + "io" + "strconv" + "strings" + "time" + "trojan/core" + "trojan/trojan" + "trojan/util" +) + +// Start 启动trojan +func Start() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + trojan.Start() + return &responseBody +} + +// Stop 停止trojan +func Stop() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + trojan.Stop() + return &responseBody +} + +// Restart 重启trojan +func Restart() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + trojan.Restart() + return &responseBody +} + +// Update trojan更新 +func Update() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + trojan.InstallTrojan("") + return &responseBody +} + +// SetLogLevel 修改trojan日志等级 +func SetLogLevel(level int) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + core.WriteLogLevel(level) + trojan.Restart() + return &responseBody +} + +// GetLogLevel 获取trojan日志等级 +func GetLogLevel() *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + config := core.GetConfig() + responseBody.Data = map[string]interface{}{ + "loglevel": &config.LogLevel, + } + return &responseBody +} + +// Log 通过ws查看trojan实时日志 +func Log(c *gin.Context) { + var ( + wsConn *util.WsConnection + err error + ) + if wsConn, err = util.InitWebsocket(c.Writer, c.Request); err != nil { + fmt.Println(err) + return + } + defer wsConn.WsClose() + param := c.DefaultQuery("line", "300") + if !util.IsInteger(param) { + fmt.Println("invalid param: " + param) + return + } + if param == "-1" { + param = "--no-tail" + } else { + param = "-n " + param + } + result, err := util.LogChan("trojan", param, wsConn.CloseChan) + if err != nil { + fmt.Println(err) + return + } + for line := range result { + if err := wsConn.WsWrite(ws.TextMessage, []byte(line+"\n")); err != nil { + fmt.Println("can't send: ", line) + break + } + } +} + +// ImportCsv 导入csv文件到trojan数据库 +func ImportCsv(c *gin.Context) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + + file, header, err := c.Request.FormFile("file") + if err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + defer file.Close() + filename := header.Filename + if !strings.Contains(filename, ".csv") { + responseBody.Msg = "仅支持导入csv格式的文件" + return &responseBody + } + reader := csv.NewReader(bufio.NewReader(file)) + var userList []*core.User + for { + line, readErr := reader.Read() + if readErr == io.EOF { + break + } else if readErr != nil { + responseBody.Msg = readErr.Error() + return &responseBody + } + quota, _ := strconv.Atoi(line[4]) + download, _ := strconv.Atoi(line[5]) + upload, _ := strconv.Atoi(line[6]) + useDays, _ := strconv.Atoi(line[7]) + userList = append(userList, &core.User{ + Username: line[1], + Password: line[2], + EncryptPass: line[3], + Quota: int64(quota), + Download: uint64(download), + Upload: uint64(upload), + UseDays: uint(useDays), + ExpiryDate: line[8], + }) + } + mysql := core.GetMysql() + db := mysql.GetDB() + if _, err = db.Exec("DROP TABLE IF EXISTS users;"); err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + if _, err = db.Exec(core.CreateTableSql); err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + for _, user := range userList { + if _, err = db.Exec(fmt.Sprintf(` +INSERT INTO users(username, password, passwordShow, quota, download, upload, useDays, expiryDate) VALUES ('%s','%s','%s', %d, %d, %d, %d, '%s');`, + user.Username, user.EncryptPass, user.Password, user.Quota, user.Download, user.Upload, user.UseDays, user.ExpiryDate)); err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + } + return &responseBody +} + +// ExportCsv 导出trojan表数据到csv文件 +func ExportCsv(c *gin.Context) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + var dataBytes = new(bytes.Buffer) + //设置UTF-8 BOM, 防止中文乱码 + dataBytes.WriteString("\xEF\xBB\xBF") + mysql := core.GetMysql() + userList, err := mysql.GetData() + if err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + wr := csv.NewWriter(dataBytes) + for _, user := range userList { + singleUser := []string{ + strconv.Itoa(int(user.ID)), + user.Username, + user.Password, + user.EncryptPass, + strconv.Itoa(int(user.Quota)), + strconv.Itoa(int(user.Download)), + strconv.Itoa(int(user.Upload)), + strconv.Itoa(int(user.UseDays)), + user.ExpiryDate, + } + wr.Write(singleUser) + } + wr.Flush() + c.Writer.Header().Set("Content-type", "application/octet-stream") + c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment;filename=%s", fmt.Sprintf("%s.csv", mysql.Database))) + c.String(200, dataBytes.String()) + return nil +} diff --git a/trojan-master/web/controller/user.go b/trojan-master/web/controller/user.go new file mode 100644 index 0000000..e4e5849 --- /dev/null +++ b/trojan-master/web/controller/user.go @@ -0,0 +1,233 @@ +package controller + +import ( + "encoding/base64" + "fmt" + "github.com/gin-gonic/gin" + "github.com/tidwall/gjson" + "strconv" + "time" + "trojan/core" + "trojan/trojan" +) + +// UserList 获取用户列表 +func UserList(requestUser string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + userList, err := mysql.GetData() + if err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + if requestUser != "admin" { + findUser := false + for _, user := range userList { + if user.Username == requestUser { + userList = []*core.User{user} + findUser = true + break + } + } + if !findUser { + userList = []*core.User{} + } + } + domain, port := trojan.GetDomainAndPort() + responseBody.Data = map[string]interface{}{ + "domain": domain, + "port": port, + "userList": userList, + } + return &responseBody +} + +// PageUserList 分页查询获取用户列表 +func PageUserList(curPage int, pageSize int) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + pageData, err := mysql.PageList(curPage, pageSize) + if err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + domain, port := trojan.GetDomainAndPort() + responseBody.Data = map[string]interface{}{ + "domain": domain, + "port": port, + "pageData": pageData, + } + return &responseBody +} + +// CreateUser 创建用户 +func CreateUser(username string, password string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + if username == "admin" { + responseBody.Msg = "不能创建用户名为admin的用户!" + return &responseBody + } + mysql := core.GetMysql() + if user := mysql.GetUserByName(username); user != nil { + responseBody.Msg = "已存在用户名为: " + username + " 的用户!" + return &responseBody + } + pass, err := base64.StdEncoding.DecodeString(password) + if err != nil { + responseBody.Msg = "Base64解码失败: " + err.Error() + return &responseBody + } + if user := mysql.GetUserByPass(password); user != nil { + responseBody.Msg = "已存在密码为: " + string(pass) + " 的用户!" + return &responseBody + } + if err := mysql.CreateUser(username, password, string(pass)); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// UpdateUser 更新用户 +func UpdateUser(id uint, username string, password string) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + if username == "admin" { + responseBody.Msg = "不能更改用户名为admin的用户!" + return &responseBody + } + mysql := core.GetMysql() + userList, err := mysql.GetData(strconv.Itoa(int(id))) + if err != nil { + responseBody.Msg = err.Error() + return &responseBody + } + if userList[0].Username != username { + if user := mysql.GetUserByName(username); user != nil { + responseBody.Msg = "已存在用户名为: " + username + " 的用户!" + return &responseBody + } + } + pass, err := base64.StdEncoding.DecodeString(password) + if err != nil { + responseBody.Msg = "Base64解码失败: " + err.Error() + return &responseBody + } + if userList[0].Password != password { + if user := mysql.GetUserByPass(password); user != nil { + responseBody.Msg = "已存在密码为: " + string(pass) + " 的用户!" + return &responseBody + } + } + if err := mysql.UpdateUser(id, username, password, string(pass)); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// DelUser 删除用户 +func DelUser(id uint) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + if err := mysql.DeleteUser(id); err != nil { + responseBody.Msg = err.Error() + } else { + trojan.Restart() + } + return &responseBody +} + +// SetExpire 设置用户过期 +func SetExpire(id uint, useDays uint) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + if err := mysql.SetExpire(id, useDays); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// CancelExpire 取消设置用户过期 +func CancelExpire(id uint) *ResponseBody { + responseBody := ResponseBody{Msg: "success"} + defer TimeCost(time.Now(), &responseBody) + mysql := core.GetMysql() + if err := mysql.CancelExpire(id); err != nil { + responseBody.Msg = err.Error() + } + return &responseBody +} + +// ClashSubInfo 获取clash订阅信息 +func ClashSubInfo(c *gin.Context) { + token := c.Query("token") + if token == "" { + c.String(200, "token is null") + return + } + decodeByte, err := base64.StdEncoding.DecodeString(token) + if err != nil { + c.String(200, "token is error") + return + } + if !gjson.GetBytes(decodeByte, "user").Exists() || !gjson.GetBytes(decodeByte, "pass").Exists() { + c.String(200, "token is error") + return + } + username := gjson.GetBytes(decodeByte, "user").String() + password := gjson.GetBytes(decodeByte, "pass").String() + + mysql := core.GetMysql() + user := mysql.GetUserByName(username) + if user != nil { + pass, _ := base64.StdEncoding.DecodeString(user.Password) + if password == string(pass) { + var wsData, wsHost string + userInfo := fmt.Sprintf("upload=%d, download=%d", user.Upload, user.Download) + if user.Quota != -1 { + userInfo = fmt.Sprintf("%s, total=%d", userInfo, user.Quota) + } + if user.ExpiryDate != "" { + utc, _ := time.LoadLocation("Asia/Shanghai") + t, _ := time.ParseInLocation("2006-01-02", user.ExpiryDate, utc) + userInfo = fmt.Sprintf("%s, expire=%d", userInfo, t.Unix()) + } + c.Header("content-disposition", fmt.Sprintf("attachment; filename=%s", user.Username)) + c.Header("subscription-userinfo", userInfo) + + domain, port := trojan.GetDomainAndPort() + name := fmt.Sprintf("%s:%d", domain, port) + configData := string(core.Load("")) + if gjson.Get(configData, "websocket").Exists() && gjson.Get(configData, "websocket.enabled").Bool() { + if gjson.Get(configData, "websocket.host").Exists() { + hostTemp := gjson.Get(configData, "websocket.host").String() + if hostTemp != "" { + wsHost = fmt.Sprintf(", headers: {Host: %s}", hostTemp) + } + } + wsOpt := fmt.Sprintf("{path: %s%s}", gjson.Get(configData, "websocket.path").String(), wsHost) + wsData = fmt.Sprintf(", network: ws, udp: true, ws-opts: %s", wsOpt) + } + proxyData := fmt.Sprintf(" - {name: %s, server: %s, port: %d, type: trojan, password: %s, sni: %s%s}", + name, domain, port, password, domain, wsData) + result := fmt.Sprintf(`proxies: +%s + +proxy-groups: + - name: PROXY + type: select + proxies: + - %s + +%s +`, proxyData, name, clashRules()) + c.String(200, result) + return + } + } + c.String(200, "token is error") +} diff --git a/trojan-master/web/web.go b/trojan-master/web/web.go new file mode 100644 index 0000000..03f0de6 --- /dev/null +++ b/trojan-master/web/web.go @@ -0,0 +1,196 @@ +package web + +import ( + "embed" + "fmt" + "github.com/gin-contrib/gzip" + "github.com/gin-gonic/gin" + "io/fs" + "net/http" + "strconv" + "trojan/core" + "trojan/util" + "trojan/web/controller" +) + +//go:embed templates/* +var f embed.FS + +func userRouter(router *gin.Engine) { + user := router.Group("/trojan/user") + { + user.GET("", func(c *gin.Context) { + requestUser := RequestUsername(c) + c.JSON(200, controller.UserList(requestUser)) + }) + user.GET("/page", func(c *gin.Context) { + curPageStr := c.DefaultQuery("curPage", "1") + pageSizeStr := c.DefaultQuery("pageSize", "10") + curPage, _ := strconv.Atoi(curPageStr) + pageSize, _ := strconv.Atoi(pageSizeStr) + c.JSON(200, controller.PageUserList(curPage, pageSize)) + }) + user.POST("", func(c *gin.Context) { + username := c.PostForm("username") + password := c.PostForm("password") + c.JSON(200, controller.CreateUser(username, password)) + }) + user.POST("/update", func(c *gin.Context) { + sid := c.PostForm("id") + username := c.PostForm("username") + password := c.PostForm("password") + id, _ := strconv.Atoi(sid) + c.JSON(200, controller.UpdateUser(uint(id), username, password)) + }) + user.POST("/expire", func(c *gin.Context) { + sid := c.PostForm("id") + sDays := c.PostForm("useDays") + id, _ := strconv.Atoi(sid) + useDays, _ := strconv.Atoi(sDays) + c.JSON(200, controller.SetExpire(uint(id), uint(useDays))) + }) + user.DELETE("/expire", func(c *gin.Context) { + sid := c.Query("id") + id, _ := strconv.Atoi(sid) + c.JSON(200, controller.CancelExpire(uint(id))) + }) + user.DELETE("", func(c *gin.Context) { + stringId := c.Query("id") + id, _ := strconv.Atoi(stringId) + c.JSON(200, controller.DelUser(uint(id))) + }) + } +} + +func trojanRouter(router *gin.Engine) { + router.POST("/trojan/start", func(c *gin.Context) { + c.JSON(200, controller.Start()) + }) + router.POST("/trojan/stop", func(c *gin.Context) { + c.JSON(200, controller.Stop()) + }) + router.POST("/trojan/restart", func(c *gin.Context) { + c.JSON(200, controller.Restart()) + }) + router.GET("/trojan/loglevel", func(c *gin.Context) { + c.JSON(200, controller.GetLogLevel()) + }) + router.GET("/trojan/export", func(c *gin.Context) { + result := controller.ExportCsv(c) + if result != nil { + c.JSON(200, result) + } + }) + router.POST("/trojan/import", func(c *gin.Context) { + c.JSON(200, controller.ImportCsv(c)) + }) + router.POST("/trojan/update", func(c *gin.Context) { + c.JSON(200, controller.Update()) + }) + router.POST("/trojan/switch", func(c *gin.Context) { + tType := c.DefaultPostForm("type", "trojan") + c.JSON(200, controller.SetTrojanType(tType)) + }) + router.POST("/trojan/loglevel", func(c *gin.Context) { + slevel := c.DefaultPostForm("level", "1") + level, _ := strconv.Atoi(slevel) + c.JSON(200, controller.SetLogLevel(level)) + }) + router.POST("/trojan/domain", func(c *gin.Context) { + c.JSON(200, controller.SetDomain(c.PostForm("domain"))) + }) + router.GET("/trojan/log", func(c *gin.Context) { + controller.Log(c) + }) +} + +func dataRouter(router *gin.Engine) { + data := router.Group("/trojan/data") + { + data.POST("", func(c *gin.Context) { + sID := c.PostForm("id") + sQuota := c.PostForm("quota") + id, _ := strconv.Atoi(sID) + quota, _ := strconv.Atoi(sQuota) + c.JSON(200, controller.SetData(uint(id), quota)) + }) + data.DELETE("", func(c *gin.Context) { + sID := c.Query("id") + id, _ := strconv.Atoi(sID) + c.JSON(200, controller.CleanData(uint(id))) + }) + data.POST("/resetDay", func(c *gin.Context) { + dayStr := c.DefaultPostForm("day", "1") + day, _ := strconv.Atoi(dayStr) + c.JSON(200, controller.UpdateResetDay(uint(day))) + }) + data.GET("/resetDay", func(c *gin.Context) { + c.JSON(200, controller.GetResetDay()) + }) + } +} + +func commonRouter(router *gin.Engine) { + common := router.Group("/common") + { + common.GET("/version", func(c *gin.Context) { + c.JSON(200, controller.Version()) + }) + common.GET("/serverInfo", func(c *gin.Context) { + c.JSON(200, controller.ServerInfo()) + }) + common.GET("/clashRules", func(c *gin.Context) { + c.JSON(200, controller.GetClashRules()) + }) + common.POST("/clashRules", func(c *gin.Context) { + rules := c.PostForm("rules") + c.JSON(200, controller.SetClashRules(rules)) + }) + common.DELETE("/clashRules", func(c *gin.Context) { + c.JSON(200, controller.ResetClashRules()) + }) + common.POST("/loginInfo", func(c *gin.Context) { + c.JSON(200, controller.SetLoginInfo(c.PostForm("title"))) + }) + } +} + +func staticRouter(router *gin.Engine) { + staticFs, _ := fs.Sub(f, "templates/static") + router.StaticFS("/static", http.FS(staticFs)) + + router.GET("/", func(c *gin.Context) { + indexHTML, _ := f.ReadFile("templates/" + "index.html") + c.Writer.Write(indexHTML) + }) +} + +func noTokenRouter(router *gin.Engine) { + router.GET("/trojan/user/subscribe", func(c *gin.Context) { + controller.ClashSubInfo(c) + }) +} + +// Start web启动入口 +func Start(host string, port, timeout int, isSSL bool) { + router := gin.Default() + router.SetTrustedProxies(nil) + router.Use(gzip.Gzip(gzip.DefaultCompression)) + staticRouter(router) + noTokenRouter(router) + router.Use(Auth(router, timeout).MiddlewareFunc()) + trojanRouter(router) + userRouter(router) + dataRouter(router) + commonRouter(router) + controller.ScheduleTask() + controller.CollectTask() + util.OpenPort(port) + if isSSL { + config := core.GetConfig() + ssl := &config.SSl + router.RunTLS(fmt.Sprintf("%s:%d", host, port), ssl.Cert, ssl.Key) + } else { + router.Run(fmt.Sprintf("%s:%d", host, port)) + } +} diff --git a/trojan-web-master.zip b/trojan-web-master.zip new file mode 100644 index 0000000000000000000000000000000000000000..75568bc2549f05ccd4595f1db0e1f3de358f5c0d GIT binary patch literal 258849 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

+ + + diff --git a/trojan-web-master/jsconfig.json b/trojan-web-master/jsconfig.json new file mode 100644 index 0000000..ea7e682 --- /dev/null +++ b/trojan-web-master/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "jsx": "preserve" + }, + "include": [ + "./src/**/*" + ] +} \ No newline at end of file diff --git a/trojan-web-master/package-lock.json b/trojan-web-master/package-lock.json new file mode 100644 index 0000000..0a9f148 --- /dev/null +++ b/trojan-web-master/package-lock.json @@ -0,0 +1,9055 @@ +{ + "name": "trojan-web", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "trojan-web", + "version": "0.1.0", + "dependencies": { + "axios": "^1.5.0", + "crypto-js": "^4.1.1", + "dayjs": "^1.11.10", + "easyqrcodejs": "^4.4.13", + "element-plus": "^2.3.14", + "nprogress": "^0.2.0", + "vue": "^3.3.4", + "vue-i18n": "^9.4.1", + "vue-router": "^4.2.5", + "vuex": "^4.1.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "@vue/compiler-sfc": "^3.3.4", + "babel-eslint": "^10.1.0", + "eslint": "^8.50.0", + "eslint-plugin-vue": "^9.17.0", + "rollup-plugin-external-globals": "^0.8.0", + "sass": "^1.68.0", + "terser": "^5.20.0", + "vite": "^4.4.9", + "vite-plugin-svg-icons": "^1.1.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz", + "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.1.tgz", + "integrity": "sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA==" + }, + "node_modules/@floating-ui/dom": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.0.4.tgz", + "integrity": "sha512-maYJRv+sAXTy4K9mzdv0JPyNW5YPVHrqtY90tEdI6XNpuLOP26Ci2pfwPsKBA/Wh4Z3FX5sUrtUFTdMYj9v+ug==", + "dependencies": { + "@floating-ui/core": "^1.0.1" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@intlify/core-base": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.4.1.tgz", + "integrity": "sha512-WIwx+elsZbxSMxRG5+LC+utRohFvmZMoDevfKOfnYMLbpCjCSavqTfHJAtfsY6ruowzqXeKkeLhRHbYbjoJx5g==", + "dependencies": { + "@intlify/message-compiler": "9.4.1", + "@intlify/shared": "9.4.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.4.1.tgz", + "integrity": "sha512-aN2N+dUx320108QhH51Ycd2LEpZ+NKbzyQ2kjjhqMcxhHdxtOnkgdx+MDBhOy/CObwBmhC3Nygzc6hNlfKvPNw==", + "dependencies": { + "@intlify/shared": "9.4.1", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/@intlify/shared": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.4.1.tgz", + "integrity": "sha512-A51elBmZWf1FS80inf/32diO9DeXoqg9GR9aUDHFcfHoNDuT46Q+fpPOdj8jiJnSHSBh8E1E+6qWRhAZXdK3Ng==", + "engines": { + "node": ">= 16" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "node_modules/@types/svgo": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.3.tgz", + "integrity": "sha512-5sP0Xgo0dXppY0tbYF6TevB/1+tzFLuu71XXxC/zGvQAn9PW7y+DwtDO81g0ZUPye00K6tPwtsLDOpARa0mFcA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", + "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vueuse/core": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz", + "integrity": "sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.4.0", + "@vueuse/shared": "9.4.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "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.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz", + "integrity": "sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz", + "integrity": "sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "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/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/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/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/axios": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/css-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/easyqrcodejs": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/easyqrcodejs/-/easyqrcodejs-4.4.13.tgz", + "integrity": "sha512-NulfMl+bhx/gAjZcBjgNd99jqPE5wEho1Z3nZwnKNISu0STnVq0xFQ28SVhcnOwt+47BJ80dULVNzpGIwYi66A==" + }, + "node_modules/element-plus": { + "version": "2.3.14", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.14.tgz", + "integrity": "sha512-9yvxUaU4jXf2ZNPdmIxoj/f8BG8CDcGM6oHa9JIqxLjQlfY4bpzR1E5CjNimnOX3rxO93w1TQ0jTVt0RSxh9kA==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "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/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.17.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", + "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.2", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz", + "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "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/merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-prefix-selector": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.15.0.tgz", + "integrity": "sha512-9taaTPs6I4906QC03zBBt0LfTWAhrqEWlKSj0jRlxrg1yV+O91h0wcquu6krcA5L6aEv3QnCeG8B1vZ5WT4ecQ==", + "dev": true, + "peerDependencies": { + "postcss": ">4 <9" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + } + }, + "node_modules/posthtml-parser/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "1.0.5" + } + }, + "node_modules/posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "dependencies": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "3.29.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.3.tgz", + "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-external-globals": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.8.0.tgz", + "integrity": "sha512-c65c7hPMCE//cLzC4dLVE25XkuHsBqSkZp+/5pvtZ1MFwqgQLRRkIfuCvI3PnI7Yj8HoXqYtdsRN9gYF5a4tVQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "magic-string": "^0.30.0" + }, + "peerDependencies": { + "rollup": "^2.25.0 || ^3.3.0" + } + }, + "node_modules/rollup-plugin-external-globals/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/sass": { + "version": "1.68.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.68.0.tgz", + "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + } + }, + "node_modules/svg-baker/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg-baker/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/svg-baker/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/terser": { + "version": "5.20.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/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==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.4.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-svg-icons": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-1.1.0.tgz", + "integrity": "sha512-dmpr7Wq8vQN6ajBrVTrBxy8wJjQfcP30i73q+40uAZc8p7EwphBNZ+bVTI0enFaCrsITI8y0Ruo/mN/SaJQ6Hw==", + "dev": true, + "dependencies": { + "@types/svgo": "^2.6.0", + "cors": "^2.8.5", + "debug": "^4.3.3", + "etag": "^1.8.1", + "fs-extra": "^10.0.0", + "svg-baker": "1.7.0", + "svgo": "^2.8.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.4.1.tgz", + "integrity": "sha512-vnQyYE9LBuNOqPpETIcCaGnAyLEqfeIvDcyZ9T+WBCWFTqWw1J8FuF1jfeDwpHBi5JKgAwgXyq1mt8jp/x/GPA==", + "dependencies": { + "@intlify/core-base": "9.4.1", + "@intlify/shared": "9.4.1", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.22.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==" + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@element-plus/icons-vue": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz", + "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==", + "requires": {} + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.22.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true + }, + "@floating-ui/core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.1.tgz", + "integrity": "sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA==" + }, + "@floating-ui/dom": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.0.4.tgz", + "integrity": "sha512-maYJRv+sAXTy4K9mzdv0JPyNW5YPVHrqtY90tEdI6XNpuLOP26Ci2pfwPsKBA/Wh4Z3FX5sUrtUFTdMYj9v+ug==", + "requires": { + "@floating-ui/core": "^1.0.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@intlify/core-base": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.4.1.tgz", + "integrity": "sha512-WIwx+elsZbxSMxRG5+LC+utRohFvmZMoDevfKOfnYMLbpCjCSavqTfHJAtfsY6ruowzqXeKkeLhRHbYbjoJx5g==", + "requires": { + "@intlify/message-compiler": "9.4.1", + "@intlify/shared": "9.4.1" + } + }, + "@intlify/message-compiler": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.4.1.tgz", + "integrity": "sha512-aN2N+dUx320108QhH51Ycd2LEpZ+NKbzyQ2kjjhqMcxhHdxtOnkgdx+MDBhOy/CObwBmhC3Nygzc6hNlfKvPNw==", + "requires": { + "@intlify/shared": "9.4.1", + "source-map-js": "^1.0.2" + } + }, + "@intlify/shared": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.4.1.tgz", + "integrity": "sha512-A51elBmZWf1FS80inf/32diO9DeXoqg9GR9aUDHFcfHoNDuT46Q+fpPOdj8jiJnSHSBh8E1E+6qWRhAZXdK3Ng==" + }, + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "@types/svgo": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.3.tgz", + "integrity": "sha512-5sP0Xgo0dXppY0tbYF6TevB/1+tzFLuu71XXxC/zGvQAn9PW7y+DwtDO81g0ZUPye00K6tPwtsLDOpARa0mFcA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "@vitejs/plugin-vue": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", + "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "dev": true, + "requires": {} + }, + "@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "requires": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "requires": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "requires": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "requires": { + "@vue/shared": "3.3.4" + } + }, + "@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "requires": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "requires": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "requires": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "@vueuse/core": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz", + "integrity": "sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q==", + "requires": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.4.0", + "@vueuse/shared": "9.4.0", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz", + "integrity": "sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q==" + }, + "@vueuse/shared": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz", + "integrity": "sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ==", + "requires": { + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "axios": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "easyqrcodejs": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/easyqrcodejs/-/easyqrcodejs-4.4.13.tgz", + "integrity": "sha512-NulfMl+bhx/gAjZcBjgNd99jqPE5wEho1Z3nZwnKNISu0STnVq0xFQ28SVhcnOwt+47BJ80dULVNzpGIwYi66A==" + }, + "element-plus": { + "version": "2.3.14", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.14.tgz", + "integrity": "sha512-9yvxUaU4jXf2ZNPdmIxoj/f8BG8CDcGM6oHa9JIqxLjQlfY4bpzR1E5CjNimnOX3rxO93w1TQ0jTVt0RSxh9kA==", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "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==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-vue": { + "version": "9.17.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", + "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-reference": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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==" + }, + "lodash-unified": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz", + "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==", + "requires": {} + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, + "micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-prefix-selector": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.15.0.tgz", + "integrity": "sha512-9taaTPs6I4906QC03zBBt0LfTWAhrqEWlKSj0jRlxrg1yV+O91h0wcquu6krcA5L6aEv3QnCeG8B1vZ5WT4ecQ==", + "dev": true, + "requires": {} + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "requires": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + } + }, + "posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "requires": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true + }, + "posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "requires": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.29.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.3.tgz", + "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-external-globals": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.8.0.tgz", + "integrity": "sha512-c65c7hPMCE//cLzC4dLVE25XkuHsBqSkZp+/5pvtZ1MFwqgQLRRkIfuCvI3PnI7Yj8HoXqYtdsRN9gYF5a4tVQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.2", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "magic-string": "^0.30.0" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sass": { + "version": "1.68.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.68.0.tgz", + "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "terser": { + "version": "5.20.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vite": { + "version": "4.4.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-plugin-svg-icons": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-1.1.0.tgz", + "integrity": "sha512-dmpr7Wq8vQN6ajBrVTrBxy8wJjQfcP30i73q+40uAZc8p7EwphBNZ+bVTI0enFaCrsITI8y0Ruo/mN/SaJQ6Hw==", + "dev": true, + "requires": { + "@types/svgo": "^2.6.0", + "cors": "^2.8.5", + "debug": "^4.3.3", + "etag": "^1.8.1", + "fs-extra": "^10.0.0", + "svg-baker": "1.7.0", + "svgo": "^2.8.0" + } + }, + "vue": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "requires": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "vue-i18n": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.4.1.tgz", + "integrity": "sha512-vnQyYE9LBuNOqPpETIcCaGnAyLEqfeIvDcyZ9T+WBCWFTqWw1J8FuF1jfeDwpHBi5JKgAwgXyq1mt8jp/x/GPA==", + "requires": { + "@intlify/core-base": "9.4.1", + "@intlify/shared": "9.4.1", + "@vue/devtools-api": "^6.5.0" + } + }, + "vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "requires": { + "@vue/devtools-api": "^6.5.0" + } + }, + "vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/trojan-web-master/package.json b/trojan-web-master/package.json new file mode 100644 index 0000000..a66b71e --- /dev/null +++ b/trojan-web-master/package.json @@ -0,0 +1,33 @@ +{ + "name": "trojan-web", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "dependencies": { + "axios": "^1.5.0", + "crypto-js": "^4.1.1", + "dayjs": "^1.11.10", + "easyqrcodejs": "^4.4.13", + "element-plus": "^2.3.14", + "nprogress": "^0.2.0", + "vue": "^3.3.4", + "vue-i18n": "^9.4.1", + "vue-router": "^4.2.5", + "vuex": "^4.1.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "@vue/compiler-sfc": "^3.3.4", + "babel-eslint": "^10.1.0", + "eslint": "^8.50.0", + "eslint-plugin-vue": "^9.17.0", + "rollup-plugin-external-globals": "^0.8.0", + "sass": "^1.68.0", + "terser": "^5.20.0", + "vite": "^4.4.9", + "vite-plugin-svg-icons": "^1.1.0" + } +} diff --git a/trojan-web-master/src/App.vue b/trojan-web-master/src/App.vue new file mode 100644 index 0000000..5e1bb62 --- /dev/null +++ b/trojan-web-master/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/trojan-web-master/src/api/common.js b/trojan-web-master/src/api/common.js new file mode 100644 index 0000000..6a76bfb --- /dev/null +++ b/trojan-web-master/src/api/common.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +export function version() { + return request.get('/common/version') +} + +export function serverInfo() { + return request.get('/common/serverInfo') +} + +export function setLoginInfo(data) { + return request.post('/common/loginInfo', data) +} + +export function setClashRules(data) { + return request.post('/common/clashRules', data) +} + +export function getClashRules() { + return request.get('/common/clashRules') +} + +export function resetClashRules() { + return request.delete('/common/clashRules') +} diff --git a/trojan-web-master/src/api/data.js b/trojan-web-master/src/api/data.js new file mode 100644 index 0000000..b8469e6 --- /dev/null +++ b/trojan-web-master/src/api/data.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function setQuota(data) { + return request.post('/trojan/data', data) +} + +export function cleanData(id) { + return request.delete(`/trojan/data?id=${id}`) +} + +export function getResetDay() { + return request.get('/trojan/data/resetDay') +} + +export function updateResetDay(data) { + return request.post('/trojan/data/resetDay', data) +} diff --git a/trojan-web-master/src/api/permission.js b/trojan-web-master/src/api/permission.js new file mode 100644 index 0000000..0e5e52c --- /dev/null +++ b/trojan-web-master/src/api/permission.js @@ -0,0 +1,22 @@ +import request from '@/utils/request' + +// 登录接口 +export function login(data) { + return request.post('/auth/login', data) +} +// 注册接口 +export function register(data) { + return request.post('/auth/register', data) +} +// 检查有没有初始化接口 +export function check() { + return request.get('/auth/check') +} +// 重置密码接口 +export function resetPass(data) { + return request.post('/auth/reset_pass', data) +} +// 获取请求用户名 +export function loginUser() { + return request.get('/auth/loginUser') +} diff --git a/trojan-web-master/src/api/trojan.js b/trojan-web-master/src/api/trojan.js new file mode 100644 index 0000000..4e97e5e --- /dev/null +++ b/trojan-web-master/src/api/trojan.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +export function start() { + return request.post('/trojan/start') +} + +export function stop() { + return request.post('/trojan/stop') +} + +export function restart() { + return request.post('/trojan/restart') +} + +export function update() { + return request.post('/trojan/update') +} + +export function getLoglevel() { + return request.get('/trojan/loglevel') +} + +export function setLoglevel(data) { + return request.post('/trojan/loglevel', data) +} + +export function setDomain(data) { + return request.post('/trojan/domain', data) +} + +export function trojanSwitch(data) { + return request.post('/trojan/switch', data) +} diff --git a/trojan-web-master/src/api/user.js b/trojan-web-master/src/api/user.js new file mode 100644 index 0000000..25f918c --- /dev/null +++ b/trojan-web-master/src/api/user.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +export function userList() { + return request.get('/trojan/user') +} + +export function addUser(data) { + return request.post('/trojan/user', data) +} + +export function updateUser(data) { + return request.post('/trojan/user/update', data) +} + +export function delUser(id) { + return request.delete(`/trojan/user?id=${id}`) +} + +export function setExpire(data) { + return request.post('/trojan/user/expire', data) +} + +export function cancelExpire(id) { + return request.delete(`/trojan/user/expire?id=${id}`) +} diff --git a/trojan-web-master/src/assets/404_images/404.png b/trojan-web-master/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/trojan-web-master/src/assets/404_images/404_cloud.png b/trojan-web-master/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 zcmV;P5@GF$P)z1^@s6R@{TJ00001b5ch_0Itp) z=>Px{SV=@dRCodHoqLcR#eK)SXLk2aLP!ExlChA4#6y+=^RN{OKVlN7GET+i$PP9^ zR9s2L*v|8hkf(_)D$dKqRm8-V1lyIWxJbn=$|g=hDpjdKsES{RV8G%C=q$?uPKVI@ zbbI@l>3n{tyVKlhc5i35XJ>Y|yXtp4kM3Xp`rF^@?)i03k5(>Zihwa@T{TcUOb~82 zTJOM^>y%N4l~$ulnNg#?eZCwAYG0|Oex$WNovFbIGuH{@yXYMt0GXDQ>*{(`>`vI92rNTSOTED2gOaUqjet*R?SA(5hWGK`(H+RF7z@Pt5R z2=#Q)*B8@$Zdg#H7dU@sR^4YNfGhwY_oonNO(js<8Hhuq>4Eq*uAQH?;acfeeP53j z{pr?fc@ulS&Apq2h)v?8a?25H0jvfVtHZ6#j=_%ddbH1m`1z)`# zL%bG^`4;g$2+4vL<6DU~@B}Lxvrz`(N{0->r(37%A=!`>bS)}@7*)EzCriG51HW6^ zRQ&*YKHg^9wvr7T!647_N~nI>nDA{T&^IS{6SReM`-!wZ%$R*I1NSRYvbudmb18R2 zvU}#vQa%_sf=yP!Z$PS@f-69W#;9=y$glJCcZy3jxr_|s>|CimwI&SBO3u3;ux+H^ z=_7Q5+sNE@i+U&eztoLF4HUs9Yvy-V82)tm+1apsi2oY`s*6Svv6JV*-3u?Wso= zt(|z+WqRk73RTrG3daYwgnKJ^Kv={5HRRhEYdr9DgFh$~^kqa^=w?W0QOnWgpXDZO z{7%a$+KAY=&}}HoYZ5AVb-8MurfXc6iH(e-0D7Ffk3qIc?a?(WJo-j0p&P8sbc0#A zJ&s`0yC9kP%2Ek^PcX>kP1VeQ@XLTcKY>cE4;7~871w8M)dBLq0ei;Mu%lHUN*Z~0 zMdwsC+?_XaNx|`BJxxcNHMzu;jmW=)Q8P!a#A_?`bqhwz^e68eMvAtDyo|K zdKRl07OU)nuV11$eZyk$GP?f}^1a(;-hD~1at&XXnO@Lm6RVDOG49$^@KW_}b!;OF zw%SlKtE2A-Hd!&Z^7#MTvjxo0uO7pJYPIt6Q?|yI^cBHaL3)MO<|~bho6Q}@U4}vZ zadJN|8w;|_wQmT!r$ z%Go4VPwVv}DX3!>2wTL}?n8bcpo@~m(mY#3APgTNQLN2CX z_IsW_Sn}0`@2e7|yNH4HZ3hjdj(3%+M~n!AvTmy+Ouv$5%b1|qloqe!J-9<9<%0ZMLke& zs|WO+wP5-dtzAG%_Y&_Aj?uzZi=JA_IB7j`t*mT7_Y)BLr=xZZ@^N1iEUsc{?ff7x zmj{8mJbIr+fJX|R_v3;Wo@6?QLvJ<2+f4kHmqXKH?q`jc>^1oGX~irztr<65vbYMWQt)=pJ} zwP%u^8QZNszmV4@IBk^BUXq^ogV}?kV@>X#H3mXQuozI>C3^@sg4x5;X^KI>5iAB2 zcgY?Cj$rn%beduia0H71#a*(8fFqbaES;tp1RTL)KyjDsA>asR4@;*h1_4K~7*O0L zdk8p!*~8Llib23lZ^VEy;Fo@ZN&Z(_z~Bku+#&1hn#FYlYlhBX-djSkMHUOU5ka;W z{dlv8u8VAjj=Q%Q0(a8d-P0_RBUm$Z+`U#1_%tN@WTS|VV2zM**OMUdw~*{ZaS0s3 z;!ttdk|H2HlFj~ZT$s=iY#}1V5!3Elskes4y1}ePZJD3%MHHoJ;lCUr&C4ADQ_Er zo?CDTsbn$SFCo8yT)+B^E3aOyt7pqKbF@+mR)&gCwq&t4YunY(zX{pIuQvk3x)e)4 zf&40R;UZR-D>XAxu7@Y8b;I|v^_xlWFOsIC+ic$y`kw0P9-$)u;uF_%O)y9y6?O|E zt=0RGw(Mnx))Rc3^aZ|tTV_MKi;U7&pt~(y*bo~W!D3;_C&8$EX`y}v`E_J-tmz$G ztW8ozxL57QuWGjEa^GbfvYDF;*)t9>kU^>BZ2fmm%C} zr55UHAcQs-C)MEy7K>Q+1cOwvi}S6>Zz4Nl&Fu0;_S@gb1H(Z+uvOrA3pOtL31mmG z*hMR3o%-hiKuJhN0TZp86{nn&k+#5RvKg?h_1R z-AvZf4Za^q^~r9!i1z=~_?pPx$+|fV;Z~SXT?ygNa|DY8x;q4eRLjZ!qlge|OROoq zdvUT-SC5qn>gRYYwfbb*yO7LTo-V;4)>ULBq`CuHHkWPx9K1wPKv}^sJ zvzLKsVEbzw6AWU#8|BhkeGn-&$f(yZOE>r|B3)tE{Bu1F+G%XR54pE(f0JR6X4v_~H7n&nb<@P@ypJiL8*CcA&1S?mAuQBEFVHAZZ`2in; z;-jDH3UrEptJi}7^*v-O;=Vz&cx}oaVP8dd!-oUW=xq^fs&3vF2H~SoMRJUCnL&PL z=JR**ZrsL&adLhhV&8X>OOSpYM^ZGa;TveXo4Ox~)0&uIbd5`=s%9_F#Y^H8&R&}# z+p|J8zM*|788wYRn=ZrO@00gxWK)JV^itOUiLrk~J!Bw zmTereZNdQS%W+yMIC1tOGIn@ti}43Nn&2f};loLQXqjM;%43DWcUX%2Q%N#dEG`D` zogv#LT_W2)Y!bJFyxQ)<;t1>~%4d)VsVf~ z5yNDOw9Rl3Wv?LHk(SGC(|{h+bqISui#$NRoc)w}!a}qJG_BVWvpGs&-u*qt0pEBxqQpwq(QUD5uiu!d5 zv(}>8epdCb6z)^tCa#B6Lqme$^LjfzukX@|<$hVS@9URKzE1omP^!r0Q~7^k)*nMG zah7%^#1c$Mh0p6rd|tAOAlCt~CWec;A6LuT#QjN>39)2)r>i0MvAtZUTkHXH2~tJB zeIHF%k@g8Yr)uu;V&>y-VDlpz>9wha$T5vL(?-*yzgH@{uE-pnqD@Y zYo2Zd@OkaP=k-6dVqWJe)71c=Cvi(GPdAs`YByN+FUX&O!)R`;j2KpcR0UQ_JkSf| z61#Cr3`Oi8q{IKFuy;YMrc0Fb28cIRS9d|KtMg`9oISWDjxhH)Xao~q)(0TgjlD)L zsY8z~{%+)Tpd)b=nx|`kYleJ1NR!yIvf&fR)s+2Pd8&&fw&=0rHMT6()l$Lx-;y6r z`r2bPLjIm4Sut^p?(u>oh3nC{;%4|f@;Qi=E0;q%c%C6xBqfCksmy2akRQX(bQxsZ z5V@VnAvRSQ*!O$aC?5BJL}UPOeO*>26-TD$5Nx3#xCBOq3i?pd_tvv648nCk6boJ% zJC<}m=dR`W2s!;e#CpDKId&an~t)uFZJMQeF~>)zphMu z3IOHF@bT1v%qW9I1dH0pRL$6uqQ~-Oa{(lHOImJ@p`vH#s{74p|6{Pc8~JC*CBCh` z4Q&%FiiqcXM`_t!;H8YEkl`xvtwry*d(7JV6Qx35O=uqji$6#1hgg+%ap|RWRtOd? zFi)WqMc<5+iqKB8L2jGh459);#(p%8QSCi@EGrwnh{)8AkZfRrb%I5agC5nAr=Mq8 zO`UPuR>;=!G9aF0Cvi(Gjq2;cW9k0Bj>ujP`+Ly-j!jOLU{UL&MS?IRxEm&E+2mV6 z4cBrJcZzt!(eyodEK@tbM_HciLEEjF+%3Jf*gJwHLsX`A#habKtBzpv>tx`kcILy;`I#fwSqz`x zP}XJ*^wiE-IP4rbf+_U^Q2qhLa#K5YI5khpAU{QpgTyD1s~oxJal-1!Ahuv`YR4*t znky@?8hL{0nL*egaCU0v)3jJ)&0%qOZ6V;TUE!|<@Lk9wNZVg@uw_t6dLBjZHI(mT zh$B}@AjhelH>-T|q*+xC!w(xB?qb6E9V`l*cRx;n?Q6@1J=W`38ydQ)9orR@P+vm= z9V?rSl}dQKQsM15hptMfx9#Yb2qsfIpF;Znt(~@k?oz^r1dHZBK4IRf>h)cr(zm7k zrgw(~b5lFfip#-qO9Y#>Q@YH<6YAZe32x^Lqqnlu+4?4MZ4%5)?aWqE&VCaSENVMs zD~_KEZee}kF39$NS~e?h03{^Y?9`6z0so_@eeO6P2((SGsQIt)O(SzM*vZFlcA@ZQ z$k+A@8wm&|Q#-OY>-$k#+;P4TutKnCkq(_QYg8D1WcuO2s2$OJtsJ*NFgLZ+3XnO8 zW1V2pa*ZE1n{j#Y6pGu!s5eLNH9BrWFqzufjeMC_tKKNRyPhuuQYBclsE1FR>+7}p z?aUn9#>~OG=)LH148i34kDo_mLpJx;P86&jIPMz3X0c#=<{g@-zefieXRi7XWLr6V zPkti=b5lD}VBB$X1R&ec_{sXtvE%iJ#!l4BvYqFtsesGo5#-9`8eIy9Km!Dh7_4{t6|!cF8-ZvX%Q07*qoM6N<$g4q%^5&!@I literal 0 HcmV?d00001 diff --git a/trojan-web-master/src/assets/logo.png b/trojan-web-master/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 + + + + + {{ generateTitle(item.meta.title) }} + + {{ generateTitle(item.meta.title) }} + + + + + + + + diff --git a/trojan-web-master/src/components/Hamburger/index.vue b/trojan-web-master/src/components/Hamburger/index.vue new file mode 100644 index 0000000..b940bfa --- /dev/null +++ b/trojan-web-master/src/components/Hamburger/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/trojan-web-master/src/components/SvgIcon/index.vue b/trojan-web-master/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..985dd0d --- /dev/null +++ b/trojan-web-master/src/components/SvgIcon/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/trojan-web-master/src/icons/index.js b/trojan-web-master/src/icons/index.js new file mode 100644 index 0000000..eaae939 --- /dev/null +++ b/trojan-web-master/src/icons/index.js @@ -0,0 +1,4 @@ +const Mixins = import.meta.globEager("./svg/*.svg") +export default { + mixins: Object.values(Mixins).map((v) => v.default) +} diff --git a/trojan-web-master/src/icons/svg/dashboard.svg b/trojan-web-master/src/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/trojan-web-master/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/icons/svg/documentation.svg b/trojan-web-master/src/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/trojan-web-master/src/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/icons/svg/eye-open.svg b/trojan-web-master/src/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/trojan-web-master/src/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/icons/svg/eye.svg b/trojan-web-master/src/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/trojan-web-master/src/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/icons/svg/password.svg b/trojan-web-master/src/icons/svg/password.svg new file mode 100644 index 0000000..e291d85 --- /dev/null +++ b/trojan-web-master/src/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/icons/svg/user.svg b/trojan-web-master/src/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/trojan-web-master/src/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/trojan-web-master/src/lang/element/en.js b/trojan-web-master/src/lang/element/en.js new file mode 100644 index 0000000..f488ff6 --- /dev/null +++ b/trojan-web-master/src/lang/element/en.js @@ -0,0 +1,122 @@ +export default { + name: 'en', + el: { + colorpicker: { + confirm: 'OK', + clear: 'Clear', + }, + datepicker: { + now: 'Now', + today: 'Today', + cancel: 'Cancel', + clear: 'Clear', + confirm: 'OK', + selectDate: 'Select date', + selectTime: 'Select time', + startDate: 'Start Date', + startTime: 'Start Time', + endDate: 'End Date', + endTime: 'End Time', + prevYear: 'Previous Year', + nextYear: 'Next Year', + prevMonth: 'Previous Month', + nextMonth: 'Next Month', + year: '', + month1: 'January', + month2: 'February', + month3: 'March', + month4: 'April', + month5: 'May', + month6: 'June', + month7: 'July', + month8: 'August', + month9: 'September', + month10: 'October', + month11: 'November', + month12: 'December', + week: 'week', + weeks: { + sun: 'Sun', + mon: 'Mon', + tue: 'Tue', + wed: 'Wed', + thu: 'Thu', + fri: 'Fri', + sat: 'Sat', + }, + months: { + jan: 'Jan', + feb: 'Feb', + mar: 'Mar', + apr: 'Apr', + may: 'May', + jun: 'Jun', + jul: 'Jul', + aug: 'Aug', + sep: 'Sep', + oct: 'Oct', + nov: 'Nov', + dec: 'Dec', + }, + }, + select: { + loading: 'Loading', + noMatch: 'No matching data', + noData: 'No data', + placeholder: 'Select', + }, + cascader: { + noMatch: 'No matching data', + loading: 'Loading', + placeholder: 'Select', + noData: 'No data', + }, + pagination: { + goto: 'Go to', + pagesize: '/page', + total: 'Total {total}', + pageClassifier: '', + deprecationWarning: 'Deprecated usages detected, please refer to the el-pagination documentation for more details', + }, + messagebox: { + title: 'Message', + confirm: 'OK', + cancel: 'Cancel', + error: 'Illegal input', + }, + upload: { + deleteTip: 'press delete to remove', + delete: 'Delete', + preview: 'Preview', + continue: 'Continue', + }, + table: { + emptyText: 'No Data', + confirmFilter: 'Confirm', + resetFilter: 'Reset', + clearFilter: 'All', + sumText: 'Sum', + }, + tree: { + emptyText: 'No Data', + }, + transfer: { + noMatch: 'No matching data', + noData: 'No data', + titles: ['List 1', 'List 2'], + filterPlaceholder: 'Enter keyword', + noCheckedFormat: '{total} items', + hasCheckedFormat: '{checked}/{total} checked', // to be translated + }, + image: { + error: 'FAILED', + }, + pageHeader: { + title: 'Back', // to be translated + }, + popconfirm: { + confirmButtonText: 'Yes', + cancelButtonText: 'No', + }, + }, +}; \ No newline at end of file diff --git a/trojan-web-master/src/lang/element/zh-cn.js b/trojan-web-master/src/lang/element/zh-cn.js new file mode 100644 index 0000000..70ef7f4 --- /dev/null +++ b/trojan-web-master/src/lang/element/zh-cn.js @@ -0,0 +1,122 @@ +export default { + name: 'zh-cn', + el: { + colorpicker: { + confirm: '确定', + clear: '清空', + }, + datepicker: { + now: '此刻', + today: '今天', + cancel: '取消', + clear: '清空', + confirm: '确定', + selectDate: '选择日期', + selectTime: '选择时间', + startDate: '开始日期', + startTime: '开始时间', + endDate: '结束日期', + endTime: '结束时间', + prevYear: '前一年', + nextYear: '后一年', + prevMonth: '上个月', + nextMonth: '下个月', + year: '年', + month1: '1 月', + month2: '2 月', + month3: '3 月', + month4: '4 月', + month5: '5 月', + month6: '6 月', + month7: '7 月', + month8: '8 月', + month9: '9 月', + month10: '10 月', + month11: '11 月', + month12: '12 月', + // week: '周次', + weeks: { + sun: '日', + mon: '一', + tue: '二', + wed: '三', + thu: '四', + fri: '五', + sat: '六', + }, + months: { + jan: '一月', + feb: '二月', + mar: '三月', + apr: '四月', + may: '五月', + jun: '六月', + jul: '七月', + aug: '八月', + sep: '九月', + oct: '十月', + nov: '十一月', + dec: '十二月', + }, + }, + select: { + loading: '加载中', + noMatch: '无匹配数据', + noData: '无数据', + placeholder: '请选择', + }, + cascader: { + noMatch: '无匹配数据', + loading: '加载中', + placeholder: '请选择', + noData: '暂无数据', + }, + pagination: { + goto: '前往', + pagesize: '条/页', + total: '共 {total} 条', + pageClassifier: '页', + deprecationWarning: '你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档', + }, + messagebox: { + title: '提示', + confirm: '确定', + cancel: '取消', + error: '输入的数据不合法!', + }, + upload: { + deleteTip: '按 delete 键可删除', + delete: '删除', + preview: '查看图片', + continue: '继续上传', + }, + table: { + emptyText: '暂无数据', + confirmFilter: '筛选', + resetFilter: '重置', + clearFilter: '全部', + sumText: '合计', + }, + tree: { + emptyText: '暂无数据', + }, + transfer: { + noMatch: '无匹配数据', + noData: '无数据', + titles: ['列表 1', '列表 2'], + filterPlaceholder: '请输入搜索内容', + noCheckedFormat: '共 {total} 项', + hasCheckedFormat: '已选 {checked}/{total} 项', + }, + image: { + error: '加载失败', + }, + pageHeader: { + title: '返回', + }, + popconfirm: { + confirmButtonText: '确定', + cancelButtonText: '取消', + }, + }, +}; \ No newline at end of file diff --git a/trojan-web-master/src/lang/en.js b/trojan-web-master/src/lang/en.js new file mode 100644 index 0000000..100356f --- /dev/null +++ b/trojan-web-master/src/lang/en.js @@ -0,0 +1,127 @@ +export default { + ok: 'ok', + cancel: 'cancel', + reset: 'reset', + inputPass: 'input password', + inputPassAgain: 'input password again', + passLessError: "password number can't be less than 5", + passDifferentError: 'The two inputs are inconsistent!', + setupPass: 'setup admin password', + inputNotNull: "username or password can't be null!", + route: { + dashboard: 'Dashboard', + trojan: 'Trojan', + user: 'User' + }, + navbar: { + version: 'System Version', + setting: 'System Setting', + password: 'Reset Password', + title: 'Change Title', + importExport: 'Import Export', + resetDay: 'Change Reset Day', + clashRules: 'Change Clash Rules', + resetTitle: 'Change data reset day of the month', + changeTitle: 'Change login page title', + changeRules: 'Change clash rules', + changeTitleSuccess: 'Change title success!', + changeRulesSuccess: 'Change clash rules success!', + resetRulesSuccess: 'Reset clash rules success!', + changeDaySuccess: 'Change data reset day success!', + closeResetSuccess: 'Close data reset success!', + inputTitle: 'Input login page title', + versionTitle: 'Trojan-manager Version', + passwordTitle: 'Change admin password', + resetSuccess: 'reset password success!', + meanClose: '0 means close data reset', + exportTip: 'export all database record to csv file', + importTip: 'import csv to database', + importSuccess: 'Import Success', + importCsv: 'import csv file', + exportCsv: 'export csv file' + }, + dashboard: { + memory: 'memory', + disk: 'disk', + trojanVersion: 'Trojan Version', + trojanUser: 'Trojan User', + trojanUptime: 'Trojan Uptime', + netSpeed: 'Network Speed', + netCount: 'Connection Count', + load: 'Load', + upload: 'upload', + download: 'download', + total: 'total', + day: ' day', + hour: ' hour', + minute: ' minute', + second: ' second' + }, + trojan: { + restartSuccess: 'restart trojan success!', + startSuccess: 'start trojan success!', + stopSuccess: 'stop trojan success!', + updateSuccess: 'update trojan success!', + loglevelSuccess: 'set loglevel success!', + switchSuccess: 'switch trojan type success!' + }, + user: { + upload: 'upload', + download: 'download', + total: 'total', + quota: 'quota', + expiryDate: 'expiryDate', + setExpire: 'setExpire', + editExpire: 'editExpire', + cancelExpire: 'cancelExpire', + reset: 'reset data', + unlimit: 'unlimited', + search: 'search username', + limitData: 'limit data', + modifyUser: 'modify user', + trojanShareLink: 'trojan share link', + clashShareLink: 'clash share link', + importClash: 'import to clash', + meanUnlimit: '-1 means unlimited', + inputUsername: 'username', + inputPassword: 'password', + operate: 'operate', + addUser: 'add trojan user', + patchLimitUser: 'patch limit user', + patchDelUser: 'patch delete user?', + modifyUser2: 'modify user ', + userpass: 'username and password', + delUser: 'delete user ', + patchReset: 'patch reset data?', + resetUser: 'reset user ', + data: ' data?', + limitUser: 'limit user ', + limitUser2: 'limit user ', + setupUser: 'setup user ', + limitSuccess: ' data success!', + delUser1: 'delete user ', + success: ' success!', + resetUser1: 'reset user ', + limitAdmin: "can't create username is admin", + passLimit: "password doesn't support chinese!", + addUser2: 'add user ', + week: 'a week', + month: 'a month', + season: 'one season', + halfYear: 'half a year', + year: 'one year', + preset: 'preset', + days: 'days', + setExpireSuccess: 'setup expire success!', + cancelExpireSuccess: 'cancel expire success!', + remaining: 'remaining days' + }, + request: { + requestError: 'request error', + authFail: 'auth fail, please login again', + accessDenied: 'access denied', + notFound: '404 not found', + serverError: 'server error', + connectError: 'connect error' + } +} diff --git a/trojan-web-master/src/lang/index.js b/trojan-web-master/src/lang/index.js new file mode 100644 index 0000000..6844ba1 --- /dev/null +++ b/trojan-web-master/src/lang/index.js @@ -0,0 +1,42 @@ +import { createI18n } from 'vue-i18n' +import elementEnLocale from './element/en' // element-ui lang +import elementZhLocale from './element/zh-cn'// element-ui lang +import enLocale from './en' +import zhLocale from './zh' + +const messages = { + en: { + ...enLocale, + ...elementEnLocale + }, + zh: { + ...zhLocale, + ...elementZhLocale + } +} +export function getLanguage() { + const chooseLanguage = localStorage.getItem('language') + if (chooseLanguage) return chooseLanguage + + // if has not choose language + const language = (navigator.language || navigator.browserLanguage).toLowerCase() + const locales = Object.keys(messages) + for (const locale of locales) { + if (language.indexOf(locale) > -1) { + return locale + } + } + return 'en' +} +const i18n = createI18n({ + // set locale + // options: en | zh + locale: getLanguage(), + // set locale messages + messages: messages, + fallbackLocale: 'en', + silentFallbackWarn: true, + silentTranslationWarn: true +}) + +export default i18n diff --git a/trojan-web-master/src/lang/zh.js b/trojan-web-master/src/lang/zh.js new file mode 100644 index 0000000..dfa500a --- /dev/null +++ b/trojan-web-master/src/lang/zh.js @@ -0,0 +1,147 @@ +export default { + ok: '确定', + cancel: '取消', + reset: '重置', + login: '登录', + register: '注册', + log: '日志', + edit: '编辑', + share: '分享', + terminal: '终端', + refresh: '刷新', + restart: '重启', + start: '启动', + stop: '暂停', + update: '更新', + add: '添加', + username: '用户名', + password: '密码', + loglevel: '日志等级', + all: '所有', + type: '类型', + line: '初始行数', + choice: '请选择', + latest: '最新日志', + delete: '删除', + inputPass: '输入密码', + inputPassAgain: '请再次输入密码', + passLessError: '密码不能小于5位', + passDifferentError: '两次输入不一致!', + setupPass: '设置admin密码', + inputNotNull: '用户名或密码不能为空!', + route: { + dashboard: '首页', + trojan: 'trojan管理', + user: '用户管理' + }, + navbar: { + version: '系统版本', + setting: '系统设置', + password: '修改密码', + title: '修改标题', + clashRules: '修改规则', + importExport: '导入导出', + resetDay: '改重置日', + resetTitle: '修改流量重置日', + changeTitle: '修改登录页标题', + changeRules: '修改clash规则', + inputTitle: '输入登录页标题', + changeTitleSuccess: '修改登录页标题成功!', + changeRulesSuccess: '修改clash规则成功!', + resetRulesSuccess: '重置clash规则成功!', + changeDaySuccess: '修改流量重置日成功!', + closeResetSuccess: '关闭流量重置成功', + versionTitle: 'trojan管理程序版本', + passwordTitle: '变更管理员密码', + resetSuccess: '重置密码成功!', + meanClose: '0代表关闭流量重置', + exportTip: '导出数据库里所有记录到csv文件', + importTip: '导入csv文件数据到数据库', + importSuccess: '导入成功', + importCsv: '导入csv文件', + exportCsv: '导出csv文件' + }, + dashboard: { + memory: '内存', + disk: '硬盘', + trojanVersion: 'trojan 版本', + trojanUser: 'trojan 用户数', + trojanUptime: 'trojan 已运行', + netSpeed: '网速', + netCount: '连接数', + load: '服务器负载', + upload: '上传', + download: '下载', + total: '总共', + day: '天', + hour: '时', + minute: '分', + second: '秒' + }, + trojan: { + restartSuccess: '重启trojan成功!', + startSuccess: '启动trojan成功!', + stopSuccess: '停止trojan成功!', + updateSuccess: '更新trojan成功!', + loglevelSuccess: '设置日志等级成功!', + switchSuccess: '切换trojan类型成功!' + }, + user: { + upload: '上传流量', + download: '下载流量', + total: '总流量', + quota: '流量限制', + expiryDate: '到期日期', + setExpire: '设置限期', + editExpire: '修改限期', + cancelExpire: '取消限期', + reset: '重置流量', + unlimit: '无', + search: '输入用户名搜索', + limitData: '限制流量', + modifyUser: '修改账密', + trojanShareLink: 'trojan链接', + clashShareLink: 'clash链接', + importClash: '导到clash', + meanUnlimit: '-1代表无流量限制', + inputUsername: '输入用户名', + inputPassword: '输入密码', + operate: '操作', + addUser: '新增trojan用户', + patchLimitUser: '限制以下用户流量', + patchDelUser: '确定批量删除以下用户?', + modifyUser2: '修改用户 ', + userpass: '的用户名和密码', + delUser: '确定删除用户 ', + patchReset: '确定重置以下用户流量?', + resetUser: '确定重置用户 ', + data: ' 的流量?', + limitUser: '确定限制用户 ', + limitUser2: '限制用户 ', + limitSuccess: '流量成功!', + delUser1: '删除用户', + success: '成功!', + resetUser1: '重置用户', + limitAdmin: '不能创建用户名为admin的用户!', + passLimit: '密码不支持中文!', + addUser2: '新增用户', + week: '单周', + month: '单月', + season: '单季', + halfYear: '半年', + year: '一年', + preset: '预设', + days: '天数', + setExpireSuccess: '设置用户限期成功!', + cancelExpireSuccess: '取消用户限期成功!', + remaining: '剩余天数' + }, + request: { + requestError: '请求出错', + authFail: '授权失败,请重新登录', + accessDenied: '拒绝访问', + notFound: '请求错误,未找到该资源', + serverError: '服务端错误', + connectError: '连接服务器失败' + } +} diff --git a/trojan-web-master/src/main.js b/trojan-web-master/src/main.js new file mode 100644 index 0000000..a0026d5 --- /dev/null +++ b/trojan-web-master/src/main.js @@ -0,0 +1,42 @@ +import { createApp } from 'vue' +import App from '@/App' +import ElementPlus from 'element-plus' +import '@/styles/index.scss' // global css +import store from '@/store/index' +import router from '@/router/index' +import i18n from './lang/index' // internationalization +import 'virtual:svg-icons-register' +import SvgIcon from '@/components/SvgIcon'// svg组件 +import '@/icons' + +const whiteList = ['/login', '/register'] // no redirect whitelist +const adminList = ['/trojan'] // need admin role + +router.beforeEach(async (to, from, next) => { + if (store.state.UserToken) { + if (store.state.isAdmin === null) { + await store.dispatch('loginUser') + } + if (!store.state.isAdmin) { + router.options.routes.map((x) => { + if (adminList.indexOf(x.path) !== -1) { + x.hidden = true + } + }) + } + if (to.path === '/login') { + // if is logged in, redirect to the home page + next({ path: '/' }) + } else { + next() + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next('/login') + } + } +}) + +createApp(App).use(ElementPlus).use(router).use(store).use(i18n).component('svg-icon', SvgIcon).mount('#app') diff --git a/trojan-web-master/src/router/index.js b/trojan-web-master/src/router/index.js new file mode 100644 index 0000000..5331ab1 --- /dev/null +++ b/trojan-web-master/src/router/index.js @@ -0,0 +1,95 @@ +import { createRouter, createWebHashHistory } from 'vue-router' + +/* Layout */ +import Layout from '@/views/layout' + + +/** + * Note: sub-menu only appear when route children.length >= 1 + * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html + * + * hidden: true if set true, item will not show in the sidebar(default is false) + * alwaysShow: true if set true, will always show the root menu + * if not set alwaysShow, when item has more than one children route, + * it will becomes nested mode, otherwise not show the root menu + * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb + * name:'router-name' the name is used by (must set!!!) + * meta : { + roles: ['admin','editor'] control the page roles (you can set multiple roles) + title: 'title' the name show in sidebar and breadcrumb (recommend set) + icon: 'svg-name' the icon show in the sidebar + breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) + activeMenu: '/example/list' if set path, the sidebar will highlight the path you set + } + */ + +/** + * constantRoutes + * a base page that does not have permission requirements + * all roles can be accessed + */ +export const constantRoutes = [ + { + path: '/login', + component: () => import('@/views/login/login'), + hidden: true + }, + { + path: '/register', + component: () => import('@/views/login/register'), + hidden: true + }, + + { + path: '/404', + component: () => import('@/views/errorPage/404'), + hidden: true + }, + + { + path: '/', + component: Layout, + redirect: '/dashboard', + children: [{ + path: 'dashboard', + name: 'Dashboard', + component: () => import('@/views/dashboard/index'), + meta: { title: 'dashboard', icon: 'dashboard' } + }] + }, + + { + path: '/trojan', + component: Layout, + children: [ + { + path: '', + name: 'trojan', + component: () => import('@/views/trojan/index'), + meta: { title: 'trojan', icon: 'documentation' } + } + ] + }, + { + path: '/user', + component: Layout, + children: [ + { + path: '', + name: 'user', + component: () => import('@/views/user/index'), + meta: { title: 'user', icon: 'user' } + } + ] + }, + // 404 page must be placed at the end !!! + { path: '/:pathMatch(.*)*', redirect: '/404', hidden: true } +] + +const router = createRouter({ + history: createWebHashHistory(), + scrollBehavior: () => ({ y: 0 }), + routes: constantRoutes +}) + +export default router diff --git a/trojan-web-master/src/store/actions.js b/trojan-web-master/src/store/actions.js new file mode 100644 index 0000000..4858aba --- /dev/null +++ b/trojan-web-master/src/store/actions.js @@ -0,0 +1,19 @@ +import { loginUser } from '@/api/permission' + +export default { + loginUser({ commit }) { + return new Promise((resolve, reject) => { + loginUser().then(res => { + if (res.code === 200) { + commit('SET_ADMIN', res.data.username === 'admin') + } else if (res.code === 201) { + commit('LOGIN_OUT') + location.reload() + } + resolve(res) + }).catch(error => { + reject(error) + }) + }) + } +} diff --git a/trojan-web-master/src/store/getters.js b/trojan-web-master/src/store/getters.js new file mode 100644 index 0000000..7dfd4b9 --- /dev/null +++ b/trojan-web-master/src/store/getters.js @@ -0,0 +1,3 @@ +export default { + sidebar: state => state.app.sidebar +} diff --git a/trojan-web-master/src/store/index.js b/trojan-web-master/src/store/index.js new file mode 100644 index 0000000..3f39258 --- /dev/null +++ b/trojan-web-master/src/store/index.js @@ -0,0 +1,15 @@ +import { createStore } from 'vuex' + +import state from './state' +import getters from './getters' +import modules from './modules' +import actions from './actions' +import mutations from './mutations' + +export default createStore({ + state, + getters, + mutations, + actions, + modules +}) diff --git a/trojan-web-master/src/store/modules.js b/trojan-web-master/src/store/modules.js new file mode 100644 index 0000000..8c6088a --- /dev/null +++ b/trojan-web-master/src/store/modules.js @@ -0,0 +1,5 @@ +import app from './modules/app' + +export default { + app +} diff --git a/trojan-web-master/src/store/modules/app.js b/trojan-web-master/src/store/modules/app.js new file mode 100644 index 0000000..9ba1e25 --- /dev/null +++ b/trojan-web-master/src/store/modules/app.js @@ -0,0 +1,56 @@ +import { getLanguage } from '@/lang/index' + +const state = { + sidebar: { + opened: Object.prototype.hasOwnProperty.call(localStorage, 'sidebarStatus') ? localStorage.getItem('sidebarStatus') === 0 : true, + withoutAnimation: false + }, + language: getLanguage(), + device: 'desktop' +} + +const mutations = { + TOGGLE_SIDEBAR: state => { + state.sidebar.opened = !state.sidebar.opened + state.sidebar.withoutAnimation = false + if (state.sidebar.opened) { + localStorage.setItem('sidebarStatus', 1) + } else { + localStorage.setItem('sidebarStatus', 0) + } + }, + CLOSE_SIDEBAR: (state, withoutAnimation) => { + localStorage.setItem('sidebarStatus', 0) + state.sidebar.opened = false + state.sidebar.withoutAnimation = withoutAnimation + }, + TOGGLE_DEVICE: (state, device) => { + state.device = device + }, + SET_LANGUAGE: (state, language) => { + state.language = language + localStorage.setItem('language', language) + } +} + +const actions = { + toggleSideBar({ commit }) { + commit('TOGGLE_SIDEBAR') + }, + closeSideBar({ commit }, { withoutAnimation }) { + commit('CLOSE_SIDEBAR', withoutAnimation) + }, + toggleDevice({ commit }, device) { + commit('TOGGLE_DEVICE', device) + }, + setLanguage({ commit }, language) { + commit('SET_LANGUAGE', language) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/trojan-web-master/src/store/mutations.js b/trojan-web-master/src/store/mutations.js new file mode 100644 index 0000000..72cef18 --- /dev/null +++ b/trojan-web-master/src/store/mutations.js @@ -0,0 +1,36 @@ +export default { + LOGIN_IN(state, token) { + state.UserToken = token + }, + LOGIN_OUT(state) { + state.UserToken = '' + }, + SET_ADMIN(state, bool) { + state.isAdmin = bool + }, + SET_TITLE(state, docTitle) { + state.docTitle = docTitle + localStorage.setItem('docTitle', state.docTitle) + }, + SET_WIDTH(state, width) { + state.dialogWidth = width + }, + SET_NPROGRESS(state, bool) { + state.nprogress = bool + }, + SET_NOERROR(state, bool) { + state.noerror = bool + }, + SET_LINE(state, line) { + state.line = line + localStorage.setItem('line', state.line) + }, + SET_LOGLEVEL(state, loglevel) { + state.loglevel = loglevel + localStorage.setItem('loglevel', state.loglevel) + }, + SET_TYPE(state, type) { + state.type = type + localStorage.setItem('type', state.type) + } +} diff --git a/trojan-web-master/src/store/state.js b/trojan-web-master/src/store/state.js new file mode 100644 index 0000000..223bf47 --- /dev/null +++ b/trojan-web-master/src/store/state.js @@ -0,0 +1,16 @@ +export default { + get UserToken() { + return localStorage.getItem('token') + }, + set UserToken(value) { + localStorage.setItem('token', value) + }, + loglevel: Object.prototype.hasOwnProperty.call(localStorage, 'loglevel') ? parseInt(localStorage.getItem('loglevel')) : 1, + line: Object.prototype.hasOwnProperty.call(localStorage, 'line') ? parseInt(localStorage.getItem('line')) : 300, + type: Object.prototype.hasOwnProperty.call(localStorage, 'type') ? localStorage.getItem('type') : 'trojan', + docTitle: Object.prototype.hasOwnProperty.call(localStorage, 'docTitle') ? localStorage.getItem('docTitle') : '', + dialogWidth: '25%', + nprogress: true, + noerror: false, + isAdmin: null +} diff --git a/trojan-web-master/src/styles/element-ui.scss b/trojan-web-master/src/styles/element-ui.scss new file mode 100644 index 0000000..5927392 --- /dev/null +++ b/trojan-web-master/src/styles/element-ui.scss @@ -0,0 +1,62 @@ +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +// dropdown +.el-dropdown-menu { + a { + display: block + } +} + +// to fix el-date-picker css style +.el-range-separator { + box-sizing: content-box; +} + +.el-table { + ::-webkit-scrollbar { + /*滚动条整体部分,其中的属性有width,height,background,border等*/ + width: 6px; + height: 6px; + } + + ::-webkit-scrollbar-button { + /*滚动条两端的按钮,可以用display:none让其不显示*/ + display: none; + } + + ::-webkit-scrollbar-thumb { + /*滚动条里面可以拖动的那部分*/ + background: #cee0f0; + border-radius: 4px; + &:hover { + background-color: rgba(0, 0, 0, .4); + } + } + + ::-webkit-scrollbar-corner, ::-webkit-scrollbar-resizer, + ::-webkit-scrollbar-track, ::-webkit-scrollbar-track-piece { + background: #F0F5FB; + } +} + +.ruleDialog { + .el-dialog__body { + padding: 0; + } + .el-textarea__inner { + padding: 3px; + } +} + +.el-menu-item .el-menu-tooltip__trigger { + display: inline +} + +.el-form-item__content { + flex-wrap: nowrap +} diff --git a/trojan-web-master/src/styles/index.scss b/trojan-web-master/src/styles/index.scss new file mode 100644 index 0000000..a7ccf94 --- /dev/null +++ b/trojan-web-master/src/styles/index.scss @@ -0,0 +1,66 @@ +@import './normalize.scss'; +@import './variables.scss'; +@import './mixin.scss'; +@import './transition.scss'; +@import './element-ui.scss'; +@import './sidebar.scss'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +// main-container global css +.app-container { + padding: 20px; +} diff --git a/trojan-web-master/src/styles/mixin.scss b/trojan-web-master/src/styles/mixin.scss new file mode 100644 index 0000000..36b74bb --- /dev/null +++ b/trojan-web-master/src/styles/mixin.scss @@ -0,0 +1,28 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} diff --git a/trojan-web-master/src/styles/normalize.scss b/trojan-web-master/src/styles/normalize.scss new file mode 100644 index 0000000..d942f58 --- /dev/null +++ b/trojan-web-master/src/styles/normalize.scss @@ -0,0 +1,171 @@ +@charset "utf-8"; + +html { + + color: #000; + background: #fff; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +html * { + outline: none; + -webkit-text-size-adjust: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + box-sizing: border-box; +} + +html, +body { + font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; + height: 100%; + width: 100%; + overflow: auto; +} + +body, +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +code, +form, +fieldset, +legend, +input, +textarea, +p, +blockquote, +th, +td, +hr, +button, +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + margin: 0; + padding: 0; +} + +input, +select, +textarea { + font-size: 100%; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +fieldset, +img { + border: 0; +} + +abbr, +acronym { + border: 0; + font-variant: normal; +} + +del { + text-decoration: line-through; +} + +address, +caption, +cite, +code, +dfn, +em, +th, +i, +var { + font-style: normal; + font-weight: 500; +} + +ol, +ul { + list-style: none; +} + +caption, +th { + text-align: left; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: 500; +} + +q:before, +q:after { + content: ''; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +a:hover { + text-decoration: underline; +} + +ins, +a, +a:active, +a:visited, +a:link { + text-decoration: none; +} + +.clearfix { + &:after { + display: table; + clear: both; + content: ""; + visibility: hidden; + ; + height: 0; + } +} + diff --git a/trojan-web-master/src/styles/sidebar.scss b/trojan-web-master/src/styles/sidebar.scss new file mode 100644 index 0000000..3dad4c3 --- /dev/null +++ b/trojan-web-master/src/styles/sidebar.scss @@ -0,0 +1,209 @@ +#app { + + .main-container { + min-height: 100%; + transition: margin-left .28s; + margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + transition: width 0.28s; + width: $sideBarWidth !important; + background-color: $menuBg; + height: 100%; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + background-color: $menuHover !important; + } + } + + .is-active>.el-submenu__title { + color: $subMenuActiveText !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $sideBarWidth !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .el-submenu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform .28s; + width: $sideBarWidth !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/trojan-web-master/src/styles/transition.scss b/trojan-web-master/src/styles/transition.scss new file mode 100644 index 0000000..4cb27cc --- /dev/null +++ b/trojan-web-master/src/styles/transition.scss @@ -0,0 +1,48 @@ +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/trojan-web-master/src/styles/variables.scss b/trojan-web-master/src/styles/variables.scss new file mode 100644 index 0000000..be55772 --- /dev/null +++ b/trojan-web-master/src/styles/variables.scss @@ -0,0 +1,25 @@ +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#304156; +$menuHover:#263445; + +$subMenuBg:#1f2d3d; +$subMenuHover:#001528; + +$sideBarWidth: 210px; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + subMenuActiveText: $subMenuActiveText; + menuBg: $menuBg; + menuHover: $menuHover; + subMenuBg: $subMenuBg; + subMenuHover: $subMenuHover; + sideBarWidth: $sideBarWidth; +} diff --git a/trojan-web-master/src/utils/common.js b/trojan-web-master/src/utils/common.js new file mode 100644 index 0000000..8cdead7 --- /dev/null +++ b/trojan-web-master/src/utils/common.js @@ -0,0 +1,34 @@ +export function readablizeBytes(bytes) { + if (bytes === 0) { + return '0' + } + const s = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'] + const e = Math.floor(Math.log(bytes) / Math.log(1024)) + const r = bytes / Math.pow(1024, Math.floor(e)) + return ((r + '').indexOf('.') !== -1 ? r.toFixed(2) : r) + ' ' + s[e] +} + +export function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)) +} + +export function isValidIP(ip) { + var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + return reg.test(ip) +} + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +export function base64Encode(str) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(str)) +} + +export function base64Decode(str) { + return CryptoJS.enc.Base64.parse(str).toString(CryptoJS.enc.Utf8) +} diff --git a/trojan-web-master/src/utils/request.js b/trojan-web-master/src/utils/request.js new file mode 100644 index 0000000..4d62b8d --- /dev/null +++ b/trojan-web-master/src/utils/request.js @@ -0,0 +1,84 @@ +import axios from 'axios' +import store from '@/store/index.js' +import { ElMessage } from 'element-plus' +import NProgress from 'nprogress' +import i18n from '@/lang' + +NProgress.configure({ showSpinner: false }) // NProgress Configuration + +function validateStatus(status) { + const { t } = i18n.global + switch (status) { + case 400: + ElMessage.error(t('request.requestError')) + break + case 401: + ElMessage.warning({ + message: t('request.authFail') + }) + store.commit('LOGIN_OUT') + setTimeout(() => { + window.location.reload() + }, 1000) + return + case 403: + ElMessage.warning({ + ElMessage: t('request.accessDenied') + }) + break + case 404: + ElMessage.warning({ + ElMessage: t('request.notFound') + }) + break + case 500: + if (!store.state.noerror) { + ElMessage.warning({ + ElMessage: t('request.serverError') + }) + } + break + } + return status >= 200 && status < 300 +} + +var instance = axios.create({ + timeout: 8000, + baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api', + validateStatus +}) + +const progressWhiteList = ['/auth/loginUser'] // no progress whitelist +// 添加请求拦截器 +instance.interceptors.request.use( + function(config) { + if (store.state.nprogress && progressWhiteList.indexOf(config.url) === -1) { + NProgress.start() + } + // 请求头添加token + if (store.state.UserToken) { + config.headers.Authorization = `Bearer ${store.state.UserToken}` + } + return config + }, + function(error) { + return Promise.reject(error) + } +) + +// 响应拦截器即异常处理 +instance.interceptors.response.use( + response => { + NProgress.done() + return response.data + }, + err => { + if (store.state.nprogress && err.response === undefined && !store.state.noerror) { + ElMessage.error(i18n.global.t('request.connectError')) + } + NProgress.done() + return Promise.reject(err.response) + } +) + +export default instance diff --git a/trojan-web-master/src/views/dashboard/index.vue b/trojan-web-master/src/views/dashboard/index.vue new file mode 100644 index 0000000..8bc65c8 --- /dev/null +++ b/trojan-web-master/src/views/dashboard/index.vue @@ -0,0 +1,304 @@ + + + + + \ No newline at end of file diff --git a/trojan-web-master/src/views/errorPage/404.vue b/trojan-web-master/src/views/errorPage/404.vue new file mode 100644 index 0000000..060ccef --- /dev/null +++ b/trojan-web-master/src/views/errorPage/404.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/trojan-web-master/src/views/layout/components/AppMain.vue b/trojan-web-master/src/views/layout/components/AppMain.vue new file mode 100644 index 0000000..18eb2f7 --- /dev/null +++ b/trojan-web-master/src/views/layout/components/AppMain.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/trojan-web-master/src/views/layout/components/Navbar.vue b/trojan-web-master/src/views/layout/components/Navbar.vue new file mode 100644 index 0000000..96c3422 --- /dev/null +++ b/trojan-web-master/src/views/layout/components/Navbar.vue @@ -0,0 +1,416 @@ + + + + + \ No newline at end of file diff --git a/trojan-web-master/src/views/layout/components/Sidebar/Link.vue b/trojan-web-master/src/views/layout/components/Sidebar/Link.vue new file mode 100644 index 0000000..f498500 --- /dev/null +++ b/trojan-web-master/src/views/layout/components/Sidebar/Link.vue @@ -0,0 +1,42 @@ + + + diff --git a/trojan-web-master/src/views/layout/components/Sidebar/SidebarItem.vue b/trojan-web-master/src/views/layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..8e7e11c --- /dev/null +++ b/trojan-web-master/src/views/layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/trojan-web-master/src/views/layout/components/Sidebar/index.vue b/trojan-web-master/src/views/layout/components/Sidebar/index.vue new file mode 100644 index 0000000..274a4df --- /dev/null +++ b/trojan-web-master/src/views/layout/components/Sidebar/index.vue @@ -0,0 +1,47 @@ + + + diff --git a/trojan-web-master/src/views/layout/components/index.js b/trojan-web-master/src/views/layout/components/index.js new file mode 100644 index 0000000..97ee3cd --- /dev/null +++ b/trojan-web-master/src/views/layout/components/index.js @@ -0,0 +1,3 @@ +export { default as Navbar } from './Navbar' +export { default as Sidebar } from './Sidebar' +export { default as AppMain } from './AppMain' diff --git a/trojan-web-master/src/views/layout/index.vue b/trojan-web-master/src/views/layout/index.vue new file mode 100644 index 0000000..982f257 --- /dev/null +++ b/trojan-web-master/src/views/layout/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/trojan-web-master/src/views/layout/mixin/ResizeHandler.js b/trojan-web-master/src/views/layout/mixin/ResizeHandler.js new file mode 100644 index 0000000..e221b64 --- /dev/null +++ b/trojan-web-master/src/views/layout/mixin/ResizeHandler.js @@ -0,0 +1,45 @@ +import store from '@/store' + +const { body } = document +const WIDTH = 992 // refer to Bootstrap's responsive design + +export default { + watch: { + $route() { + if (this.device === 'mobile' && this.sidebar.opened) { + store.dispatch('app/closeSideBar', { withoutAnimation: false }) + } + } + }, + beforeMount() { + window.addEventListener('resize', this.$_resizeHandler) + }, + beforeDestroy() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + mounted() { + const isMobile = this.$_isMobile() + if (isMobile) { + store.dispatch('app/toggleDevice', 'mobile') + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_isMobile() { + const rect = body.getBoundingClientRect() + return rect.width - 1 < WIDTH + }, + $_resizeHandler() { + if (!document.hidden) { + const isMobile = this.$_isMobile() + store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop') + + if (isMobile) { + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + } + } + } +} diff --git a/trojan-web-master/src/views/login/login.vue b/trojan-web-master/src/views/login/login.vue new file mode 100644 index 0000000..29f5436 --- /dev/null +++ b/trojan-web-master/src/views/login/login.vue @@ -0,0 +1,218 @@ + + + + + + + diff --git a/trojan-web-master/src/views/login/register.vue b/trojan-web-master/src/views/login/register.vue new file mode 100644 index 0000000..c3b9a85 --- /dev/null +++ b/trojan-web-master/src/views/login/register.vue @@ -0,0 +1,176 @@ + + + + + + + diff --git a/trojan-web-master/src/views/trojan/index.vue b/trojan-web-master/src/views/trojan/index.vue new file mode 100644 index 0000000..524e154 --- /dev/null +++ b/trojan-web-master/src/views/trojan/index.vue @@ -0,0 +1,356 @@ + + + + + \ No newline at end of file diff --git a/trojan-web-master/src/views/user/index.vue b/trojan-web-master/src/views/user/index.vue new file mode 100644 index 0000000..6aab3e3 --- /dev/null +++ b/trojan-web-master/src/views/user/index.vue @@ -0,0 +1,630 @@ + + + + + \ No newline at end of file diff --git a/trojan-web-master/vite.config.js b/trojan-web-master/vite.config.js new file mode 100644 index 0000000..2997bd1 --- /dev/null +++ b/trojan-web-master/vite.config.js @@ -0,0 +1,88 @@ +import path, { resolve } from 'path' +import { defineConfig } from "vite" +import vue from "@vitejs/plugin-vue" +import viteSvgIcons from 'vite-plugin-svg-icons' +import externalGlobals from 'rollup-plugin-external-globals' + +export default defineConfig(({ command }) => { + + const proxyTarget = 'http://xxooo.online' + + let vueI18n = {} + + if (command === "serve") { + vueI18n["vue-i18n"] = "vue-i18n/dist/vue-i18n.cjs.js" //解决dev运行警告You are running the esm-bundler build of vue-i18n. + } + + return { + base: "./", + define: { + 'process.platform': null, + 'process.version': null + }, + plugins: [ + vue(), + viteSvgIcons({ + // 指定需要缓存的图标文件夹(可以配置多个) + iconDirs: [path.resolve(process.cwd(), 'src/icons/svg')], + // 指定symbolId格式 + symbolId: 'icon-[name]' + }) + ], + resolve: { + alias: { + '~': resolve(__dirname, './'), + '@': resolve(__dirname, 'src'), + ...vueI18n + }, + extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'] + }, + server: { + host: "127.0.0.1", + port: 5173, + open: true, + // 反向代理 + proxy: { + "/api": { + target: proxyTarget, + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, "") + }, + "/ws": { + target: proxyTarget, + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(/^\/ws/, "") + }, + } + }, + build: { + assetsDir: 'static', + minify: 'terser', + terserOptions: { + compress: { + drop_console: true, + drop_debugger: true + } + }, + rollupOptions:{ + external: ['vue', 'vuex', 'vue-i18n', 'vue-router', 'element-plus', + 'axios', 'crypto-js', 'dayjs', 'easyqrcodejs', 'nprogress'], + plugins: [ + externalGlobals({ + vue: 'Vue', + vuex: 'Vuex', + 'vue-i18n': 'VueI18n', + 'vue-router': 'VueRouter', + axios: 'axios', + 'crypto-js': 'CryptoJS', + 'dayjs': 'dayjs', + 'easyqrcodejs': 'QRCode', + 'nprogress': 'NProgress', + 'element-plus': 'ElementPlus' + }), + ] + } + } + } +}) \ No newline at end of file diff --git a/trojanZ.iml b/trojanZ.iml new file mode 100644 index 0000000..8021953 --- /dev/null +++ b/trojanZ.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/部署架构建议.md b/部署架构建议.md new file mode 100644 index 0000000..6d398b8 --- /dev/null +++ b/部署架构建议.md @@ -0,0 +1,190 @@ +# Trojan、Nginx 与 Caddy 共用 80/443 的部署方案 + +> 适用对象:已按项目 README 的 Docker 方式运行 Trojan 管理程序,希望同一台服务器继续部署多个 HTTPS 网站或 Web 服务。 +> +> 本文只给出架构和操作建议,不直接修改已经运行的服务器。 + +## 已确认的现状 + +- Trojan 对外域名:`www.hk.chermack.top`。 +- 容器 `trojan`:镜像 `jrohy/trojan`,已运行约两年,当前已连续运行七周;`docker ps` 没有显示端口映射。这与项目 README 的 `--net=host` 启动方式一致,意味着它很可能直接使用宿主机网络,并占用 Trojan 的 `443` 与管理 Web 的 `80`。 +- 容器 `trojan-mariadb`:镜像 `mariadb:10.2`,当前映射 `0.0.0.0:3306->3306` 和 `[::]:3306->3306`;即 MySQL/MariaDB 已对全网开放。 + +本文后续均直接使用该真实 Trojan 域名:**`www.hk.chermack.top`**。 + +## 1. 结论 + +不能让 Trojan、Nginx 或 Caddy 同时直接监听宿主机的 `80`、`443`:同一 IP:端口只能被一个进程绑定。 + +由于 Trojan 使用的并非 HTTP/HTTPS Web 请求,而是基于 TLS 的代理协议,普通的 `reverse_proxy` 规则无法把 `/`、`/api` 一类路径转发给它。要同时使用 Trojan 和多个网站,应按 TLS 握手中的 **SNI(访问域名)** 在四层分流: + +```mermaid +flowchart TB + Internet["Internet"] --> N80["Nginx :80\nHTTP 转发"] + Internet --> N443["Nginx stream :443\n按 TLS SNI 分流"] + N80 --> Caddy["Caddy :8080 / :9443\n自动申请、续期证书\n托管网站"] + N443 -->|"www.hk.chermack.top"| Trojan["Trojan 容器 :8443\nTLS 直通"] + N443 -->|"app.example.com\nwww.example.com"| Caddy + Caddy --> App1["网站 / 应用 1"] + Caddy --> App2["网站 / 应用 2"] +``` + +推荐职责划分: + +- **Nginx**:唯一占用公网 `80` 和 `443`;`443` 使用 `stream + ssl_preread` 按域名转发 TLS 流量,自己不终止 TLS。 +- **Caddy**:监听本机 `8080`/`9443`,为普通网站自动申请和续期 Let's Encrypt/ZeroSSL 证书,并反向代理到各个 Web 应用。 +- **Trojan**:改为仅监听宿主机本地端口(示例使用 `8443`),由 Nginx 按 `www.hk.chermack.top` 的 SNI 转发。它仍使用自己的 Trojan TLS 证书。 + +## 2. 域名规划 + +应使用不同的子域名,不要让 Trojan 和网站共用同一个域名: + +|用途|示例域名|TLS 终止位置| +|---|---|---| +|Trojan 服务|`www.hk.chermack.top`|Trojan| +|Trojan 管理后台|建议新增 `panel.hk.chermack.top`|Caddy| +|普通网站|例如 `site.hk.chermack.top`|Caddy| +|其他应用|例如 `app.hk.chermack.top`|Caddy| + +所有域名的 A/AAAA 记录都指向这台服务器。Trojan 客户端应继续使用 `www.hk.chermack.top` 作为 SNI 和服务器地址。 + +## 3. 前置条件与注意事项 + +1. 所有服务应只向 Docker 内网或 `127.0.0.1` 发布端口;不要把 Trojan 的新端口、Caddy 的 `8080/9443` 直接暴露到公网。 +2. Nginx 需要带有 `stream` 和 `ssl_preread` 模块。Ubuntu/Debian 通常需要安装 `libnginx-mod-stream`;确认方式:`nginx -V 2>&1 | grep stream`。 +3. 防火墙、安全组只开放公网 TCP `80`、`443`(以及 SSH 管理端口);关闭原先直接暴露的 Trojan 端口。 +4. 当前 `trojan-mariadb` 的 `3306` 正暴露于 IPv4/IPv6 公网。除非确有远程数据库访问需求,切换时应改为仅容器网络或 `127.0.0.1:3306`,并从安全组和防火墙移除公网 3306。 +5. Trojan 的 TLS 证书仍应有效且包含 `www.hk.chermack.top`。Caddy 的自动 HTTPS 只负责它所托管的网站,**不会自动替 Trojan 申请或安装证书**。 +5. Caddy 使用 HTTP-01 验证时,Nginx 的 `80` 必须完整转发到 Caddy。Caddy 成功续期不需要人工定时执行证书申请命令。 + +## 4. 修改现有 Trojan Docker 端口 + +README 示例使用 `--net=host`,因此 Trojan 和管理 Web 服务会直接占用宿主机端口。建议改为显式端口映射,或在仍使用 host 网络时把 Trojan 和 Web 的监听端口改为非公网端口。 + +### 建议的目标端口 + +|服务|容器/程序内端口|宿主机绑定|公网暴露| +|---|---:|---|---| +|Trojan|改为 `8443`|`127.0.0.1:8443`|否,由 Nginx 443 转发| +|Trojan Web 管理后台|改为 `8081`|`127.0.0.1:8081`|否,由 Caddy 代理| +|Caddy HTTP|`8080`|`127.0.0.1:8080`|否,由 Nginx 80 转发| +|Caddy HTTPS|`8443`|`127.0.0.1:9443`(避免与 Trojan 冲突)|否,由 Nginx 443 转发| + +上表特意将 Caddy 的宿主机 HTTPS 端口设为 `9443`,避免和 Trojan 的 `8443` 冲突。实际端口可以调整,但必须保证唯一。 + +### Trojan 配置原则 + +在 Trojan 的 `/usr/local/etc/trojan/config.json` 中,把 `local_port` 从 `443` 改为 `8443`;管理程序的 Web 服务以类似方式改为 `8081`(例如 systemd 服务执行 `trojan web -p 8081`)。 + +如果容器仍采用 `--net=host`,以上端口是宿主机端口。若改为 Docker bridge 网络,推荐使用仅回环地址的映射,例如: + +```bash +-p 127.0.0.1:8443:8443 +-p 127.0.0.1:8081:8081 +``` + +重建容器前,应先备份: + +```bash +docker inspect trojan > trojan.inspect.backup.json +docker cp trojan:/usr/local/etc/trojan/config.json ./trojan-config.backup.json +``` + +不要在未确认持久化目录和数据库位置前删除旧容器。README 所用方案还会单独运行 MariaDB,必须保留其数据卷。 + +## 5. Nginx 四层 SNI 分流示例 + +以下配置应放在 Nginx 主配置可加载的位置;`stream` 块通常不能放入普通的 `server {}` HTTP 配置文件。域名和端口必须替换为实际值。 + +```nginx +# /etc/nginx/nginx.conf(顶层 stream 块) +stream { + map $ssl_preread_server_name $tls_upstream { + www.hk.chermack.top trojan_backend; + default caddy_https_backend; + } + + upstream trojan_backend { + server 127.0.0.1:8443; + } + + upstream caddy_https_backend { + server 127.0.0.1:9443; + } + + server { + listen 443 reuseport; + proxy_pass $tls_upstream; + ssl_preread on; + proxy_timeout 1h; + proxy_connect_timeout 5s; + } +} + +http { + server { + listen 80; + server_name _; + + location / { + proxy_pass http://127.0.0.1:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto http; + } + } +} +``` + +此配置的关键是:Nginx 在 `443` 上只读取 ClientHello 的 SNI,不解密 TLS;因此 Trojan 和 Caddy 都能拿到自己完整的 TLS 握手和证书。 + +若客户端未发送 SNI,会被送到默认的 Caddy 后端;Trojan 客户端必须明确配置 SNI 为 `www.hk.chermack.top`。 + +## 6. Caddy 自动 HTTPS 示例 + +在 Caddyfile 设置内部监听端口。Caddy 仍会使用域名来签发和管理证书,只是外部 `80/443` 由 Nginx 转发到它。 + +```caddyfile +{ + http_port 8080 + https_port 9443 + email ops@example.com +} + +panel.hk.chermack.top { + reverse_proxy 127.0.0.1:8081 +} + +site.hk.chermack.top { + reverse_proxy 127.0.0.1:3000 +} + +app.hk.chermack.top { + reverse_proxy 127.0.0.1:9000 +} +``` + +其中 `panel.hk.chermack.top` 反向代理 Trojan 管理后台;其他站点各自指向对应容器或本机应用。Caddy 会保存证书与续期状态,容器部署时必须挂载其数据目录,例如 `/data` 与 `/config`,否则重建容器会丢失 ACME 账户和证书缓存。 + +## 7. 建议实施顺序 + +1. 记录现有容器、端口、配置、数据库卷和证书路径,并完成备份。尤其保存 `docker inspect trojan`、`docker inspect trojan-mariadb` 和 MariaDB 数据卷信息;`trojan` 没有端口映射,变更前必须确认其是否为 `--network host`。 +2. 为 `trojan`、`panel`、网站分别创建 DNS 记录。 +3. 安装并验证 Nginx 的 `stream` 模块,但暂不切走 80/443。 +4. 启动 Caddy 于 `127.0.0.1:8080` 和 `127.0.0.1:9443`,先验证内部反向代理可用。 +5. 将 Trojan 改至 `127.0.0.1:8443`,将管理后台改至 `127.0.0.1:8081`,确认直连本机端口均正常。 +6. 配置 Nginx `80` 转 Caddy、`443` SNI 分流,执行 `nginx -t`。 +7. 在维护窗口切换 Nginx 到公网 `80/443`,验证网站 HTTPS、Caddy 证书签发、Trojan 客户端连接、管理后台登录和订阅链接。 +8. 最后收紧 Docker 端口映射与防火墙,只留 `80/443` 公开;将当前 MariaDB 的公网 `3306` 映射关闭或至少限制为 `127.0.0.1`。 + +## 8. 不建议的方案 + +- 让 Caddy 或 Nginx 直接以 HTTP `reverse_proxy` 转发 Trojan:协议不匹配,不能工作。 +- Trojan 与网站共用同一个域名且共用 443:SNI 无法区分目标,除非引入更复杂的协议伪装/回落设计;不适合当前项目的常规部署。 +- 将 Trojan 改端口后直接对公网开放该端口:虽能运行,但无法达到只使用 80/443 的目标,也增加暴露面。 +- 认为 Caddy 能替 Trojan 自动处理证书:Caddy 只能为它实际终止 TLS 的连接管理证书;本方案中 Trojan 的 TLS 是端到端直通。 + +## 9. 后续执行前需要确认的信息 + +实施时需要根据真实状态补全:当前 Trojan 容器的 `docker inspect` 输出、实际 `config.json`、MariaDB 容器/卷、当前占用 80/443 的进程、服务器系统发行版、可用域名及 DNS 提供商。

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≪0+( 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 literal 0 HcmV?d00001 diff --git a/trojan-web-master/.eslintrc.js b/trojan-web-master/.eslintrc.js new file mode 100644 index 0000000..0616c7a --- /dev/null +++ b/trojan-web-master/.eslintrc.js @@ -0,0 +1,15 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: [ + 'plugin:vue/vue3-essential', + 'eslint:recommended' + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + } + \ No newline at end of file diff --git a/trojan-web-master/.gitignore b/trojan-web-master/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/trojan-web-master/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/trojan-web-master/.prettierrc.json b/trojan-web-master/.prettierrc.json new file mode 100644 index 0000000..f7ecdb1 --- /dev/null +++ b/trojan-web-master/.prettierrc.json @@ -0,0 +1,5 @@ +{ + "tabWidth": 4, + "singleQuote":true, + "semi":false +} \ No newline at end of file diff --git a/trojan-web-master/README.md b/trojan-web-master/README.md new file mode 100644 index 0000000..5c63941 --- /dev/null +++ b/trojan-web-master/README.md @@ -0,0 +1,15 @@ +# trojan-web + +[trojan管理程序](https://github.com/Jrohy/trojan)前端页面 + +技术栈: vue3.0 + element-plus + vite + +### 项目启动步骤 +1. 安装包 + `npm install` +2. 开发运行 + `vite` +3. 生产打包 + `vite build` + +**欢迎fork以改进优化页面** \ No newline at end of file diff --git a/trojan-web-master/index.html b/trojan-web-master/index.html new file mode 100644 index 0000000..6dd015f --- /dev/null +++ b/trojan-web-master/index.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + +