├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── release.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── examples └── random-number │ ├── AnkiDroid-Back.jpg │ ├── AnkiDroid-Front.jpg │ ├── AnkiDroid_Preview-Back.jpg │ ├── AnkiDroid_Preview-Front.jpg │ ├── Linux-Back.png │ ├── Linux-Front.png │ ├── Linux_Preview-Back.jpg │ ├── Linux_Preview-Front.jpg │ ├── Linux_ctePreview-Back.jpg │ ├── Linux_ctePreview-Front.jpg │ ├── Mac-Back.png │ ├── Mac-Front.png │ ├── Mac_Preview-Back.jpg │ ├── Mac_Preview-Front.jpg │ ├── Mac_ctePreview-Back.jpg │ ├── Mac_ctePreview-Front.jpg │ ├── Web-Back.jpg │ ├── Web-Front.jpg │ ├── Windows-Back.jpg │ ├── Windows-Front.jpg │ ├── Windows_Preview-Back.jpg │ ├── Windows_Preview-Front.jpg │ ├── Windows_ctePreview-Back.jpg │ ├── Windows_ctePreview-Front.jpg │ ├── anki-persistence-test.apkg │ ├── anki-persistence.apkg │ ├── iOS-Back.jpg │ ├── iOS-Front.jpg │ ├── iOS_Preview-Back.jpg │ └── iOS_Preview-Front.jpg ├── package-lock.json ├── package.json ├── script.js └── test ├── karma.conf.js └── persistence.js /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Screenshots** 21 | If applicable, add screenshots to help explain your problem. 22 | 23 | **Error occurs in these anki clients:** 24 | - Web (specify browsers) 25 | - Android 26 | - iOS 27 | - Mac (2.0) 28 | - Mac (2.1) 29 | - Windows 30 | - Linux (2.0) 31 | - Linux (2.1) 32 | 33 | **Additional context** 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | env: 4 | SCRIPT: script.js 5 | SCRIPT_MINIFIED: script-minified.js 6 | BLOB_URL_PREFIX: "https://github.com/SimonLammer/anki-persistence/blob" 7 | RELEASE_BRANCH: "readme-script_version-bump" 8 | 9 | on: 10 | workflow_run: 11 | workflows: ["Test"] 12 | branches-ignore: 13 | - "readme-script_version-bump" 14 | types: 15 | - completed 16 | 17 | jobs: 18 | release: 19 | runs-on: ubuntu-latest 20 | if: ${{ github.event.workflow_run.conclusion == 'success' }} 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | # Fetch version numbers 25 | - id: latest_release 26 | uses: gregziegan/fetch-latest-release@v2.0.0 27 | - run: echo "VERSION_LATEST=`echo '${{ steps.latest_release.outputs.name }}' | cut -c 2-`" >>$GITHUB_ENV 28 | - name: Fetch current version number 29 | run: echo "VERSION_CURRENT=`jq >$GITHUB_ENV 30 | - run: echo VERSION_CURRENT=${{ env.VERSION_CURRENT }} 31 | 32 | - uses: actions/setup-node@v3 33 | with: 34 | cache: 'npm' 35 | 36 | - name: Minify ${{ env.SCRIPT }} 37 | run: | 38 | printf "// v${{ env.VERSION_CURRENT }} - ${{ env.BLOB_URL_PREFIX }}/$GITHUB_SHA/${{ env.SCRIPT }}\n" >${{ env.SCRIPT_MINIFIED }} 39 | npm run minify | tail -n 1 >>${{ env.SCRIPT_MINIFIED }} 40 | 41 | - name: Create version files 42 | run: | 43 | echo ${{ env.VERSION_LATEST }} > version-latest.txt 44 | echo ${{ env.VERSION_CURRENT }} > version-current.txt 45 | - uses: actions/upload-artifact@v3 46 | with: 47 | name: release 48 | path: | 49 | version-latest.txt 50 | version-current.txt 51 | ${{ env.SCRIPT }} 52 | ${{ env.SCRIPT_MINIFIED }} 53 | 54 | - name: Ensure version number has been incremented 55 | run: | 56 | node -e ' 57 | function r(v){ 58 | return v.trim().split(".").map(Number); 59 | }; 60 | current=r("${{ env.VERSION_CURRENT }}"); 61 | latest=r("${{ env.VERSION_LATEST }}"); 62 | for (i in latest) { 63 | if(current[i]>latest[i]) 64 | break; 65 | assert(current[i]==latest[i], "Current version is lower than latest version") 66 | }; 67 | assert(ilatest[i], "Current version number equals latest version number");' 68 | 69 | # Release 70 | - run: echo "RELEASE_NAME=v${{ env.VERSION_CURRENT }}" >>$GITHUB_ENV 71 | - name: Release 72 | uses: softprops/action-gh-release@v1 73 | with: 74 | token: ${{ secrets.GH_TOKEN }} 75 | tag_name: ${{ env.RELEASE_NAME }} 76 | generate_release_notes: true 77 | draft: false 78 | files: | 79 | ${{ env.SCRIPT_MINIFIED }} 80 | 81 | - name: Update Readme with new anki-persistence version 82 | run: | 83 | perl -pi -e " 84 | use strict; 85 | use warnings; 86 | BEGIN{undef $/;}; 87 | s@// v[^\n]*\n[^\n]*@`cat ${{ env.SCRIPT_MINIFIED }} | sed -z 's/\n/\\n/g'`@smg;" \ 88 | README.md 89 | - name: Cleanup temporary files 90 | run: | 91 | rm -rf \ 92 | ${{ env.SCRIPT_MINIFIED }} \ 93 | version*.txt 94 | - name: Create Pull Request 95 | uses: peter-evans/create-pull-request@v4 96 | with: 97 | title: "Update README script version to ${{ env.RELEASE_NAME }}" 98 | branch: ${{ env.RELEASE_BRANCH }} 99 | commit-message: "Update README script version to ${{ env.RELEASE_NAME }}" 100 | delete-branch: true 101 | 102 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches-ignore: [ci] 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: actions/setup-node@v3 13 | with: 14 | cache: 'npm' 15 | - run: npm install 16 | - run: npm test 17 | 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | .idea 3 | 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Simon Lammer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # anki-persistence 2 | Persist data between both sides of an anki flashcard. 3 | 4 | While the following example explicitly shows the random number, it could instead be used internally to do many different things: 5 | 6 | * Choose one of several pictures (at random) *- Maybe someone wants to learn the names of instruments from a picture depicting it; One of multiple views of the instrument could be shown, a different one in every review.* 7 | * Reorder elements in the card *- Shuffle the answers of a multiple choice question.* 8 | * ... 9 | 10 | It could also be used completely different as well. To let the user input something on the frontside and use that same input on the backside for example. 11 | 12 | ## Example: Random number 13 | 14 | This example shows how anki-persistence can be used to display the same random number on both sides of an Anki flash card. **All of these images depict the same card!** You can try it out yourself with [this exported Anki deck](examples/random-number/anki-persistence.apkg). 15 | 16 | ### Result 17 | | Client | Front | Back | 18 | | -------:|:-----:|:----:| 19 | | Web | ![Random number example on the web client - Front](examples/random-number/Web-Front.jpg) | ![Random number example on the web client - Back](examples/random-number/Web-Back.jpg) | 20 | | Android | ![Random number example on the Android client - Front](examples/random-number/AnkiDroid-Front.jpg) | ![Random number example on the Android client - Back](examples/random-number/AnkiDroid-Back.jpg) | 21 | | Android (card preview) | ![Random number example on the Android client (card preview) - Front](examples/random-number/AnkiDroid_Preview-Front.jpg) | ![Random number example on the Android client (card preview) - Back](examples/random-number/AnkiDroid_Preview-Back.jpg) | 22 | | iOS | ![Random number example on the iOS client - Front](examples/random-number/iOS-Front.jpg) | ![Random number example on the iOS client - Back](examples/random-number/iOS-Back.jpg) | 23 | | iOS (card preview) | ![Random number example on the iOS client (card preview) - Front](examples/random-number/iOS_Preview-Front.jpg) | ![Random number example on the iOS client (card preview) - Back](examples/random-number/iOS_Preview-Back.jpg) | 24 | | Mac | ![Random number example on the Mac client - Front](examples/random-number/Mac-Front.png) | ![Random number example on the Mac client - Back](examples/random-number/Mac-Back.png) | 25 | | Mac (card preview) | ![Random number example on the Mac client (card preview) - Front](examples/random-number/Mac_Preview-Front.jpg) | ![Random number example on the Mac client (card preview) - Back](examples/random-number/Mac_Preview-Back.jpg) | 26 | | Mac (card type editor preview) | ![Random number example on the Mac client (card type editor preview) - Front](examples/random-number/Mac_ctePreview-Front.jpg) | ![Random number example on the Mac client (card type editor preview) - Back](examples/random-number/Mac_ctePreview-Back.jpg) | 27 | | Windows | ![Random number example on the Windows client - Front](examples/random-number/Windows-Front.jpg) | ![Random number example on the Windows client - Back](examples/random-number/Windows-Back.jpg) | 28 | | Windows (card preview) | ![Random number example on the Windows client (card preview) - Front](examples/random-number/Windows_Preview-Front.jpg) | ![Random number example on the Windows client (card preview) - Back](examples/random-number/Windows_Preview-Back.jpg) | 29 | | Windows (card type editor preview) | ![Random number example on the Windows client (card type editor preview) - Front](examples/random-number/Windows_ctePreview-Front.jpg) | ![Random number example on the Windows client (card type editor preview) - Back](examples/random-number/Windows_ctePreview-Back.jpg) | 30 | | Linux | ![Random number example on the Linux client - Front](examples/random-number/Linux-Front.png) | ![Random number example on the Linux client - Back](examples/random-number/Linux-Back.png) | 31 | | Linux (card preview) | ![Random number example on the Linux client (card preview) - Front](examples/random-number/Linux_Preview-Front.jpg) | ![Random number example on the Linux client (card preview) - Back](examples/random-number/Linux_Preview-Back.jpg) | 32 | | Linux (card type editor preview) | ![Random number example on the Linux client (card type editor preview) - Front](examples/random-number/Linux_ctePreview-Front.jpg) | ![Random number example on the Linux client (card type editor preview) - Back](examples/random-number/Linux_ctePreview-Back.jpg) | 33 | 34 | #### Why is 0.4 chosen so often? 35 | 36 | The most powerful feature of this project is that you can check availability of persistence on the front side - there should never be a case where ```Persistence.isAvailable()``` returns ```true``` on the front- and ```false``` on the backside *(if there is, [please create a bug report](https://github.com/SimonLammer/anki-persistence/issues/new?template=bug_report.md), so it can be fixed as soon as possible)*. 37 | 38 | The shown example chooses 0.4 as default value - to be overwritten if ```Persistence.isAvailable``` returns ```true``` (which is not the case for desktop client previews). Therefore the card will only use the random number when it is sure that it can be persisted to the back side, and default to 0.4 otherwise. 39 | 40 | ### Setup 41 | #### Front side 42 | ~~~html 43 | 47 | 48 | {{Front}} 49 | 50 |
51 | 52 | 63 | ~~~ 64 | 65 | #### Back side 66 | 67 | ~~~html 68 | 72 | 73 | {{Back}} 74 | 75 |
76 | 77 | 85 | ~~~ 86 | 87 | #### Note 88 | 89 | The note has two fields: ```Front``` and ```Back```. 90 | These are set to ```front``` and ```back``` respectively. 91 | 92 | ## Preparation 93 | 94 | To use anki-persistense, follow these steps: 95 | 1. Download the script from [the latest release](https://github.com/SimonLammer/anki-persistence/releases/latest). Using the minified version (```script-minified.js```) is recommended, in order to save space in the anki card type. (A link to the non-minified version is always prepended to the file, in case someone wants to look at the human-readable code.) 96 | 1. Copy and paste the file contents between to the beginning of front and back side of the card type. 97 | 1. Ensure that both script blocks are enclosed in ``````. 98 | 99 | *This can be seen in [the example setup](#setup).* 100 | 101 | ## Usage 102 | 103 | Anki clients vary in their implementation and JavaScript can behave differently in each one. Therefore, check for availability before using other Persistence methods. 104 | 105 | ~~~javascript 106 | if (Persistence.isAvailable()) { 107 | // do stuff 108 | } 109 | ~~~ 110 | 111 | Other methods: 112 | 113 | | Name | Description | 114 | | -----------------------------:|:-----------------------------------------------------------------------------------------------------------| 115 | | ```Persistence.clear()``` | Removes all previously persisted key-value pairs. | 116 | | ```Persistence.getItem(key)``` | Retrieves the value associated with the key. If no value is associated to the given key, null is returned. | 117 | | ```Persistence.getItem()``` | Retrieves the value associated with a default key. | 118 | | ```Persistence.setItem(key, value)``` | Persists the key-value pair. | 119 | | ```Persistence.setItem(value)``` | Persists the value using a default key. | 120 | | ```Persistence.removeItem(key)``` | Removes the value associated with the key. If no value is associated to the given key, nothing happens. | 121 | | ```Persistence.removeItem()``` | Removes the value associated with a default key. | 122 | | ```Persistence.getAllKeys()``` | Retrieves all keys in storage. | 123 | 124 | 125 | `key` may be any string. 126 | 127 | *Some implementations of Persistence may use JSON.stringify and JSON.parse in the process of persisting and retrieving data. If you plan on persisting a custom object, make sure that ```obj``` equals ```JSON.parse(JSON.stringify(obj))```.* 128 | 129 | ### Clear storage 130 | 131 | ```Persistence.setItem``` may persist data across cards, this should be stopped by calling ```Persistence.clear()``` at the end of the backside. (If this gets called on the frontside's beginning instead, you cannot use anki's ```{{FrontSide}}``` special field in the backside *- because doing so would delete the persisted data*) 132 | 133 | ## How it works 134 | 135 | There are two separate internal implementations of Persistence: ```Persistence_sessionStorage``` and ```Persistence_windowKey```. The former uses [the sessionStorage property](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage), while the latter attaches a new property to an existing persistent *(not changing between front- and backside of an anki flashcard)* property of the window object and uses that attached property to persist and retrieve data. 136 | 137 | Anki's android client has no persistent window properties, so the internal implementation of choice is obviously ```Persistence_sessionStorage```. The desktop clients don't permit the ```sessionStorage``` property, so ```Persistence_windowKey``` is used. 138 | 139 | Additional thought is required for linux and mac 2.1 clients. The window property, which is persistent in review mode, is present - but not persistent - in the preview modes. ```window.location``` helps us circumvent this issue, as it contains html, which only specifies `title` as ```main webview``` in review mode. 140 | 141 | # Acknowledgements 142 | 143 | Huge thanks to 144 | 145 | * [RunasSudo, whose code kick-started this project](https://yingtongli.me/blog/2015/03/15/random-question-generator-on-anki-using.html)! 146 | * [u/CheCheDaWaff for providing test information and screenshots of the woking random number example on **mac** and **iOS** clients](https://www.reddit.com/r/Anki/comments/8ksjqb/pass_data_between_both_sides_of_an_anki_flashcard/dzbpfdd/) 147 | * [u/qwiglydee for providing test information and screenshots of the working random number example on the **linux** client](https://www.reddit.com/r/Anki/comments/8ksjqb/pass_data_between_both_sides_of_an_anki_flashcard/dzbpnbm/) 148 | 149 | ## Anki projects utilizing anki-persistence 150 | 151 | * [Set Randomizer by hgiesel](https://github.com/hgiesel/anki-set-randomizer), also on [AnkiWeb](https://ankiweb.net/shared/info/1164532380) 152 | * [Anki awesome select](https://github.com/git9527/anki-awesome-select) 153 | 154 | ## Other references 155 | 156 | * [r/Anki - Passings state between Fields](https://www.reddit.com/r/Anki/comments/4mhfmm/passing_state_between_fields/) 157 | * [r/Anki - Pass data between both sides of an Anki flashcard](https://www.reddit.com/r/Anki/comments/8ksjqb/pass_data_between_both_sides_of_an_anki_flashcard/) 158 | -------------------------------------------------------------------------------- /examples/random-number/AnkiDroid-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/AnkiDroid-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/AnkiDroid-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/AnkiDroid-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/AnkiDroid_Preview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/AnkiDroid_Preview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/AnkiDroid_Preview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/AnkiDroid_Preview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Linux-Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux-Back.png -------------------------------------------------------------------------------- /examples/random-number/Linux-Front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux-Front.png -------------------------------------------------------------------------------- /examples/random-number/Linux_Preview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux_Preview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Linux_Preview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux_Preview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Linux_ctePreview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux_ctePreview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Linux_ctePreview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Linux_ctePreview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Mac-Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac-Back.png -------------------------------------------------------------------------------- /examples/random-number/Mac-Front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac-Front.png -------------------------------------------------------------------------------- /examples/random-number/Mac_Preview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac_Preview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Mac_Preview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac_Preview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Mac_ctePreview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac_ctePreview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Mac_ctePreview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Mac_ctePreview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Web-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Web-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Web-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Web-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows_Preview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows_Preview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows_Preview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows_Preview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows_ctePreview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows_ctePreview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/Windows_ctePreview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/Windows_ctePreview-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/anki-persistence-test.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/anki-persistence-test.apkg -------------------------------------------------------------------------------- /examples/random-number/anki-persistence.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/anki-persistence.apkg -------------------------------------------------------------------------------- /examples/random-number/iOS-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/iOS-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/iOS-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/iOS-Front.jpg -------------------------------------------------------------------------------- /examples/random-number/iOS_Preview-Back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/iOS_Preview-Back.jpg -------------------------------------------------------------------------------- /examples/random-number/iOS_Preview-Front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimonLammer/anki-persistence/8190116c95df202773aa692c5e9ae704fb407bc9/examples/random-number/iOS_Preview-Front.jpg -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "anki-persistence", 3 | "version": "1.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "anki-persistence", 9 | "version": "1.1.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "jasmine-core": "^3.1.0", 13 | "karma": "^6.3.16", 14 | "karma-jasmine": "^4.0.0", 15 | "karma-phantomjs-launcher": "^1.0.4", 16 | "karma-verbose-reporter": "^0.0.8" 17 | } 18 | }, 19 | "node_modules/@colors/colors": { 20 | "version": "1.5.0", 21 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 22 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 23 | "dev": true, 24 | "engines": { 25 | "node": ">=0.1.90" 26 | } 27 | }, 28 | "node_modules/@socket.io/component-emitter": { 29 | "version": "3.1.0", 30 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 31 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", 32 | "dev": true 33 | }, 34 | "node_modules/@types/cookie": { 35 | "version": "0.4.1", 36 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 37 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", 38 | "dev": true 39 | }, 40 | "node_modules/@types/cors": { 41 | "version": "2.8.12", 42 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", 43 | "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", 44 | "dev": true 45 | }, 46 | "node_modules/@types/node": { 47 | "version": "18.11.0", 48 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", 49 | "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", 50 | "dev": true 51 | }, 52 | "node_modules/accepts": { 53 | "version": "1.3.8", 54 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 55 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 56 | "dev": true, 57 | "dependencies": { 58 | "mime-types": "~2.1.34", 59 | "negotiator": "0.6.3" 60 | }, 61 | "engines": { 62 | "node": ">= 0.6" 63 | } 64 | }, 65 | "node_modules/ajv": { 66 | "version": "6.12.6", 67 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 68 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 69 | "dev": true, 70 | "dependencies": { 71 | "fast-deep-equal": "^3.1.1", 72 | "fast-json-stable-stringify": "^2.0.0", 73 | "json-schema-traverse": "^0.4.1", 74 | "uri-js": "^4.2.2" 75 | }, 76 | "funding": { 77 | "type": "github", 78 | "url": "https://github.com/sponsors/epoberezkin" 79 | } 80 | }, 81 | "node_modules/ansi-regex": { 82 | "version": "5.0.1", 83 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 84 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 85 | "dev": true, 86 | "engines": { 87 | "node": ">=8" 88 | } 89 | }, 90 | "node_modules/ansi-styles": { 91 | "version": "4.3.0", 92 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 93 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 94 | "dev": true, 95 | "dependencies": { 96 | "color-convert": "^2.0.1" 97 | }, 98 | "engines": { 99 | "node": ">=8" 100 | }, 101 | "funding": { 102 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 103 | } 104 | }, 105 | "node_modules/anymatch": { 106 | "version": "3.1.2", 107 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 108 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 109 | "dev": true, 110 | "dependencies": { 111 | "normalize-path": "^3.0.0", 112 | "picomatch": "^2.0.4" 113 | }, 114 | "engines": { 115 | "node": ">= 8" 116 | } 117 | }, 118 | "node_modules/asn1": { 119 | "version": "0.2.6", 120 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 121 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 122 | "dev": true, 123 | "dependencies": { 124 | "safer-buffer": "~2.1.0" 125 | } 126 | }, 127 | "node_modules/assert-plus": { 128 | "version": "1.0.0", 129 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 130 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 131 | "dev": true, 132 | "engines": { 133 | "node": ">=0.8" 134 | } 135 | }, 136 | "node_modules/asynckit": { 137 | "version": "0.4.0", 138 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 139 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 140 | "dev": true 141 | }, 142 | "node_modules/aws-sign2": { 143 | "version": "0.7.0", 144 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 145 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 146 | "dev": true, 147 | "engines": { 148 | "node": "*" 149 | } 150 | }, 151 | "node_modules/aws4": { 152 | "version": "1.11.0", 153 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 154 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", 155 | "dev": true 156 | }, 157 | "node_modules/balanced-match": { 158 | "version": "1.0.2", 159 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 160 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 161 | "dev": true 162 | }, 163 | "node_modules/base64id": { 164 | "version": "2.0.0", 165 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 166 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 167 | "dev": true, 168 | "engines": { 169 | "node": "^4.5.0 || >= 5.9" 170 | } 171 | }, 172 | "node_modules/bcrypt-pbkdf": { 173 | "version": "1.0.2", 174 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 175 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 176 | "dev": true, 177 | "dependencies": { 178 | "tweetnacl": "^0.14.3" 179 | } 180 | }, 181 | "node_modules/binary-extensions": { 182 | "version": "2.2.0", 183 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 184 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 185 | "dev": true, 186 | "engines": { 187 | "node": ">=8" 188 | } 189 | }, 190 | "node_modules/body-parser": { 191 | "version": "1.20.1", 192 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 193 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 194 | "dev": true, 195 | "dependencies": { 196 | "bytes": "3.1.2", 197 | "content-type": "~1.0.4", 198 | "debug": "2.6.9", 199 | "depd": "2.0.0", 200 | "destroy": "1.2.0", 201 | "http-errors": "2.0.0", 202 | "iconv-lite": "0.4.24", 203 | "on-finished": "2.4.1", 204 | "qs": "6.11.0", 205 | "raw-body": "2.5.1", 206 | "type-is": "~1.6.18", 207 | "unpipe": "1.0.0" 208 | }, 209 | "engines": { 210 | "node": ">= 0.8", 211 | "npm": "1.2.8000 || >= 1.4.16" 212 | } 213 | }, 214 | "node_modules/brace-expansion": { 215 | "version": "1.1.11", 216 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 217 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 218 | "dev": true, 219 | "dependencies": { 220 | "balanced-match": "^1.0.0", 221 | "concat-map": "0.0.1" 222 | } 223 | }, 224 | "node_modules/braces": { 225 | "version": "3.0.2", 226 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 227 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 228 | "dev": true, 229 | "dependencies": { 230 | "fill-range": "^7.0.1" 231 | }, 232 | "engines": { 233 | "node": ">=8" 234 | } 235 | }, 236 | "node_modules/buffer-crc32": { 237 | "version": "0.2.13", 238 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 239 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 240 | "dev": true, 241 | "engines": { 242 | "node": "*" 243 | } 244 | }, 245 | "node_modules/buffer-from": { 246 | "version": "1.1.2", 247 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 248 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 249 | "dev": true 250 | }, 251 | "node_modules/bytes": { 252 | "version": "3.1.2", 253 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 254 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 255 | "dev": true, 256 | "engines": { 257 | "node": ">= 0.8" 258 | } 259 | }, 260 | "node_modules/call-bind": { 261 | "version": "1.0.2", 262 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 263 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 264 | "dev": true, 265 | "dependencies": { 266 | "function-bind": "^1.1.1", 267 | "get-intrinsic": "^1.0.2" 268 | }, 269 | "funding": { 270 | "url": "https://github.com/sponsors/ljharb" 271 | } 272 | }, 273 | "node_modules/caseless": { 274 | "version": "0.12.0", 275 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 276 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", 277 | "dev": true 278 | }, 279 | "node_modules/chokidar": { 280 | "version": "3.5.3", 281 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 282 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 283 | "dev": true, 284 | "funding": [ 285 | { 286 | "type": "individual", 287 | "url": "https://paulmillr.com/funding/" 288 | } 289 | ], 290 | "dependencies": { 291 | "anymatch": "~3.1.2", 292 | "braces": "~3.0.2", 293 | "glob-parent": "~5.1.2", 294 | "is-binary-path": "~2.1.0", 295 | "is-glob": "~4.0.1", 296 | "normalize-path": "~3.0.0", 297 | "readdirp": "~3.6.0" 298 | }, 299 | "engines": { 300 | "node": ">= 8.10.0" 301 | }, 302 | "optionalDependencies": { 303 | "fsevents": "~2.3.2" 304 | } 305 | }, 306 | "node_modules/cliui": { 307 | "version": "7.0.4", 308 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 309 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 310 | "dev": true, 311 | "dependencies": { 312 | "string-width": "^4.2.0", 313 | "strip-ansi": "^6.0.0", 314 | "wrap-ansi": "^7.0.0" 315 | } 316 | }, 317 | "node_modules/color-convert": { 318 | "version": "2.0.1", 319 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 320 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 321 | "dev": true, 322 | "dependencies": { 323 | "color-name": "~1.1.4" 324 | }, 325 | "engines": { 326 | "node": ">=7.0.0" 327 | } 328 | }, 329 | "node_modules/color-name": { 330 | "version": "1.1.4", 331 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 332 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 333 | "dev": true 334 | }, 335 | "node_modules/colors": { 336 | "version": "1.4.0", 337 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 338 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 339 | "dev": true, 340 | "engines": { 341 | "node": ">=0.1.90" 342 | } 343 | }, 344 | "node_modules/combined-stream": { 345 | "version": "1.0.8", 346 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 347 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 348 | "dev": true, 349 | "dependencies": { 350 | "delayed-stream": "~1.0.0" 351 | }, 352 | "engines": { 353 | "node": ">= 0.8" 354 | } 355 | }, 356 | "node_modules/concat-map": { 357 | "version": "0.0.1", 358 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 359 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 360 | "dev": true 361 | }, 362 | "node_modules/concat-stream": { 363 | "version": "1.6.2", 364 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 365 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 366 | "dev": true, 367 | "engines": [ 368 | "node >= 0.8" 369 | ], 370 | "dependencies": { 371 | "buffer-from": "^1.0.0", 372 | "inherits": "^2.0.3", 373 | "readable-stream": "^2.2.2", 374 | "typedarray": "^0.0.6" 375 | } 376 | }, 377 | "node_modules/connect": { 378 | "version": "3.7.0", 379 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 380 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 381 | "dev": true, 382 | "dependencies": { 383 | "debug": "2.6.9", 384 | "finalhandler": "1.1.2", 385 | "parseurl": "~1.3.3", 386 | "utils-merge": "1.0.1" 387 | }, 388 | "engines": { 389 | "node": ">= 0.10.0" 390 | } 391 | }, 392 | "node_modules/content-type": { 393 | "version": "1.0.4", 394 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 395 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 396 | "dev": true, 397 | "engines": { 398 | "node": ">= 0.6" 399 | } 400 | }, 401 | "node_modules/cookie": { 402 | "version": "0.4.2", 403 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 404 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 405 | "dev": true, 406 | "engines": { 407 | "node": ">= 0.6" 408 | } 409 | }, 410 | "node_modules/core-util-is": { 411 | "version": "1.0.3", 412 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 413 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 414 | "dev": true 415 | }, 416 | "node_modules/cors": { 417 | "version": "2.8.5", 418 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 419 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 420 | "dev": true, 421 | "dependencies": { 422 | "object-assign": "^4", 423 | "vary": "^1" 424 | }, 425 | "engines": { 426 | "node": ">= 0.10" 427 | } 428 | }, 429 | "node_modules/custom-event": { 430 | "version": "1.0.1", 431 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 432 | "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", 433 | "dev": true 434 | }, 435 | "node_modules/dashdash": { 436 | "version": "1.14.1", 437 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 438 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 439 | "dev": true, 440 | "dependencies": { 441 | "assert-plus": "^1.0.0" 442 | }, 443 | "engines": { 444 | "node": ">=0.10" 445 | } 446 | }, 447 | "node_modules/date-format": { 448 | "version": "4.0.14", 449 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", 450 | "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", 451 | "dev": true, 452 | "engines": { 453 | "node": ">=4.0" 454 | } 455 | }, 456 | "node_modules/debug": { 457 | "version": "2.6.9", 458 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 459 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 460 | "dev": true, 461 | "dependencies": { 462 | "ms": "2.0.0" 463 | } 464 | }, 465 | "node_modules/delayed-stream": { 466 | "version": "1.0.0", 467 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 468 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 469 | "dev": true, 470 | "engines": { 471 | "node": ">=0.4.0" 472 | } 473 | }, 474 | "node_modules/depd": { 475 | "version": "2.0.0", 476 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 477 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 478 | "dev": true, 479 | "engines": { 480 | "node": ">= 0.8" 481 | } 482 | }, 483 | "node_modules/destroy": { 484 | "version": "1.2.0", 485 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 486 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 487 | "dev": true, 488 | "engines": { 489 | "node": ">= 0.8", 490 | "npm": "1.2.8000 || >= 1.4.16" 491 | } 492 | }, 493 | "node_modules/di": { 494 | "version": "0.0.1", 495 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 496 | "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", 497 | "dev": true 498 | }, 499 | "node_modules/dom-serialize": { 500 | "version": "2.2.1", 501 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 502 | "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", 503 | "dev": true, 504 | "dependencies": { 505 | "custom-event": "~1.0.0", 506 | "ent": "~2.2.0", 507 | "extend": "^3.0.0", 508 | "void-elements": "^2.0.0" 509 | } 510 | }, 511 | "node_modules/ecc-jsbn": { 512 | "version": "0.1.2", 513 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 514 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 515 | "dev": true, 516 | "dependencies": { 517 | "jsbn": "~0.1.0", 518 | "safer-buffer": "^2.1.0" 519 | } 520 | }, 521 | "node_modules/ee-first": { 522 | "version": "1.1.1", 523 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 524 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 525 | "dev": true 526 | }, 527 | "node_modules/emoji-regex": { 528 | "version": "8.0.0", 529 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 530 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 531 | "dev": true 532 | }, 533 | "node_modules/encodeurl": { 534 | "version": "1.0.2", 535 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 536 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 537 | "dev": true, 538 | "engines": { 539 | "node": ">= 0.8" 540 | } 541 | }, 542 | "node_modules/engine.io": { 543 | "version": "6.2.0", 544 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", 545 | "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", 546 | "dev": true, 547 | "dependencies": { 548 | "@types/cookie": "^0.4.1", 549 | "@types/cors": "^2.8.12", 550 | "@types/node": ">=10.0.0", 551 | "accepts": "~1.3.4", 552 | "base64id": "2.0.0", 553 | "cookie": "~0.4.1", 554 | "cors": "~2.8.5", 555 | "debug": "~4.3.1", 556 | "engine.io-parser": "~5.0.3", 557 | "ws": "~8.2.3" 558 | }, 559 | "engines": { 560 | "node": ">=10.0.0" 561 | } 562 | }, 563 | "node_modules/engine.io-parser": { 564 | "version": "5.0.4", 565 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", 566 | "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", 567 | "dev": true, 568 | "engines": { 569 | "node": ">=10.0.0" 570 | } 571 | }, 572 | "node_modules/engine.io/node_modules/debug": { 573 | "version": "4.3.4", 574 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 575 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 576 | "dev": true, 577 | "dependencies": { 578 | "ms": "2.1.2" 579 | }, 580 | "engines": { 581 | "node": ">=6.0" 582 | }, 583 | "peerDependenciesMeta": { 584 | "supports-color": { 585 | "optional": true 586 | } 587 | } 588 | }, 589 | "node_modules/engine.io/node_modules/ms": { 590 | "version": "2.1.2", 591 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 592 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 593 | "dev": true 594 | }, 595 | "node_modules/ent": { 596 | "version": "2.2.0", 597 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 598 | "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", 599 | "dev": true 600 | }, 601 | "node_modules/es6-promise": { 602 | "version": "4.2.8", 603 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 604 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 605 | "dev": true 606 | }, 607 | "node_modules/escalade": { 608 | "version": "3.1.1", 609 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 610 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 611 | "dev": true, 612 | "engines": { 613 | "node": ">=6" 614 | } 615 | }, 616 | "node_modules/escape-html": { 617 | "version": "1.0.3", 618 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 619 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 620 | "dev": true 621 | }, 622 | "node_modules/eventemitter3": { 623 | "version": "4.0.7", 624 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 625 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 626 | "dev": true 627 | }, 628 | "node_modules/extend": { 629 | "version": "3.0.2", 630 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 631 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 632 | "dev": true 633 | }, 634 | "node_modules/extract-zip": { 635 | "version": "1.7.0", 636 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", 637 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", 638 | "dev": true, 639 | "dependencies": { 640 | "concat-stream": "^1.6.2", 641 | "debug": "^2.6.9", 642 | "mkdirp": "^0.5.4", 643 | "yauzl": "^2.10.0" 644 | }, 645 | "bin": { 646 | "extract-zip": "cli.js" 647 | } 648 | }, 649 | "node_modules/extsprintf": { 650 | "version": "1.3.0", 651 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 652 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 653 | "dev": true, 654 | "engines": [ 655 | "node >=0.6.0" 656 | ] 657 | }, 658 | "node_modules/fast-deep-equal": { 659 | "version": "3.1.3", 660 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 661 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 662 | "dev": true 663 | }, 664 | "node_modules/fast-json-stable-stringify": { 665 | "version": "2.1.0", 666 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 667 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 668 | "dev": true 669 | }, 670 | "node_modules/fd-slicer": { 671 | "version": "1.1.0", 672 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 673 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 674 | "dev": true, 675 | "dependencies": { 676 | "pend": "~1.2.0" 677 | } 678 | }, 679 | "node_modules/fill-range": { 680 | "version": "7.0.1", 681 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 682 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 683 | "dev": true, 684 | "dependencies": { 685 | "to-regex-range": "^5.0.1" 686 | }, 687 | "engines": { 688 | "node": ">=8" 689 | } 690 | }, 691 | "node_modules/finalhandler": { 692 | "version": "1.1.2", 693 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 694 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 695 | "dev": true, 696 | "dependencies": { 697 | "debug": "2.6.9", 698 | "encodeurl": "~1.0.2", 699 | "escape-html": "~1.0.3", 700 | "on-finished": "~2.3.0", 701 | "parseurl": "~1.3.3", 702 | "statuses": "~1.5.0", 703 | "unpipe": "~1.0.0" 704 | }, 705 | "engines": { 706 | "node": ">= 0.8" 707 | } 708 | }, 709 | "node_modules/finalhandler/node_modules/on-finished": { 710 | "version": "2.3.0", 711 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 712 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 713 | "dev": true, 714 | "dependencies": { 715 | "ee-first": "1.1.1" 716 | }, 717 | "engines": { 718 | "node": ">= 0.8" 719 | } 720 | }, 721 | "node_modules/flatted": { 722 | "version": "3.2.7", 723 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 724 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 725 | "dev": true 726 | }, 727 | "node_modules/follow-redirects": { 728 | "version": "1.15.2", 729 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 730 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 731 | "dev": true, 732 | "funding": [ 733 | { 734 | "type": "individual", 735 | "url": "https://github.com/sponsors/RubenVerborgh" 736 | } 737 | ], 738 | "engines": { 739 | "node": ">=4.0" 740 | }, 741 | "peerDependenciesMeta": { 742 | "debug": { 743 | "optional": true 744 | } 745 | } 746 | }, 747 | "node_modules/forever-agent": { 748 | "version": "0.6.1", 749 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 750 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 751 | "dev": true, 752 | "engines": { 753 | "node": "*" 754 | } 755 | }, 756 | "node_modules/form-data": { 757 | "version": "2.3.3", 758 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 759 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 760 | "dev": true, 761 | "dependencies": { 762 | "asynckit": "^0.4.0", 763 | "combined-stream": "^1.0.6", 764 | "mime-types": "^2.1.12" 765 | }, 766 | "engines": { 767 | "node": ">= 0.12" 768 | } 769 | }, 770 | "node_modules/fs-extra": { 771 | "version": "1.0.0", 772 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", 773 | "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", 774 | "dev": true, 775 | "dependencies": { 776 | "graceful-fs": "^4.1.2", 777 | "jsonfile": "^2.1.0", 778 | "klaw": "^1.0.0" 779 | } 780 | }, 781 | "node_modules/fs.realpath": { 782 | "version": "1.0.0", 783 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 784 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 785 | "dev": true 786 | }, 787 | "node_modules/fsevents": { 788 | "version": "2.3.2", 789 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 790 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 791 | "dev": true, 792 | "hasInstallScript": true, 793 | "optional": true, 794 | "os": [ 795 | "darwin" 796 | ], 797 | "engines": { 798 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 799 | } 800 | }, 801 | "node_modules/function-bind": { 802 | "version": "1.1.1", 803 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 804 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 805 | "dev": true 806 | }, 807 | "node_modules/get-caller-file": { 808 | "version": "2.0.5", 809 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 810 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 811 | "dev": true, 812 | "engines": { 813 | "node": "6.* || 8.* || >= 10.*" 814 | } 815 | }, 816 | "node_modules/get-intrinsic": { 817 | "version": "1.1.3", 818 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 819 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 820 | "dev": true, 821 | "dependencies": { 822 | "function-bind": "^1.1.1", 823 | "has": "^1.0.3", 824 | "has-symbols": "^1.0.3" 825 | }, 826 | "funding": { 827 | "url": "https://github.com/sponsors/ljharb" 828 | } 829 | }, 830 | "node_modules/getpass": { 831 | "version": "0.1.7", 832 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 833 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 834 | "dev": true, 835 | "dependencies": { 836 | "assert-plus": "^1.0.0" 837 | } 838 | }, 839 | "node_modules/glob": { 840 | "version": "7.2.3", 841 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 842 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 843 | "dev": true, 844 | "dependencies": { 845 | "fs.realpath": "^1.0.0", 846 | "inflight": "^1.0.4", 847 | "inherits": "2", 848 | "minimatch": "^3.1.1", 849 | "once": "^1.3.0", 850 | "path-is-absolute": "^1.0.0" 851 | }, 852 | "engines": { 853 | "node": "*" 854 | }, 855 | "funding": { 856 | "url": "https://github.com/sponsors/isaacs" 857 | } 858 | }, 859 | "node_modules/glob-parent": { 860 | "version": "5.1.2", 861 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 862 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 863 | "dev": true, 864 | "dependencies": { 865 | "is-glob": "^4.0.1" 866 | }, 867 | "engines": { 868 | "node": ">= 6" 869 | } 870 | }, 871 | "node_modules/graceful-fs": { 872 | "version": "4.2.10", 873 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 874 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 875 | "dev": true 876 | }, 877 | "node_modules/har-schema": { 878 | "version": "2.0.0", 879 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 880 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 881 | "dev": true, 882 | "engines": { 883 | "node": ">=4" 884 | } 885 | }, 886 | "node_modules/har-validator": { 887 | "version": "5.1.5", 888 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 889 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 890 | "deprecated": "this library is no longer supported", 891 | "dev": true, 892 | "dependencies": { 893 | "ajv": "^6.12.3", 894 | "har-schema": "^2.0.0" 895 | }, 896 | "engines": { 897 | "node": ">=6" 898 | } 899 | }, 900 | "node_modules/has": { 901 | "version": "1.0.3", 902 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 903 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 904 | "dev": true, 905 | "dependencies": { 906 | "function-bind": "^1.1.1" 907 | }, 908 | "engines": { 909 | "node": ">= 0.4.0" 910 | } 911 | }, 912 | "node_modules/has-symbols": { 913 | "version": "1.0.3", 914 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 915 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 916 | "dev": true, 917 | "engines": { 918 | "node": ">= 0.4" 919 | }, 920 | "funding": { 921 | "url": "https://github.com/sponsors/ljharb" 922 | } 923 | }, 924 | "node_modules/hasha": { 925 | "version": "2.2.0", 926 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", 927 | "integrity": "sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ==", 928 | "dev": true, 929 | "dependencies": { 930 | "is-stream": "^1.0.1", 931 | "pinkie-promise": "^2.0.0" 932 | }, 933 | "engines": { 934 | "node": ">=0.10.0" 935 | } 936 | }, 937 | "node_modules/http-errors": { 938 | "version": "2.0.0", 939 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 940 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 941 | "dev": true, 942 | "dependencies": { 943 | "depd": "2.0.0", 944 | "inherits": "2.0.4", 945 | "setprototypeof": "1.2.0", 946 | "statuses": "2.0.1", 947 | "toidentifier": "1.0.1" 948 | }, 949 | "engines": { 950 | "node": ">= 0.8" 951 | } 952 | }, 953 | "node_modules/http-errors/node_modules/statuses": { 954 | "version": "2.0.1", 955 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 956 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 957 | "dev": true, 958 | "engines": { 959 | "node": ">= 0.8" 960 | } 961 | }, 962 | "node_modules/http-proxy": { 963 | "version": "1.18.1", 964 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 965 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 966 | "dev": true, 967 | "dependencies": { 968 | "eventemitter3": "^4.0.0", 969 | "follow-redirects": "^1.0.0", 970 | "requires-port": "^1.0.0" 971 | }, 972 | "engines": { 973 | "node": ">=8.0.0" 974 | } 975 | }, 976 | "node_modules/http-signature": { 977 | "version": "1.2.0", 978 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 979 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 980 | "dev": true, 981 | "dependencies": { 982 | "assert-plus": "^1.0.0", 983 | "jsprim": "^1.2.2", 984 | "sshpk": "^1.7.0" 985 | }, 986 | "engines": { 987 | "node": ">=0.8", 988 | "npm": ">=1.3.7" 989 | } 990 | }, 991 | "node_modules/iconv-lite": { 992 | "version": "0.4.24", 993 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 994 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 995 | "dev": true, 996 | "dependencies": { 997 | "safer-buffer": ">= 2.1.2 < 3" 998 | }, 999 | "engines": { 1000 | "node": ">=0.10.0" 1001 | } 1002 | }, 1003 | "node_modules/inflight": { 1004 | "version": "1.0.6", 1005 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1006 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1007 | "dev": true, 1008 | "dependencies": { 1009 | "once": "^1.3.0", 1010 | "wrappy": "1" 1011 | } 1012 | }, 1013 | "node_modules/inherits": { 1014 | "version": "2.0.4", 1015 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1016 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1017 | "dev": true 1018 | }, 1019 | "node_modules/is-binary-path": { 1020 | "version": "2.1.0", 1021 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1022 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "binary-extensions": "^2.0.0" 1026 | }, 1027 | "engines": { 1028 | "node": ">=8" 1029 | } 1030 | }, 1031 | "node_modules/is-extglob": { 1032 | "version": "2.1.1", 1033 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1034 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1035 | "dev": true, 1036 | "engines": { 1037 | "node": ">=0.10.0" 1038 | } 1039 | }, 1040 | "node_modules/is-fullwidth-code-point": { 1041 | "version": "3.0.0", 1042 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1043 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1044 | "dev": true, 1045 | "engines": { 1046 | "node": ">=8" 1047 | } 1048 | }, 1049 | "node_modules/is-glob": { 1050 | "version": "4.0.3", 1051 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1052 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1053 | "dev": true, 1054 | "dependencies": { 1055 | "is-extglob": "^2.1.1" 1056 | }, 1057 | "engines": { 1058 | "node": ">=0.10.0" 1059 | } 1060 | }, 1061 | "node_modules/is-number": { 1062 | "version": "7.0.0", 1063 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1064 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1065 | "dev": true, 1066 | "engines": { 1067 | "node": ">=0.12.0" 1068 | } 1069 | }, 1070 | "node_modules/is-stream": { 1071 | "version": "1.1.0", 1072 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1073 | "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 1074 | "dev": true, 1075 | "engines": { 1076 | "node": ">=0.10.0" 1077 | } 1078 | }, 1079 | "node_modules/is-typedarray": { 1080 | "version": "1.0.0", 1081 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1082 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 1083 | "dev": true 1084 | }, 1085 | "node_modules/isarray": { 1086 | "version": "1.0.0", 1087 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1088 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1089 | "dev": true 1090 | }, 1091 | "node_modules/isbinaryfile": { 1092 | "version": "4.0.10", 1093 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", 1094 | "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", 1095 | "dev": true, 1096 | "engines": { 1097 | "node": ">= 8.0.0" 1098 | }, 1099 | "funding": { 1100 | "url": "https://github.com/sponsors/gjtorikian/" 1101 | } 1102 | }, 1103 | "node_modules/isexe": { 1104 | "version": "2.0.0", 1105 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1106 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1107 | "dev": true 1108 | }, 1109 | "node_modules/isstream": { 1110 | "version": "0.1.2", 1111 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1112 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 1113 | "dev": true 1114 | }, 1115 | "node_modules/jasmine-core": { 1116 | "version": "3.99.1", 1117 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", 1118 | "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", 1119 | "dev": true 1120 | }, 1121 | "node_modules/jsbn": { 1122 | "version": "0.1.1", 1123 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1124 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 1125 | "dev": true 1126 | }, 1127 | "node_modules/json-schema": { 1128 | "version": "0.4.0", 1129 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 1130 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 1131 | "dev": true 1132 | }, 1133 | "node_modules/json-schema-traverse": { 1134 | "version": "0.4.1", 1135 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1136 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1137 | "dev": true 1138 | }, 1139 | "node_modules/json-stringify-safe": { 1140 | "version": "5.0.1", 1141 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1142 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1143 | "dev": true 1144 | }, 1145 | "node_modules/jsonfile": { 1146 | "version": "2.4.0", 1147 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", 1148 | "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", 1149 | "dev": true, 1150 | "optionalDependencies": { 1151 | "graceful-fs": "^4.1.6" 1152 | } 1153 | }, 1154 | "node_modules/jsprim": { 1155 | "version": "1.4.2", 1156 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 1157 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 1158 | "dev": true, 1159 | "dependencies": { 1160 | "assert-plus": "1.0.0", 1161 | "extsprintf": "1.3.0", 1162 | "json-schema": "0.4.0", 1163 | "verror": "1.10.0" 1164 | }, 1165 | "engines": { 1166 | "node": ">=0.6.0" 1167 | } 1168 | }, 1169 | "node_modules/karma": { 1170 | "version": "6.4.1", 1171 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", 1172 | "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", 1173 | "dev": true, 1174 | "dependencies": { 1175 | "@colors/colors": "1.5.0", 1176 | "body-parser": "^1.19.0", 1177 | "braces": "^3.0.2", 1178 | "chokidar": "^3.5.1", 1179 | "connect": "^3.7.0", 1180 | "di": "^0.0.1", 1181 | "dom-serialize": "^2.2.1", 1182 | "glob": "^7.1.7", 1183 | "graceful-fs": "^4.2.6", 1184 | "http-proxy": "^1.18.1", 1185 | "isbinaryfile": "^4.0.8", 1186 | "lodash": "^4.17.21", 1187 | "log4js": "^6.4.1", 1188 | "mime": "^2.5.2", 1189 | "minimatch": "^3.0.4", 1190 | "mkdirp": "^0.5.5", 1191 | "qjobs": "^1.2.0", 1192 | "range-parser": "^1.2.1", 1193 | "rimraf": "^3.0.2", 1194 | "socket.io": "^4.4.1", 1195 | "source-map": "^0.6.1", 1196 | "tmp": "^0.2.1", 1197 | "ua-parser-js": "^0.7.30", 1198 | "yargs": "^16.1.1" 1199 | }, 1200 | "bin": { 1201 | "karma": "bin/karma" 1202 | }, 1203 | "engines": { 1204 | "node": ">= 10" 1205 | } 1206 | }, 1207 | "node_modules/karma-jasmine": { 1208 | "version": "4.0.2", 1209 | "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", 1210 | "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", 1211 | "dev": true, 1212 | "dependencies": { 1213 | "jasmine-core": "^3.6.0" 1214 | }, 1215 | "engines": { 1216 | "node": ">= 10" 1217 | }, 1218 | "peerDependencies": { 1219 | "karma": "*" 1220 | } 1221 | }, 1222 | "node_modules/karma-phantomjs-launcher": { 1223 | "version": "1.0.4", 1224 | "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", 1225 | "integrity": "sha512-tf4P3plsE7wb5Pqh8GJ6RnElxfI/UM4MtVnjbSIZFpdFJlKnjRzfIx8MLCcSYJBwZ1+qSKFz4uBe3XNoq2t3KA==", 1226 | "dev": true, 1227 | "dependencies": { 1228 | "lodash": "^4.0.1", 1229 | "phantomjs-prebuilt": "^2.1.7" 1230 | }, 1231 | "peerDependencies": { 1232 | "karma": ">=0.9" 1233 | } 1234 | }, 1235 | "node_modules/karma-verbose-reporter": { 1236 | "version": "0.0.8", 1237 | "resolved": "https://registry.npmjs.org/karma-verbose-reporter/-/karma-verbose-reporter-0.0.8.tgz", 1238 | "integrity": "sha512-wHgevIcEpfgKwR3CnWd8t1ErzWeVlctO7ZtXkKFR1inb006ogz+7ZKg95eIVOnHCYWL3Gdy1dRMOGjVP0n4MlA==", 1239 | "dev": true, 1240 | "dependencies": { 1241 | "colors": "1.4.0" 1242 | }, 1243 | "peerDependencies": { 1244 | "karma": ">=0.12" 1245 | } 1246 | }, 1247 | "node_modules/kew": { 1248 | "version": "0.7.0", 1249 | "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", 1250 | "integrity": "sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==", 1251 | "dev": true 1252 | }, 1253 | "node_modules/klaw": { 1254 | "version": "1.3.1", 1255 | "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", 1256 | "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", 1257 | "dev": true, 1258 | "optionalDependencies": { 1259 | "graceful-fs": "^4.1.9" 1260 | } 1261 | }, 1262 | "node_modules/lodash": { 1263 | "version": "4.17.21", 1264 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1265 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1266 | "dev": true 1267 | }, 1268 | "node_modules/log4js": { 1269 | "version": "6.7.0", 1270 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", 1271 | "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", 1272 | "dev": true, 1273 | "dependencies": { 1274 | "date-format": "^4.0.14", 1275 | "debug": "^4.3.4", 1276 | "flatted": "^3.2.7", 1277 | "rfdc": "^1.3.0", 1278 | "streamroller": "^3.1.3" 1279 | }, 1280 | "engines": { 1281 | "node": ">=8.0" 1282 | } 1283 | }, 1284 | "node_modules/log4js/node_modules/debug": { 1285 | "version": "4.3.4", 1286 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1287 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1288 | "dev": true, 1289 | "dependencies": { 1290 | "ms": "2.1.2" 1291 | }, 1292 | "engines": { 1293 | "node": ">=6.0" 1294 | }, 1295 | "peerDependenciesMeta": { 1296 | "supports-color": { 1297 | "optional": true 1298 | } 1299 | } 1300 | }, 1301 | "node_modules/log4js/node_modules/ms": { 1302 | "version": "2.1.2", 1303 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1304 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1305 | "dev": true 1306 | }, 1307 | "node_modules/media-typer": { 1308 | "version": "0.3.0", 1309 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1310 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 1311 | "dev": true, 1312 | "engines": { 1313 | "node": ">= 0.6" 1314 | } 1315 | }, 1316 | "node_modules/mime": { 1317 | "version": "2.6.0", 1318 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 1319 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 1320 | "dev": true, 1321 | "bin": { 1322 | "mime": "cli.js" 1323 | }, 1324 | "engines": { 1325 | "node": ">=4.0.0" 1326 | } 1327 | }, 1328 | "node_modules/mime-db": { 1329 | "version": "1.52.0", 1330 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1331 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1332 | "dev": true, 1333 | "engines": { 1334 | "node": ">= 0.6" 1335 | } 1336 | }, 1337 | "node_modules/mime-types": { 1338 | "version": "2.1.35", 1339 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1340 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1341 | "dev": true, 1342 | "dependencies": { 1343 | "mime-db": "1.52.0" 1344 | }, 1345 | "engines": { 1346 | "node": ">= 0.6" 1347 | } 1348 | }, 1349 | "node_modules/minimatch": { 1350 | "version": "3.1.2", 1351 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1352 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1353 | "dev": true, 1354 | "dependencies": { 1355 | "brace-expansion": "^1.1.7" 1356 | }, 1357 | "engines": { 1358 | "node": "*" 1359 | } 1360 | }, 1361 | "node_modules/minimist": { 1362 | "version": "1.2.7", 1363 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 1364 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 1365 | "dev": true, 1366 | "funding": { 1367 | "url": "https://github.com/sponsors/ljharb" 1368 | } 1369 | }, 1370 | "node_modules/mkdirp": { 1371 | "version": "0.5.6", 1372 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 1373 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 1374 | "dev": true, 1375 | "dependencies": { 1376 | "minimist": "^1.2.6" 1377 | }, 1378 | "bin": { 1379 | "mkdirp": "bin/cmd.js" 1380 | } 1381 | }, 1382 | "node_modules/ms": { 1383 | "version": "2.0.0", 1384 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1385 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1386 | "dev": true 1387 | }, 1388 | "node_modules/negotiator": { 1389 | "version": "0.6.3", 1390 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1391 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 1392 | "dev": true, 1393 | "engines": { 1394 | "node": ">= 0.6" 1395 | } 1396 | }, 1397 | "node_modules/normalize-path": { 1398 | "version": "3.0.0", 1399 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1400 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1401 | "dev": true, 1402 | "engines": { 1403 | "node": ">=0.10.0" 1404 | } 1405 | }, 1406 | "node_modules/oauth-sign": { 1407 | "version": "0.9.0", 1408 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1409 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 1410 | "dev": true, 1411 | "engines": { 1412 | "node": "*" 1413 | } 1414 | }, 1415 | "node_modules/object-assign": { 1416 | "version": "4.1.1", 1417 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1418 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1419 | "dev": true, 1420 | "engines": { 1421 | "node": ">=0.10.0" 1422 | } 1423 | }, 1424 | "node_modules/object-inspect": { 1425 | "version": "1.12.2", 1426 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1427 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 1428 | "dev": true, 1429 | "funding": { 1430 | "url": "https://github.com/sponsors/ljharb" 1431 | } 1432 | }, 1433 | "node_modules/on-finished": { 1434 | "version": "2.4.1", 1435 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1436 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1437 | "dev": true, 1438 | "dependencies": { 1439 | "ee-first": "1.1.1" 1440 | }, 1441 | "engines": { 1442 | "node": ">= 0.8" 1443 | } 1444 | }, 1445 | "node_modules/once": { 1446 | "version": "1.4.0", 1447 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1448 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1449 | "dev": true, 1450 | "dependencies": { 1451 | "wrappy": "1" 1452 | } 1453 | }, 1454 | "node_modules/parseurl": { 1455 | "version": "1.3.3", 1456 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1457 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1458 | "dev": true, 1459 | "engines": { 1460 | "node": ">= 0.8" 1461 | } 1462 | }, 1463 | "node_modules/path-is-absolute": { 1464 | "version": "1.0.1", 1465 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1466 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1467 | "dev": true, 1468 | "engines": { 1469 | "node": ">=0.10.0" 1470 | } 1471 | }, 1472 | "node_modules/pend": { 1473 | "version": "1.2.0", 1474 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1475 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", 1476 | "dev": true 1477 | }, 1478 | "node_modules/performance-now": { 1479 | "version": "2.1.0", 1480 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1481 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", 1482 | "dev": true 1483 | }, 1484 | "node_modules/phantomjs-prebuilt": { 1485 | "version": "2.1.16", 1486 | "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", 1487 | "integrity": "sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ==", 1488 | "deprecated": "this package is now deprecated", 1489 | "dev": true, 1490 | "hasInstallScript": true, 1491 | "dependencies": { 1492 | "es6-promise": "^4.0.3", 1493 | "extract-zip": "^1.6.5", 1494 | "fs-extra": "^1.0.0", 1495 | "hasha": "^2.2.0", 1496 | "kew": "^0.7.0", 1497 | "progress": "^1.1.8", 1498 | "request": "^2.81.0", 1499 | "request-progress": "^2.0.1", 1500 | "which": "^1.2.10" 1501 | }, 1502 | "bin": { 1503 | "phantomjs": "bin/phantomjs" 1504 | } 1505 | }, 1506 | "node_modules/picomatch": { 1507 | "version": "2.3.1", 1508 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1509 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1510 | "dev": true, 1511 | "engines": { 1512 | "node": ">=8.6" 1513 | }, 1514 | "funding": { 1515 | "url": "https://github.com/sponsors/jonschlinkert" 1516 | } 1517 | }, 1518 | "node_modules/pinkie": { 1519 | "version": "2.0.4", 1520 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1521 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 1522 | "dev": true, 1523 | "engines": { 1524 | "node": ">=0.10.0" 1525 | } 1526 | }, 1527 | "node_modules/pinkie-promise": { 1528 | "version": "2.0.1", 1529 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1530 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 1531 | "dev": true, 1532 | "dependencies": { 1533 | "pinkie": "^2.0.0" 1534 | }, 1535 | "engines": { 1536 | "node": ">=0.10.0" 1537 | } 1538 | }, 1539 | "node_modules/process-nextick-args": { 1540 | "version": "2.0.1", 1541 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1542 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1543 | "dev": true 1544 | }, 1545 | "node_modules/progress": { 1546 | "version": "1.1.8", 1547 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 1548 | "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", 1549 | "dev": true, 1550 | "engines": { 1551 | "node": ">=0.4.0" 1552 | } 1553 | }, 1554 | "node_modules/psl": { 1555 | "version": "1.9.0", 1556 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1557 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 1558 | "dev": true 1559 | }, 1560 | "node_modules/qjobs": { 1561 | "version": "1.2.0", 1562 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 1563 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 1564 | "dev": true, 1565 | "engines": { 1566 | "node": ">=0.9" 1567 | } 1568 | }, 1569 | "node_modules/qs": { 1570 | "version": "6.11.0", 1571 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1572 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1573 | "dev": true, 1574 | "dependencies": { 1575 | "side-channel": "^1.0.4" 1576 | }, 1577 | "engines": { 1578 | "node": ">=0.6" 1579 | }, 1580 | "funding": { 1581 | "url": "https://github.com/sponsors/ljharb" 1582 | } 1583 | }, 1584 | "node_modules/range-parser": { 1585 | "version": "1.2.1", 1586 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1587 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1588 | "dev": true, 1589 | "engines": { 1590 | "node": ">= 0.6" 1591 | } 1592 | }, 1593 | "node_modules/raw-body": { 1594 | "version": "2.5.1", 1595 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1596 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1597 | "dev": true, 1598 | "dependencies": { 1599 | "bytes": "3.1.2", 1600 | "http-errors": "2.0.0", 1601 | "iconv-lite": "0.4.24", 1602 | "unpipe": "1.0.0" 1603 | }, 1604 | "engines": { 1605 | "node": ">= 0.8" 1606 | } 1607 | }, 1608 | "node_modules/readable-stream": { 1609 | "version": "2.3.7", 1610 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1611 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1612 | "dev": true, 1613 | "dependencies": { 1614 | "core-util-is": "~1.0.0", 1615 | "inherits": "~2.0.3", 1616 | "isarray": "~1.0.0", 1617 | "process-nextick-args": "~2.0.0", 1618 | "safe-buffer": "~5.1.1", 1619 | "string_decoder": "~1.1.1", 1620 | "util-deprecate": "~1.0.1" 1621 | } 1622 | }, 1623 | "node_modules/readable-stream/node_modules/safe-buffer": { 1624 | "version": "5.1.2", 1625 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1626 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1627 | "dev": true 1628 | }, 1629 | "node_modules/readdirp": { 1630 | "version": "3.6.0", 1631 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1632 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1633 | "dev": true, 1634 | "dependencies": { 1635 | "picomatch": "^2.2.1" 1636 | }, 1637 | "engines": { 1638 | "node": ">=8.10.0" 1639 | } 1640 | }, 1641 | "node_modules/request": { 1642 | "version": "2.88.2", 1643 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1644 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1645 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 1646 | "dev": true, 1647 | "dependencies": { 1648 | "aws-sign2": "~0.7.0", 1649 | "aws4": "^1.8.0", 1650 | "caseless": "~0.12.0", 1651 | "combined-stream": "~1.0.6", 1652 | "extend": "~3.0.2", 1653 | "forever-agent": "~0.6.1", 1654 | "form-data": "~2.3.2", 1655 | "har-validator": "~5.1.3", 1656 | "http-signature": "~1.2.0", 1657 | "is-typedarray": "~1.0.0", 1658 | "isstream": "~0.1.2", 1659 | "json-stringify-safe": "~5.0.1", 1660 | "mime-types": "~2.1.19", 1661 | "oauth-sign": "~0.9.0", 1662 | "performance-now": "^2.1.0", 1663 | "qs": "~6.5.2", 1664 | "safe-buffer": "^5.1.2", 1665 | "tough-cookie": "~2.5.0", 1666 | "tunnel-agent": "^0.6.0", 1667 | "uuid": "^3.3.2" 1668 | }, 1669 | "engines": { 1670 | "node": ">= 6" 1671 | } 1672 | }, 1673 | "node_modules/request-progress": { 1674 | "version": "2.0.1", 1675 | "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", 1676 | "integrity": "sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==", 1677 | "dev": true, 1678 | "dependencies": { 1679 | "throttleit": "^1.0.0" 1680 | } 1681 | }, 1682 | "node_modules/request/node_modules/qs": { 1683 | "version": "6.5.3", 1684 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 1685 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 1686 | "dev": true, 1687 | "engines": { 1688 | "node": ">=0.6" 1689 | } 1690 | }, 1691 | "node_modules/require-directory": { 1692 | "version": "2.1.1", 1693 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1694 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1695 | "dev": true, 1696 | "engines": { 1697 | "node": ">=0.10.0" 1698 | } 1699 | }, 1700 | "node_modules/requires-port": { 1701 | "version": "1.0.0", 1702 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1703 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 1704 | "dev": true 1705 | }, 1706 | "node_modules/rfdc": { 1707 | "version": "1.3.0", 1708 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 1709 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 1710 | "dev": true 1711 | }, 1712 | "node_modules/rimraf": { 1713 | "version": "3.0.2", 1714 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1715 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1716 | "dev": true, 1717 | "dependencies": { 1718 | "glob": "^7.1.3" 1719 | }, 1720 | "bin": { 1721 | "rimraf": "bin.js" 1722 | }, 1723 | "funding": { 1724 | "url": "https://github.com/sponsors/isaacs" 1725 | } 1726 | }, 1727 | "node_modules/safe-buffer": { 1728 | "version": "5.2.1", 1729 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1730 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1731 | "dev": true, 1732 | "funding": [ 1733 | { 1734 | "type": "github", 1735 | "url": "https://github.com/sponsors/feross" 1736 | }, 1737 | { 1738 | "type": "patreon", 1739 | "url": "https://www.patreon.com/feross" 1740 | }, 1741 | { 1742 | "type": "consulting", 1743 | "url": "https://feross.org/support" 1744 | } 1745 | ] 1746 | }, 1747 | "node_modules/safer-buffer": { 1748 | "version": "2.1.2", 1749 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1750 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1751 | "dev": true 1752 | }, 1753 | "node_modules/setprototypeof": { 1754 | "version": "1.2.0", 1755 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1756 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 1757 | "dev": true 1758 | }, 1759 | "node_modules/side-channel": { 1760 | "version": "1.0.4", 1761 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1762 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1763 | "dev": true, 1764 | "dependencies": { 1765 | "call-bind": "^1.0.0", 1766 | "get-intrinsic": "^1.0.2", 1767 | "object-inspect": "^1.9.0" 1768 | }, 1769 | "funding": { 1770 | "url": "https://github.com/sponsors/ljharb" 1771 | } 1772 | }, 1773 | "node_modules/socket.io": { 1774 | "version": "4.5.3", 1775 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", 1776 | "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", 1777 | "dev": true, 1778 | "dependencies": { 1779 | "accepts": "~1.3.4", 1780 | "base64id": "~2.0.0", 1781 | "debug": "~4.3.2", 1782 | "engine.io": "~6.2.0", 1783 | "socket.io-adapter": "~2.4.0", 1784 | "socket.io-parser": "~4.2.0" 1785 | }, 1786 | "engines": { 1787 | "node": ">=10.0.0" 1788 | } 1789 | }, 1790 | "node_modules/socket.io-adapter": { 1791 | "version": "2.4.0", 1792 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", 1793 | "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", 1794 | "dev": true 1795 | }, 1796 | "node_modules/socket.io-parser": { 1797 | "version": "4.2.1", 1798 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", 1799 | "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", 1800 | "dev": true, 1801 | "dependencies": { 1802 | "@socket.io/component-emitter": "~3.1.0", 1803 | "debug": "~4.3.1" 1804 | }, 1805 | "engines": { 1806 | "node": ">=10.0.0" 1807 | } 1808 | }, 1809 | "node_modules/socket.io-parser/node_modules/debug": { 1810 | "version": "4.3.4", 1811 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1812 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1813 | "dev": true, 1814 | "dependencies": { 1815 | "ms": "2.1.2" 1816 | }, 1817 | "engines": { 1818 | "node": ">=6.0" 1819 | }, 1820 | "peerDependenciesMeta": { 1821 | "supports-color": { 1822 | "optional": true 1823 | } 1824 | } 1825 | }, 1826 | "node_modules/socket.io-parser/node_modules/ms": { 1827 | "version": "2.1.2", 1828 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1829 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1830 | "dev": true 1831 | }, 1832 | "node_modules/socket.io/node_modules/debug": { 1833 | "version": "4.3.4", 1834 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1835 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1836 | "dev": true, 1837 | "dependencies": { 1838 | "ms": "2.1.2" 1839 | }, 1840 | "engines": { 1841 | "node": ">=6.0" 1842 | }, 1843 | "peerDependenciesMeta": { 1844 | "supports-color": { 1845 | "optional": true 1846 | } 1847 | } 1848 | }, 1849 | "node_modules/socket.io/node_modules/ms": { 1850 | "version": "2.1.2", 1851 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1852 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1853 | "dev": true 1854 | }, 1855 | "node_modules/source-map": { 1856 | "version": "0.6.1", 1857 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1858 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1859 | "dev": true, 1860 | "engines": { 1861 | "node": ">=0.10.0" 1862 | } 1863 | }, 1864 | "node_modules/sshpk": { 1865 | "version": "1.17.0", 1866 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 1867 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 1868 | "dev": true, 1869 | "dependencies": { 1870 | "asn1": "~0.2.3", 1871 | "assert-plus": "^1.0.0", 1872 | "bcrypt-pbkdf": "^1.0.0", 1873 | "dashdash": "^1.12.0", 1874 | "ecc-jsbn": "~0.1.1", 1875 | "getpass": "^0.1.1", 1876 | "jsbn": "~0.1.0", 1877 | "safer-buffer": "^2.0.2", 1878 | "tweetnacl": "~0.14.0" 1879 | }, 1880 | "bin": { 1881 | "sshpk-conv": "bin/sshpk-conv", 1882 | "sshpk-sign": "bin/sshpk-sign", 1883 | "sshpk-verify": "bin/sshpk-verify" 1884 | }, 1885 | "engines": { 1886 | "node": ">=0.10.0" 1887 | } 1888 | }, 1889 | "node_modules/statuses": { 1890 | "version": "1.5.0", 1891 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1892 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 1893 | "dev": true, 1894 | "engines": { 1895 | "node": ">= 0.6" 1896 | } 1897 | }, 1898 | "node_modules/streamroller": { 1899 | "version": "3.1.3", 1900 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", 1901 | "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", 1902 | "dev": true, 1903 | "dependencies": { 1904 | "date-format": "^4.0.14", 1905 | "debug": "^4.3.4", 1906 | "fs-extra": "^8.1.0" 1907 | }, 1908 | "engines": { 1909 | "node": ">=8.0" 1910 | } 1911 | }, 1912 | "node_modules/streamroller/node_modules/debug": { 1913 | "version": "4.3.4", 1914 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1915 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1916 | "dev": true, 1917 | "dependencies": { 1918 | "ms": "2.1.2" 1919 | }, 1920 | "engines": { 1921 | "node": ">=6.0" 1922 | }, 1923 | "peerDependenciesMeta": { 1924 | "supports-color": { 1925 | "optional": true 1926 | } 1927 | } 1928 | }, 1929 | "node_modules/streamroller/node_modules/fs-extra": { 1930 | "version": "8.1.0", 1931 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1932 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1933 | "dev": true, 1934 | "dependencies": { 1935 | "graceful-fs": "^4.2.0", 1936 | "jsonfile": "^4.0.0", 1937 | "universalify": "^0.1.0" 1938 | }, 1939 | "engines": { 1940 | "node": ">=6 <7 || >=8" 1941 | } 1942 | }, 1943 | "node_modules/streamroller/node_modules/jsonfile": { 1944 | "version": "4.0.0", 1945 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1946 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1947 | "dev": true, 1948 | "optionalDependencies": { 1949 | "graceful-fs": "^4.1.6" 1950 | } 1951 | }, 1952 | "node_modules/streamroller/node_modules/ms": { 1953 | "version": "2.1.2", 1954 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1955 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1956 | "dev": true 1957 | }, 1958 | "node_modules/string_decoder": { 1959 | "version": "1.1.1", 1960 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1961 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1962 | "dev": true, 1963 | "dependencies": { 1964 | "safe-buffer": "~5.1.0" 1965 | } 1966 | }, 1967 | "node_modules/string_decoder/node_modules/safe-buffer": { 1968 | "version": "5.1.2", 1969 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1970 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1971 | "dev": true 1972 | }, 1973 | "node_modules/string-width": { 1974 | "version": "4.2.3", 1975 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1976 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1977 | "dev": true, 1978 | "dependencies": { 1979 | "emoji-regex": "^8.0.0", 1980 | "is-fullwidth-code-point": "^3.0.0", 1981 | "strip-ansi": "^6.0.1" 1982 | }, 1983 | "engines": { 1984 | "node": ">=8" 1985 | } 1986 | }, 1987 | "node_modules/strip-ansi": { 1988 | "version": "6.0.1", 1989 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1990 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1991 | "dev": true, 1992 | "dependencies": { 1993 | "ansi-regex": "^5.0.1" 1994 | }, 1995 | "engines": { 1996 | "node": ">=8" 1997 | } 1998 | }, 1999 | "node_modules/throttleit": { 2000 | "version": "1.0.0", 2001 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", 2002 | "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", 2003 | "dev": true 2004 | }, 2005 | "node_modules/tmp": { 2006 | "version": "0.2.1", 2007 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 2008 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 2009 | "dev": true, 2010 | "dependencies": { 2011 | "rimraf": "^3.0.0" 2012 | }, 2013 | "engines": { 2014 | "node": ">=8.17.0" 2015 | } 2016 | }, 2017 | "node_modules/to-regex-range": { 2018 | "version": "5.0.1", 2019 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2020 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2021 | "dev": true, 2022 | "dependencies": { 2023 | "is-number": "^7.0.0" 2024 | }, 2025 | "engines": { 2026 | "node": ">=8.0" 2027 | } 2028 | }, 2029 | "node_modules/toidentifier": { 2030 | "version": "1.0.1", 2031 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2032 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 2033 | "dev": true, 2034 | "engines": { 2035 | "node": ">=0.6" 2036 | } 2037 | }, 2038 | "node_modules/tough-cookie": { 2039 | "version": "2.5.0", 2040 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 2041 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 2042 | "dev": true, 2043 | "dependencies": { 2044 | "psl": "^1.1.28", 2045 | "punycode": "^2.1.1" 2046 | }, 2047 | "engines": { 2048 | "node": ">=0.8" 2049 | } 2050 | }, 2051 | "node_modules/tough-cookie/node_modules/punycode": { 2052 | "version": "2.1.1", 2053 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2054 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2055 | "dev": true, 2056 | "engines": { 2057 | "node": ">=6" 2058 | } 2059 | }, 2060 | "node_modules/tunnel-agent": { 2061 | "version": "0.6.0", 2062 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2063 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2064 | "dev": true, 2065 | "dependencies": { 2066 | "safe-buffer": "^5.0.1" 2067 | }, 2068 | "engines": { 2069 | "node": "*" 2070 | } 2071 | }, 2072 | "node_modules/tweetnacl": { 2073 | "version": "0.14.5", 2074 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 2075 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 2076 | "dev": true 2077 | }, 2078 | "node_modules/type-is": { 2079 | "version": "1.6.18", 2080 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2081 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2082 | "dev": true, 2083 | "dependencies": { 2084 | "media-typer": "0.3.0", 2085 | "mime-types": "~2.1.24" 2086 | }, 2087 | "engines": { 2088 | "node": ">= 0.6" 2089 | } 2090 | }, 2091 | "node_modules/typedarray": { 2092 | "version": "0.0.6", 2093 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2094 | "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", 2095 | "dev": true 2096 | }, 2097 | "node_modules/ua-parser-js": { 2098 | "version": "0.7.32", 2099 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", 2100 | "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", 2101 | "dev": true, 2102 | "funding": [ 2103 | { 2104 | "type": "opencollective", 2105 | "url": "https://opencollective.com/ua-parser-js" 2106 | }, 2107 | { 2108 | "type": "paypal", 2109 | "url": "https://paypal.me/faisalman" 2110 | } 2111 | ], 2112 | "engines": { 2113 | "node": "*" 2114 | } 2115 | }, 2116 | "node_modules/universalify": { 2117 | "version": "0.1.2", 2118 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 2119 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 2120 | "dev": true, 2121 | "engines": { 2122 | "node": ">= 4.0.0" 2123 | } 2124 | }, 2125 | "node_modules/unpipe": { 2126 | "version": "1.0.0", 2127 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2128 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 2129 | "dev": true, 2130 | "engines": { 2131 | "node": ">= 0.8" 2132 | } 2133 | }, 2134 | "node_modules/uri-js": { 2135 | "version": "4.4.1", 2136 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2137 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2138 | "dev": true, 2139 | "dependencies": { 2140 | "punycode": "^2.1.0" 2141 | } 2142 | }, 2143 | "node_modules/uri-js/node_modules/punycode": { 2144 | "version": "2.1.1", 2145 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2146 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2147 | "dev": true, 2148 | "engines": { 2149 | "node": ">=6" 2150 | } 2151 | }, 2152 | "node_modules/util-deprecate": { 2153 | "version": "1.0.2", 2154 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2155 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2156 | "dev": true 2157 | }, 2158 | "node_modules/utils-merge": { 2159 | "version": "1.0.1", 2160 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2161 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 2162 | "dev": true, 2163 | "engines": { 2164 | "node": ">= 0.4.0" 2165 | } 2166 | }, 2167 | "node_modules/uuid": { 2168 | "version": "3.4.0", 2169 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 2170 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 2171 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 2172 | "dev": true, 2173 | "bin": { 2174 | "uuid": "bin/uuid" 2175 | } 2176 | }, 2177 | "node_modules/vary": { 2178 | "version": "1.1.2", 2179 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2180 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 2181 | "dev": true, 2182 | "engines": { 2183 | "node": ">= 0.8" 2184 | } 2185 | }, 2186 | "node_modules/verror": { 2187 | "version": "1.10.0", 2188 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 2189 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 2190 | "dev": true, 2191 | "engines": [ 2192 | "node >=0.6.0" 2193 | ], 2194 | "dependencies": { 2195 | "assert-plus": "^1.0.0", 2196 | "core-util-is": "1.0.2", 2197 | "extsprintf": "^1.2.0" 2198 | } 2199 | }, 2200 | "node_modules/verror/node_modules/core-util-is": { 2201 | "version": "1.0.2", 2202 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 2203 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 2204 | "dev": true 2205 | }, 2206 | "node_modules/void-elements": { 2207 | "version": "2.0.1", 2208 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 2209 | "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", 2210 | "dev": true, 2211 | "engines": { 2212 | "node": ">=0.10.0" 2213 | } 2214 | }, 2215 | "node_modules/which": { 2216 | "version": "1.3.1", 2217 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2218 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2219 | "dev": true, 2220 | "dependencies": { 2221 | "isexe": "^2.0.0" 2222 | }, 2223 | "bin": { 2224 | "which": "bin/which" 2225 | } 2226 | }, 2227 | "node_modules/wrap-ansi": { 2228 | "version": "7.0.0", 2229 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2230 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2231 | "dev": true, 2232 | "dependencies": { 2233 | "ansi-styles": "^4.0.0", 2234 | "string-width": "^4.1.0", 2235 | "strip-ansi": "^6.0.0" 2236 | }, 2237 | "engines": { 2238 | "node": ">=10" 2239 | }, 2240 | "funding": { 2241 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2242 | } 2243 | }, 2244 | "node_modules/wrappy": { 2245 | "version": "1.0.2", 2246 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2247 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2248 | "dev": true 2249 | }, 2250 | "node_modules/ws": { 2251 | "version": "8.2.3", 2252 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", 2253 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", 2254 | "dev": true, 2255 | "engines": { 2256 | "node": ">=10.0.0" 2257 | }, 2258 | "peerDependencies": { 2259 | "bufferutil": "^4.0.1", 2260 | "utf-8-validate": "^5.0.2" 2261 | }, 2262 | "peerDependenciesMeta": { 2263 | "bufferutil": { 2264 | "optional": true 2265 | }, 2266 | "utf-8-validate": { 2267 | "optional": true 2268 | } 2269 | } 2270 | }, 2271 | "node_modules/y18n": { 2272 | "version": "5.0.8", 2273 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2274 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2275 | "dev": true, 2276 | "engines": { 2277 | "node": ">=10" 2278 | } 2279 | }, 2280 | "node_modules/yargs": { 2281 | "version": "16.2.0", 2282 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2283 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2284 | "dev": true, 2285 | "dependencies": { 2286 | "cliui": "^7.0.2", 2287 | "escalade": "^3.1.1", 2288 | "get-caller-file": "^2.0.5", 2289 | "require-directory": "^2.1.1", 2290 | "string-width": "^4.2.0", 2291 | "y18n": "^5.0.5", 2292 | "yargs-parser": "^20.2.2" 2293 | }, 2294 | "engines": { 2295 | "node": ">=10" 2296 | } 2297 | }, 2298 | "node_modules/yargs-parser": { 2299 | "version": "20.2.9", 2300 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2301 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2302 | "dev": true, 2303 | "engines": { 2304 | "node": ">=10" 2305 | } 2306 | }, 2307 | "node_modules/yauzl": { 2308 | "version": "2.10.0", 2309 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 2310 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 2311 | "dev": true, 2312 | "dependencies": { 2313 | "buffer-crc32": "~0.2.3", 2314 | "fd-slicer": "~1.1.0" 2315 | } 2316 | } 2317 | }, 2318 | "dependencies": { 2319 | "@colors/colors": { 2320 | "version": "1.5.0", 2321 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", 2322 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", 2323 | "dev": true 2324 | }, 2325 | "@socket.io/component-emitter": { 2326 | "version": "3.1.0", 2327 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 2328 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", 2329 | "dev": true 2330 | }, 2331 | "@types/cookie": { 2332 | "version": "0.4.1", 2333 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 2334 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", 2335 | "dev": true 2336 | }, 2337 | "@types/cors": { 2338 | "version": "2.8.12", 2339 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", 2340 | "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", 2341 | "dev": true 2342 | }, 2343 | "@types/node": { 2344 | "version": "18.11.0", 2345 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", 2346 | "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", 2347 | "dev": true 2348 | }, 2349 | "accepts": { 2350 | "version": "1.3.8", 2351 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 2352 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 2353 | "dev": true, 2354 | "requires": { 2355 | "mime-types": "~2.1.34", 2356 | "negotiator": "0.6.3" 2357 | } 2358 | }, 2359 | "ajv": { 2360 | "version": "6.12.6", 2361 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2362 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2363 | "dev": true, 2364 | "requires": { 2365 | "fast-deep-equal": "^3.1.1", 2366 | "fast-json-stable-stringify": "^2.0.0", 2367 | "json-schema-traverse": "^0.4.1", 2368 | "uri-js": "^4.2.2" 2369 | } 2370 | }, 2371 | "ansi-regex": { 2372 | "version": "5.0.1", 2373 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2374 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2375 | "dev": true 2376 | }, 2377 | "ansi-styles": { 2378 | "version": "4.3.0", 2379 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2380 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2381 | "dev": true, 2382 | "requires": { 2383 | "color-convert": "^2.0.1" 2384 | } 2385 | }, 2386 | "anymatch": { 2387 | "version": "3.1.2", 2388 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 2389 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 2390 | "dev": true, 2391 | "requires": { 2392 | "normalize-path": "^3.0.0", 2393 | "picomatch": "^2.0.4" 2394 | } 2395 | }, 2396 | "asn1": { 2397 | "version": "0.2.6", 2398 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 2399 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 2400 | "dev": true, 2401 | "requires": { 2402 | "safer-buffer": "~2.1.0" 2403 | } 2404 | }, 2405 | "assert-plus": { 2406 | "version": "1.0.0", 2407 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 2408 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 2409 | "dev": true 2410 | }, 2411 | "asynckit": { 2412 | "version": "0.4.0", 2413 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 2414 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 2415 | "dev": true 2416 | }, 2417 | "aws-sign2": { 2418 | "version": "0.7.0", 2419 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 2420 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 2421 | "dev": true 2422 | }, 2423 | "aws4": { 2424 | "version": "1.11.0", 2425 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 2426 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", 2427 | "dev": true 2428 | }, 2429 | "balanced-match": { 2430 | "version": "1.0.2", 2431 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2432 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2433 | "dev": true 2434 | }, 2435 | "base64id": { 2436 | "version": "2.0.0", 2437 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 2438 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 2439 | "dev": true 2440 | }, 2441 | "bcrypt-pbkdf": { 2442 | "version": "1.0.2", 2443 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 2444 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 2445 | "dev": true, 2446 | "requires": { 2447 | "tweetnacl": "^0.14.3" 2448 | } 2449 | }, 2450 | "binary-extensions": { 2451 | "version": "2.2.0", 2452 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2453 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2454 | "dev": true 2455 | }, 2456 | "body-parser": { 2457 | "version": "1.20.1", 2458 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 2459 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 2460 | "dev": true, 2461 | "requires": { 2462 | "bytes": "3.1.2", 2463 | "content-type": "~1.0.4", 2464 | "debug": "2.6.9", 2465 | "depd": "2.0.0", 2466 | "destroy": "1.2.0", 2467 | "http-errors": "2.0.0", 2468 | "iconv-lite": "0.4.24", 2469 | "on-finished": "2.4.1", 2470 | "qs": "6.11.0", 2471 | "raw-body": "2.5.1", 2472 | "type-is": "~1.6.18", 2473 | "unpipe": "1.0.0" 2474 | } 2475 | }, 2476 | "brace-expansion": { 2477 | "version": "1.1.11", 2478 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2479 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2480 | "dev": true, 2481 | "requires": { 2482 | "balanced-match": "^1.0.0", 2483 | "concat-map": "0.0.1" 2484 | } 2485 | }, 2486 | "braces": { 2487 | "version": "3.0.2", 2488 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2489 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2490 | "dev": true, 2491 | "requires": { 2492 | "fill-range": "^7.0.1" 2493 | } 2494 | }, 2495 | "buffer-crc32": { 2496 | "version": "0.2.13", 2497 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 2498 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 2499 | "dev": true 2500 | }, 2501 | "buffer-from": { 2502 | "version": "1.1.2", 2503 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 2504 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 2505 | "dev": true 2506 | }, 2507 | "bytes": { 2508 | "version": "3.1.2", 2509 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 2510 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 2511 | "dev": true 2512 | }, 2513 | "call-bind": { 2514 | "version": "1.0.2", 2515 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 2516 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 2517 | "dev": true, 2518 | "requires": { 2519 | "function-bind": "^1.1.1", 2520 | "get-intrinsic": "^1.0.2" 2521 | } 2522 | }, 2523 | "caseless": { 2524 | "version": "0.12.0", 2525 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 2526 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", 2527 | "dev": true 2528 | }, 2529 | "chokidar": { 2530 | "version": "3.5.3", 2531 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2532 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2533 | "dev": true, 2534 | "requires": { 2535 | "anymatch": "~3.1.2", 2536 | "braces": "~3.0.2", 2537 | "fsevents": "~2.3.2", 2538 | "glob-parent": "~5.1.2", 2539 | "is-binary-path": "~2.1.0", 2540 | "is-glob": "~4.0.1", 2541 | "normalize-path": "~3.0.0", 2542 | "readdirp": "~3.6.0" 2543 | } 2544 | }, 2545 | "cliui": { 2546 | "version": "7.0.4", 2547 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 2548 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 2549 | "dev": true, 2550 | "requires": { 2551 | "string-width": "^4.2.0", 2552 | "strip-ansi": "^6.0.0", 2553 | "wrap-ansi": "^7.0.0" 2554 | } 2555 | }, 2556 | "color-convert": { 2557 | "version": "2.0.1", 2558 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2559 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2560 | "dev": true, 2561 | "requires": { 2562 | "color-name": "~1.1.4" 2563 | } 2564 | }, 2565 | "color-name": { 2566 | "version": "1.1.4", 2567 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2568 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2569 | "dev": true 2570 | }, 2571 | "colors": { 2572 | "version": "1.4.0", 2573 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 2574 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 2575 | "dev": true 2576 | }, 2577 | "combined-stream": { 2578 | "version": "1.0.8", 2579 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2580 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2581 | "dev": true, 2582 | "requires": { 2583 | "delayed-stream": "~1.0.0" 2584 | } 2585 | }, 2586 | "concat-map": { 2587 | "version": "0.0.1", 2588 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2589 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2590 | "dev": true 2591 | }, 2592 | "concat-stream": { 2593 | "version": "1.6.2", 2594 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 2595 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 2596 | "dev": true, 2597 | "requires": { 2598 | "buffer-from": "^1.0.0", 2599 | "inherits": "^2.0.3", 2600 | "readable-stream": "^2.2.2", 2601 | "typedarray": "^0.0.6" 2602 | } 2603 | }, 2604 | "connect": { 2605 | "version": "3.7.0", 2606 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 2607 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 2608 | "dev": true, 2609 | "requires": { 2610 | "debug": "2.6.9", 2611 | "finalhandler": "1.1.2", 2612 | "parseurl": "~1.3.3", 2613 | "utils-merge": "1.0.1" 2614 | } 2615 | }, 2616 | "content-type": { 2617 | "version": "1.0.4", 2618 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 2619 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 2620 | "dev": true 2621 | }, 2622 | "cookie": { 2623 | "version": "0.4.2", 2624 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 2625 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 2626 | "dev": true 2627 | }, 2628 | "core-util-is": { 2629 | "version": "1.0.3", 2630 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 2631 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 2632 | "dev": true 2633 | }, 2634 | "cors": { 2635 | "version": "2.8.5", 2636 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 2637 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 2638 | "dev": true, 2639 | "requires": { 2640 | "object-assign": "^4", 2641 | "vary": "^1" 2642 | } 2643 | }, 2644 | "custom-event": { 2645 | "version": "1.0.1", 2646 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 2647 | "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", 2648 | "dev": true 2649 | }, 2650 | "dashdash": { 2651 | "version": "1.14.1", 2652 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 2653 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 2654 | "dev": true, 2655 | "requires": { 2656 | "assert-plus": "^1.0.0" 2657 | } 2658 | }, 2659 | "date-format": { 2660 | "version": "4.0.14", 2661 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", 2662 | "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", 2663 | "dev": true 2664 | }, 2665 | "debug": { 2666 | "version": "2.6.9", 2667 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2668 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2669 | "dev": true, 2670 | "requires": { 2671 | "ms": "2.0.0" 2672 | } 2673 | }, 2674 | "delayed-stream": { 2675 | "version": "1.0.0", 2676 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2677 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 2678 | "dev": true 2679 | }, 2680 | "depd": { 2681 | "version": "2.0.0", 2682 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2683 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 2684 | "dev": true 2685 | }, 2686 | "destroy": { 2687 | "version": "1.2.0", 2688 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 2689 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 2690 | "dev": true 2691 | }, 2692 | "di": { 2693 | "version": "0.0.1", 2694 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 2695 | "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", 2696 | "dev": true 2697 | }, 2698 | "dom-serialize": { 2699 | "version": "2.2.1", 2700 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 2701 | "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", 2702 | "dev": true, 2703 | "requires": { 2704 | "custom-event": "~1.0.0", 2705 | "ent": "~2.2.0", 2706 | "extend": "^3.0.0", 2707 | "void-elements": "^2.0.0" 2708 | } 2709 | }, 2710 | "ecc-jsbn": { 2711 | "version": "0.1.2", 2712 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 2713 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 2714 | "dev": true, 2715 | "requires": { 2716 | "jsbn": "~0.1.0", 2717 | "safer-buffer": "^2.1.0" 2718 | } 2719 | }, 2720 | "ee-first": { 2721 | "version": "1.1.1", 2722 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2723 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 2724 | "dev": true 2725 | }, 2726 | "emoji-regex": { 2727 | "version": "8.0.0", 2728 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2729 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2730 | "dev": true 2731 | }, 2732 | "encodeurl": { 2733 | "version": "1.0.2", 2734 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 2735 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 2736 | "dev": true 2737 | }, 2738 | "engine.io": { 2739 | "version": "6.2.0", 2740 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", 2741 | "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", 2742 | "dev": true, 2743 | "requires": { 2744 | "@types/cookie": "^0.4.1", 2745 | "@types/cors": "^2.8.12", 2746 | "@types/node": ">=10.0.0", 2747 | "accepts": "~1.3.4", 2748 | "base64id": "2.0.0", 2749 | "cookie": "~0.4.1", 2750 | "cors": "~2.8.5", 2751 | "debug": "~4.3.1", 2752 | "engine.io-parser": "~5.0.3", 2753 | "ws": "~8.2.3" 2754 | }, 2755 | "dependencies": { 2756 | "debug": { 2757 | "version": "4.3.4", 2758 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2759 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2760 | "dev": true, 2761 | "requires": { 2762 | "ms": "2.1.2" 2763 | } 2764 | }, 2765 | "ms": { 2766 | "version": "2.1.2", 2767 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2768 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2769 | "dev": true 2770 | } 2771 | } 2772 | }, 2773 | "engine.io-parser": { 2774 | "version": "5.0.4", 2775 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", 2776 | "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", 2777 | "dev": true 2778 | }, 2779 | "ent": { 2780 | "version": "2.2.0", 2781 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 2782 | "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", 2783 | "dev": true 2784 | }, 2785 | "es6-promise": { 2786 | "version": "4.2.8", 2787 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 2788 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 2789 | "dev": true 2790 | }, 2791 | "escalade": { 2792 | "version": "3.1.1", 2793 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2794 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2795 | "dev": true 2796 | }, 2797 | "escape-html": { 2798 | "version": "1.0.3", 2799 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2800 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 2801 | "dev": true 2802 | }, 2803 | "eventemitter3": { 2804 | "version": "4.0.7", 2805 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 2806 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 2807 | "dev": true 2808 | }, 2809 | "extend": { 2810 | "version": "3.0.2", 2811 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 2812 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 2813 | "dev": true 2814 | }, 2815 | "extract-zip": { 2816 | "version": "1.7.0", 2817 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", 2818 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", 2819 | "dev": true, 2820 | "requires": { 2821 | "concat-stream": "^1.6.2", 2822 | "debug": "^2.6.9", 2823 | "mkdirp": "^0.5.4", 2824 | "yauzl": "^2.10.0" 2825 | } 2826 | }, 2827 | "extsprintf": { 2828 | "version": "1.3.0", 2829 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 2830 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 2831 | "dev": true 2832 | }, 2833 | "fast-deep-equal": { 2834 | "version": "3.1.3", 2835 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2836 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2837 | "dev": true 2838 | }, 2839 | "fast-json-stable-stringify": { 2840 | "version": "2.1.0", 2841 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2842 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2843 | "dev": true 2844 | }, 2845 | "fd-slicer": { 2846 | "version": "1.1.0", 2847 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 2848 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 2849 | "dev": true, 2850 | "requires": { 2851 | "pend": "~1.2.0" 2852 | } 2853 | }, 2854 | "fill-range": { 2855 | "version": "7.0.1", 2856 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2857 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2858 | "dev": true, 2859 | "requires": { 2860 | "to-regex-range": "^5.0.1" 2861 | } 2862 | }, 2863 | "finalhandler": { 2864 | "version": "1.1.2", 2865 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 2866 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 2867 | "dev": true, 2868 | "requires": { 2869 | "debug": "2.6.9", 2870 | "encodeurl": "~1.0.2", 2871 | "escape-html": "~1.0.3", 2872 | "on-finished": "~2.3.0", 2873 | "parseurl": "~1.3.3", 2874 | "statuses": "~1.5.0", 2875 | "unpipe": "~1.0.0" 2876 | }, 2877 | "dependencies": { 2878 | "on-finished": { 2879 | "version": "2.3.0", 2880 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2881 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 2882 | "dev": true, 2883 | "requires": { 2884 | "ee-first": "1.1.1" 2885 | } 2886 | } 2887 | } 2888 | }, 2889 | "flatted": { 2890 | "version": "3.2.7", 2891 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 2892 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 2893 | "dev": true 2894 | }, 2895 | "follow-redirects": { 2896 | "version": "1.15.2", 2897 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 2898 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 2899 | "dev": true 2900 | }, 2901 | "forever-agent": { 2902 | "version": "0.6.1", 2903 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 2904 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 2905 | "dev": true 2906 | }, 2907 | "form-data": { 2908 | "version": "2.3.3", 2909 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 2910 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 2911 | "dev": true, 2912 | "requires": { 2913 | "asynckit": "^0.4.0", 2914 | "combined-stream": "^1.0.6", 2915 | "mime-types": "^2.1.12" 2916 | } 2917 | }, 2918 | "fs-extra": { 2919 | "version": "1.0.0", 2920 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", 2921 | "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", 2922 | "dev": true, 2923 | "requires": { 2924 | "graceful-fs": "^4.1.2", 2925 | "jsonfile": "^2.1.0", 2926 | "klaw": "^1.0.0" 2927 | } 2928 | }, 2929 | "fs.realpath": { 2930 | "version": "1.0.0", 2931 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2932 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 2933 | "dev": true 2934 | }, 2935 | "fsevents": { 2936 | "version": "2.3.2", 2937 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2938 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2939 | "dev": true, 2940 | "optional": true 2941 | }, 2942 | "function-bind": { 2943 | "version": "1.1.1", 2944 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2945 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2946 | "dev": true 2947 | }, 2948 | "get-caller-file": { 2949 | "version": "2.0.5", 2950 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2951 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2952 | "dev": true 2953 | }, 2954 | "get-intrinsic": { 2955 | "version": "1.1.3", 2956 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 2957 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 2958 | "dev": true, 2959 | "requires": { 2960 | "function-bind": "^1.1.1", 2961 | "has": "^1.0.3", 2962 | "has-symbols": "^1.0.3" 2963 | } 2964 | }, 2965 | "getpass": { 2966 | "version": "0.1.7", 2967 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 2968 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 2969 | "dev": true, 2970 | "requires": { 2971 | "assert-plus": "^1.0.0" 2972 | } 2973 | }, 2974 | "glob": { 2975 | "version": "7.2.3", 2976 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2977 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2978 | "dev": true, 2979 | "requires": { 2980 | "fs.realpath": "^1.0.0", 2981 | "inflight": "^1.0.4", 2982 | "inherits": "2", 2983 | "minimatch": "^3.1.1", 2984 | "once": "^1.3.0", 2985 | "path-is-absolute": "^1.0.0" 2986 | } 2987 | }, 2988 | "glob-parent": { 2989 | "version": "5.1.2", 2990 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2991 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2992 | "dev": true, 2993 | "requires": { 2994 | "is-glob": "^4.0.1" 2995 | } 2996 | }, 2997 | "graceful-fs": { 2998 | "version": "4.2.10", 2999 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 3000 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 3001 | "dev": true 3002 | }, 3003 | "har-schema": { 3004 | "version": "2.0.0", 3005 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 3006 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 3007 | "dev": true 3008 | }, 3009 | "har-validator": { 3010 | "version": "5.1.5", 3011 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 3012 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 3013 | "dev": true, 3014 | "requires": { 3015 | "ajv": "^6.12.3", 3016 | "har-schema": "^2.0.0" 3017 | } 3018 | }, 3019 | "has": { 3020 | "version": "1.0.3", 3021 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 3022 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 3023 | "dev": true, 3024 | "requires": { 3025 | "function-bind": "^1.1.1" 3026 | } 3027 | }, 3028 | "has-symbols": { 3029 | "version": "1.0.3", 3030 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 3031 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 3032 | "dev": true 3033 | }, 3034 | "hasha": { 3035 | "version": "2.2.0", 3036 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", 3037 | "integrity": "sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ==", 3038 | "dev": true, 3039 | "requires": { 3040 | "is-stream": "^1.0.1", 3041 | "pinkie-promise": "^2.0.0" 3042 | } 3043 | }, 3044 | "http-errors": { 3045 | "version": "2.0.0", 3046 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 3047 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 3048 | "dev": true, 3049 | "requires": { 3050 | "depd": "2.0.0", 3051 | "inherits": "2.0.4", 3052 | "setprototypeof": "1.2.0", 3053 | "statuses": "2.0.1", 3054 | "toidentifier": "1.0.1" 3055 | }, 3056 | "dependencies": { 3057 | "statuses": { 3058 | "version": "2.0.1", 3059 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 3060 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 3061 | "dev": true 3062 | } 3063 | } 3064 | }, 3065 | "http-proxy": { 3066 | "version": "1.18.1", 3067 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 3068 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 3069 | "dev": true, 3070 | "requires": { 3071 | "eventemitter3": "^4.0.0", 3072 | "follow-redirects": "^1.0.0", 3073 | "requires-port": "^1.0.0" 3074 | } 3075 | }, 3076 | "http-signature": { 3077 | "version": "1.2.0", 3078 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 3079 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 3080 | "dev": true, 3081 | "requires": { 3082 | "assert-plus": "^1.0.0", 3083 | "jsprim": "^1.2.2", 3084 | "sshpk": "^1.7.0" 3085 | } 3086 | }, 3087 | "iconv-lite": { 3088 | "version": "0.4.24", 3089 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 3090 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 3091 | "dev": true, 3092 | "requires": { 3093 | "safer-buffer": ">= 2.1.2 < 3" 3094 | } 3095 | }, 3096 | "inflight": { 3097 | "version": "1.0.6", 3098 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3099 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 3100 | "dev": true, 3101 | "requires": { 3102 | "once": "^1.3.0", 3103 | "wrappy": "1" 3104 | } 3105 | }, 3106 | "inherits": { 3107 | "version": "2.0.4", 3108 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3109 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3110 | "dev": true 3111 | }, 3112 | "is-binary-path": { 3113 | "version": "2.1.0", 3114 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3115 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3116 | "dev": true, 3117 | "requires": { 3118 | "binary-extensions": "^2.0.0" 3119 | } 3120 | }, 3121 | "is-extglob": { 3122 | "version": "2.1.1", 3123 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3124 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3125 | "dev": true 3126 | }, 3127 | "is-fullwidth-code-point": { 3128 | "version": "3.0.0", 3129 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3130 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3131 | "dev": true 3132 | }, 3133 | "is-glob": { 3134 | "version": "4.0.3", 3135 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3136 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3137 | "dev": true, 3138 | "requires": { 3139 | "is-extglob": "^2.1.1" 3140 | } 3141 | }, 3142 | "is-number": { 3143 | "version": "7.0.0", 3144 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3145 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3146 | "dev": true 3147 | }, 3148 | "is-stream": { 3149 | "version": "1.1.0", 3150 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 3151 | "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", 3152 | "dev": true 3153 | }, 3154 | "is-typedarray": { 3155 | "version": "1.0.0", 3156 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 3157 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 3158 | "dev": true 3159 | }, 3160 | "isarray": { 3161 | "version": "1.0.0", 3162 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3163 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 3164 | "dev": true 3165 | }, 3166 | "isbinaryfile": { 3167 | "version": "4.0.10", 3168 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", 3169 | "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", 3170 | "dev": true 3171 | }, 3172 | "isexe": { 3173 | "version": "2.0.0", 3174 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3175 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3176 | "dev": true 3177 | }, 3178 | "isstream": { 3179 | "version": "0.1.2", 3180 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 3181 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 3182 | "dev": true 3183 | }, 3184 | "jasmine-core": { 3185 | "version": "3.99.1", 3186 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", 3187 | "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", 3188 | "dev": true 3189 | }, 3190 | "jsbn": { 3191 | "version": "0.1.1", 3192 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 3193 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", 3194 | "dev": true 3195 | }, 3196 | "json-schema": { 3197 | "version": "0.4.0", 3198 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 3199 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 3200 | "dev": true 3201 | }, 3202 | "json-schema-traverse": { 3203 | "version": "0.4.1", 3204 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3205 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3206 | "dev": true 3207 | }, 3208 | "json-stringify-safe": { 3209 | "version": "5.0.1", 3210 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 3211 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 3212 | "dev": true 3213 | }, 3214 | "jsonfile": { 3215 | "version": "2.4.0", 3216 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", 3217 | "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", 3218 | "dev": true, 3219 | "requires": { 3220 | "graceful-fs": "^4.1.6" 3221 | } 3222 | }, 3223 | "jsprim": { 3224 | "version": "1.4.2", 3225 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 3226 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 3227 | "dev": true, 3228 | "requires": { 3229 | "assert-plus": "1.0.0", 3230 | "extsprintf": "1.3.0", 3231 | "json-schema": "0.4.0", 3232 | "verror": "1.10.0" 3233 | } 3234 | }, 3235 | "karma": { 3236 | "version": "6.4.1", 3237 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", 3238 | "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", 3239 | "dev": true, 3240 | "requires": { 3241 | "@colors/colors": "1.5.0", 3242 | "body-parser": "^1.19.0", 3243 | "braces": "^3.0.2", 3244 | "chokidar": "^3.5.1", 3245 | "connect": "^3.7.0", 3246 | "di": "^0.0.1", 3247 | "dom-serialize": "^2.2.1", 3248 | "glob": "^7.1.7", 3249 | "graceful-fs": "^4.2.6", 3250 | "http-proxy": "^1.18.1", 3251 | "isbinaryfile": "^4.0.8", 3252 | "lodash": "^4.17.21", 3253 | "log4js": "^6.4.1", 3254 | "mime": "^2.5.2", 3255 | "minimatch": "^3.0.4", 3256 | "mkdirp": "^0.5.5", 3257 | "qjobs": "^1.2.0", 3258 | "range-parser": "^1.2.1", 3259 | "rimraf": "^3.0.2", 3260 | "socket.io": "^4.4.1", 3261 | "source-map": "^0.6.1", 3262 | "tmp": "^0.2.1", 3263 | "ua-parser-js": "^0.7.30", 3264 | "yargs": "^16.1.1" 3265 | } 3266 | }, 3267 | "karma-jasmine": { 3268 | "version": "4.0.2", 3269 | "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", 3270 | "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", 3271 | "dev": true, 3272 | "requires": { 3273 | "jasmine-core": "^3.6.0" 3274 | } 3275 | }, 3276 | "karma-phantomjs-launcher": { 3277 | "version": "1.0.4", 3278 | "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", 3279 | "integrity": "sha512-tf4P3plsE7wb5Pqh8GJ6RnElxfI/UM4MtVnjbSIZFpdFJlKnjRzfIx8MLCcSYJBwZ1+qSKFz4uBe3XNoq2t3KA==", 3280 | "dev": true, 3281 | "requires": { 3282 | "lodash": "^4.0.1", 3283 | "phantomjs-prebuilt": "^2.1.7" 3284 | } 3285 | }, 3286 | "karma-verbose-reporter": { 3287 | "version": "0.0.8", 3288 | "resolved": "https://registry.npmjs.org/karma-verbose-reporter/-/karma-verbose-reporter-0.0.8.tgz", 3289 | "integrity": "sha512-wHgevIcEpfgKwR3CnWd8t1ErzWeVlctO7ZtXkKFR1inb006ogz+7ZKg95eIVOnHCYWL3Gdy1dRMOGjVP0n4MlA==", 3290 | "dev": true, 3291 | "requires": { 3292 | "colors": "1.4.0" 3293 | } 3294 | }, 3295 | "kew": { 3296 | "version": "0.7.0", 3297 | "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", 3298 | "integrity": "sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==", 3299 | "dev": true 3300 | }, 3301 | "klaw": { 3302 | "version": "1.3.1", 3303 | "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", 3304 | "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", 3305 | "dev": true, 3306 | "requires": { 3307 | "graceful-fs": "^4.1.9" 3308 | } 3309 | }, 3310 | "lodash": { 3311 | "version": "4.17.21", 3312 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3313 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3314 | "dev": true 3315 | }, 3316 | "log4js": { 3317 | "version": "6.7.0", 3318 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", 3319 | "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", 3320 | "dev": true, 3321 | "requires": { 3322 | "date-format": "^4.0.14", 3323 | "debug": "^4.3.4", 3324 | "flatted": "^3.2.7", 3325 | "rfdc": "^1.3.0", 3326 | "streamroller": "^3.1.3" 3327 | }, 3328 | "dependencies": { 3329 | "debug": { 3330 | "version": "4.3.4", 3331 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3332 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3333 | "dev": true, 3334 | "requires": { 3335 | "ms": "2.1.2" 3336 | } 3337 | }, 3338 | "ms": { 3339 | "version": "2.1.2", 3340 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3341 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3342 | "dev": true 3343 | } 3344 | } 3345 | }, 3346 | "media-typer": { 3347 | "version": "0.3.0", 3348 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3349 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 3350 | "dev": true 3351 | }, 3352 | "mime": { 3353 | "version": "2.6.0", 3354 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 3355 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 3356 | "dev": true 3357 | }, 3358 | "mime-db": { 3359 | "version": "1.52.0", 3360 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 3361 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 3362 | "dev": true 3363 | }, 3364 | "mime-types": { 3365 | "version": "2.1.35", 3366 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 3367 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 3368 | "dev": true, 3369 | "requires": { 3370 | "mime-db": "1.52.0" 3371 | } 3372 | }, 3373 | "minimatch": { 3374 | "version": "3.1.2", 3375 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3376 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3377 | "dev": true, 3378 | "requires": { 3379 | "brace-expansion": "^1.1.7" 3380 | } 3381 | }, 3382 | "minimist": { 3383 | "version": "1.2.7", 3384 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 3385 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 3386 | "dev": true 3387 | }, 3388 | "mkdirp": { 3389 | "version": "0.5.6", 3390 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 3391 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 3392 | "dev": true, 3393 | "requires": { 3394 | "minimist": "^1.2.6" 3395 | } 3396 | }, 3397 | "ms": { 3398 | "version": "2.0.0", 3399 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3400 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 3401 | "dev": true 3402 | }, 3403 | "negotiator": { 3404 | "version": "0.6.3", 3405 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 3406 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 3407 | "dev": true 3408 | }, 3409 | "normalize-path": { 3410 | "version": "3.0.0", 3411 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3412 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3413 | "dev": true 3414 | }, 3415 | "oauth-sign": { 3416 | "version": "0.9.0", 3417 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 3418 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 3419 | "dev": true 3420 | }, 3421 | "object-assign": { 3422 | "version": "4.1.1", 3423 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3424 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 3425 | "dev": true 3426 | }, 3427 | "object-inspect": { 3428 | "version": "1.12.2", 3429 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 3430 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 3431 | "dev": true 3432 | }, 3433 | "on-finished": { 3434 | "version": "2.4.1", 3435 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 3436 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 3437 | "dev": true, 3438 | "requires": { 3439 | "ee-first": "1.1.1" 3440 | } 3441 | }, 3442 | "once": { 3443 | "version": "1.4.0", 3444 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3445 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3446 | "dev": true, 3447 | "requires": { 3448 | "wrappy": "1" 3449 | } 3450 | }, 3451 | "parseurl": { 3452 | "version": "1.3.3", 3453 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 3454 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 3455 | "dev": true 3456 | }, 3457 | "path-is-absolute": { 3458 | "version": "1.0.1", 3459 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3460 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3461 | "dev": true 3462 | }, 3463 | "pend": { 3464 | "version": "1.2.0", 3465 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 3466 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", 3467 | "dev": true 3468 | }, 3469 | "performance-now": { 3470 | "version": "2.1.0", 3471 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 3472 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", 3473 | "dev": true 3474 | }, 3475 | "phantomjs-prebuilt": { 3476 | "version": "2.1.16", 3477 | "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", 3478 | "integrity": "sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ==", 3479 | "dev": true, 3480 | "requires": { 3481 | "es6-promise": "^4.0.3", 3482 | "extract-zip": "^1.6.5", 3483 | "fs-extra": "^1.0.0", 3484 | "hasha": "^2.2.0", 3485 | "kew": "^0.7.0", 3486 | "progress": "^1.1.8", 3487 | "request": "^2.81.0", 3488 | "request-progress": "^2.0.1", 3489 | "which": "^1.2.10" 3490 | } 3491 | }, 3492 | "picomatch": { 3493 | "version": "2.3.1", 3494 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3495 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3496 | "dev": true 3497 | }, 3498 | "pinkie": { 3499 | "version": "2.0.4", 3500 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 3501 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 3502 | "dev": true 3503 | }, 3504 | "pinkie-promise": { 3505 | "version": "2.0.1", 3506 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 3507 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 3508 | "dev": true, 3509 | "requires": { 3510 | "pinkie": "^2.0.0" 3511 | } 3512 | }, 3513 | "process-nextick-args": { 3514 | "version": "2.0.1", 3515 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3516 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3517 | "dev": true 3518 | }, 3519 | "progress": { 3520 | "version": "1.1.8", 3521 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 3522 | "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", 3523 | "dev": true 3524 | }, 3525 | "psl": { 3526 | "version": "1.9.0", 3527 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 3528 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 3529 | "dev": true 3530 | }, 3531 | "qjobs": { 3532 | "version": "1.2.0", 3533 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 3534 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 3535 | "dev": true 3536 | }, 3537 | "qs": { 3538 | "version": "6.11.0", 3539 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 3540 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 3541 | "dev": true, 3542 | "requires": { 3543 | "side-channel": "^1.0.4" 3544 | } 3545 | }, 3546 | "range-parser": { 3547 | "version": "1.2.1", 3548 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 3549 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 3550 | "dev": true 3551 | }, 3552 | "raw-body": { 3553 | "version": "2.5.1", 3554 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 3555 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 3556 | "dev": true, 3557 | "requires": { 3558 | "bytes": "3.1.2", 3559 | "http-errors": "2.0.0", 3560 | "iconv-lite": "0.4.24", 3561 | "unpipe": "1.0.0" 3562 | } 3563 | }, 3564 | "readable-stream": { 3565 | "version": "2.3.7", 3566 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3567 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3568 | "dev": true, 3569 | "requires": { 3570 | "core-util-is": "~1.0.0", 3571 | "inherits": "~2.0.3", 3572 | "isarray": "~1.0.0", 3573 | "process-nextick-args": "~2.0.0", 3574 | "safe-buffer": "~5.1.1", 3575 | "string_decoder": "~1.1.1", 3576 | "util-deprecate": "~1.0.1" 3577 | }, 3578 | "dependencies": { 3579 | "safe-buffer": { 3580 | "version": "5.1.2", 3581 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3582 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3583 | "dev": true 3584 | } 3585 | } 3586 | }, 3587 | "readdirp": { 3588 | "version": "3.6.0", 3589 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3590 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3591 | "dev": true, 3592 | "requires": { 3593 | "picomatch": "^2.2.1" 3594 | } 3595 | }, 3596 | "request": { 3597 | "version": "2.88.2", 3598 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 3599 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 3600 | "dev": true, 3601 | "requires": { 3602 | "aws-sign2": "~0.7.0", 3603 | "aws4": "^1.8.0", 3604 | "caseless": "~0.12.0", 3605 | "combined-stream": "~1.0.6", 3606 | "extend": "~3.0.2", 3607 | "forever-agent": "~0.6.1", 3608 | "form-data": "~2.3.2", 3609 | "har-validator": "~5.1.3", 3610 | "http-signature": "~1.2.0", 3611 | "is-typedarray": "~1.0.0", 3612 | "isstream": "~0.1.2", 3613 | "json-stringify-safe": "~5.0.1", 3614 | "mime-types": "~2.1.19", 3615 | "oauth-sign": "~0.9.0", 3616 | "performance-now": "^2.1.0", 3617 | "qs": "~6.5.2", 3618 | "safe-buffer": "^5.1.2", 3619 | "tough-cookie": "~2.5.0", 3620 | "tunnel-agent": "^0.6.0", 3621 | "uuid": "^3.3.2" 3622 | }, 3623 | "dependencies": { 3624 | "qs": { 3625 | "version": "6.5.3", 3626 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 3627 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 3628 | "dev": true 3629 | } 3630 | } 3631 | }, 3632 | "request-progress": { 3633 | "version": "2.0.1", 3634 | "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", 3635 | "integrity": "sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==", 3636 | "dev": true, 3637 | "requires": { 3638 | "throttleit": "^1.0.0" 3639 | } 3640 | }, 3641 | "require-directory": { 3642 | "version": "2.1.1", 3643 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3644 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3645 | "dev": true 3646 | }, 3647 | "requires-port": { 3648 | "version": "1.0.0", 3649 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3650 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 3651 | "dev": true 3652 | }, 3653 | "rfdc": { 3654 | "version": "1.3.0", 3655 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 3656 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 3657 | "dev": true 3658 | }, 3659 | "rimraf": { 3660 | "version": "3.0.2", 3661 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3662 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3663 | "dev": true, 3664 | "requires": { 3665 | "glob": "^7.1.3" 3666 | } 3667 | }, 3668 | "safe-buffer": { 3669 | "version": "5.2.1", 3670 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3671 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3672 | "dev": true 3673 | }, 3674 | "safer-buffer": { 3675 | "version": "2.1.2", 3676 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3677 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3678 | "dev": true 3679 | }, 3680 | "setprototypeof": { 3681 | "version": "1.2.0", 3682 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 3683 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 3684 | "dev": true 3685 | }, 3686 | "side-channel": { 3687 | "version": "1.0.4", 3688 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3689 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3690 | "dev": true, 3691 | "requires": { 3692 | "call-bind": "^1.0.0", 3693 | "get-intrinsic": "^1.0.2", 3694 | "object-inspect": "^1.9.0" 3695 | } 3696 | }, 3697 | "socket.io": { 3698 | "version": "4.5.3", 3699 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", 3700 | "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", 3701 | "dev": true, 3702 | "requires": { 3703 | "accepts": "~1.3.4", 3704 | "base64id": "~2.0.0", 3705 | "debug": "~4.3.2", 3706 | "engine.io": "~6.2.0", 3707 | "socket.io-adapter": "~2.4.0", 3708 | "socket.io-parser": "~4.2.0" 3709 | }, 3710 | "dependencies": { 3711 | "debug": { 3712 | "version": "4.3.4", 3713 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3714 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3715 | "dev": true, 3716 | "requires": { 3717 | "ms": "2.1.2" 3718 | } 3719 | }, 3720 | "ms": { 3721 | "version": "2.1.2", 3722 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3723 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3724 | "dev": true 3725 | } 3726 | } 3727 | }, 3728 | "socket.io-adapter": { 3729 | "version": "2.4.0", 3730 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", 3731 | "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", 3732 | "dev": true 3733 | }, 3734 | "socket.io-parser": { 3735 | "version": "4.2.1", 3736 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", 3737 | "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", 3738 | "dev": true, 3739 | "requires": { 3740 | "@socket.io/component-emitter": "~3.1.0", 3741 | "debug": "~4.3.1" 3742 | }, 3743 | "dependencies": { 3744 | "debug": { 3745 | "version": "4.3.4", 3746 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3747 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3748 | "dev": true, 3749 | "requires": { 3750 | "ms": "2.1.2" 3751 | } 3752 | }, 3753 | "ms": { 3754 | "version": "2.1.2", 3755 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3756 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3757 | "dev": true 3758 | } 3759 | } 3760 | }, 3761 | "source-map": { 3762 | "version": "0.6.1", 3763 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3764 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3765 | "dev": true 3766 | }, 3767 | "sshpk": { 3768 | "version": "1.17.0", 3769 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 3770 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 3771 | "dev": true, 3772 | "requires": { 3773 | "asn1": "~0.2.3", 3774 | "assert-plus": "^1.0.0", 3775 | "bcrypt-pbkdf": "^1.0.0", 3776 | "dashdash": "^1.12.0", 3777 | "ecc-jsbn": "~0.1.1", 3778 | "getpass": "^0.1.1", 3779 | "jsbn": "~0.1.0", 3780 | "safer-buffer": "^2.0.2", 3781 | "tweetnacl": "~0.14.0" 3782 | } 3783 | }, 3784 | "statuses": { 3785 | "version": "1.5.0", 3786 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3787 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 3788 | "dev": true 3789 | }, 3790 | "streamroller": { 3791 | "version": "3.1.3", 3792 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", 3793 | "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", 3794 | "dev": true, 3795 | "requires": { 3796 | "date-format": "^4.0.14", 3797 | "debug": "^4.3.4", 3798 | "fs-extra": "^8.1.0" 3799 | }, 3800 | "dependencies": { 3801 | "debug": { 3802 | "version": "4.3.4", 3803 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 3804 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 3805 | "dev": true, 3806 | "requires": { 3807 | "ms": "2.1.2" 3808 | } 3809 | }, 3810 | "fs-extra": { 3811 | "version": "8.1.0", 3812 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 3813 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 3814 | "dev": true, 3815 | "requires": { 3816 | "graceful-fs": "^4.2.0", 3817 | "jsonfile": "^4.0.0", 3818 | "universalify": "^0.1.0" 3819 | } 3820 | }, 3821 | "jsonfile": { 3822 | "version": "4.0.0", 3823 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 3824 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 3825 | "dev": true, 3826 | "requires": { 3827 | "graceful-fs": "^4.1.6" 3828 | } 3829 | }, 3830 | "ms": { 3831 | "version": "2.1.2", 3832 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3833 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3834 | "dev": true 3835 | } 3836 | } 3837 | }, 3838 | "string_decoder": { 3839 | "version": "1.1.1", 3840 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3841 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3842 | "dev": true, 3843 | "requires": { 3844 | "safe-buffer": "~5.1.0" 3845 | }, 3846 | "dependencies": { 3847 | "safe-buffer": { 3848 | "version": "5.1.2", 3849 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3850 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3851 | "dev": true 3852 | } 3853 | } 3854 | }, 3855 | "string-width": { 3856 | "version": "4.2.3", 3857 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3858 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3859 | "dev": true, 3860 | "requires": { 3861 | "emoji-regex": "^8.0.0", 3862 | "is-fullwidth-code-point": "^3.0.0", 3863 | "strip-ansi": "^6.0.1" 3864 | } 3865 | }, 3866 | "strip-ansi": { 3867 | "version": "6.0.1", 3868 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3869 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3870 | "dev": true, 3871 | "requires": { 3872 | "ansi-regex": "^5.0.1" 3873 | } 3874 | }, 3875 | "throttleit": { 3876 | "version": "1.0.0", 3877 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", 3878 | "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", 3879 | "dev": true 3880 | }, 3881 | "tmp": { 3882 | "version": "0.2.1", 3883 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 3884 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 3885 | "dev": true, 3886 | "requires": { 3887 | "rimraf": "^3.0.0" 3888 | } 3889 | }, 3890 | "to-regex-range": { 3891 | "version": "5.0.1", 3892 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3893 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3894 | "dev": true, 3895 | "requires": { 3896 | "is-number": "^7.0.0" 3897 | } 3898 | }, 3899 | "toidentifier": { 3900 | "version": "1.0.1", 3901 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 3902 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 3903 | "dev": true 3904 | }, 3905 | "tough-cookie": { 3906 | "version": "2.5.0", 3907 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 3908 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 3909 | "dev": true, 3910 | "requires": { 3911 | "psl": "^1.1.28", 3912 | "punycode": "^2.1.1" 3913 | }, 3914 | "dependencies": { 3915 | "punycode": { 3916 | "version": "2.1.1", 3917 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3918 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3919 | "dev": true 3920 | } 3921 | } 3922 | }, 3923 | "tunnel-agent": { 3924 | "version": "0.6.0", 3925 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 3926 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 3927 | "dev": true, 3928 | "requires": { 3929 | "safe-buffer": "^5.0.1" 3930 | } 3931 | }, 3932 | "tweetnacl": { 3933 | "version": "0.14.5", 3934 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 3935 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", 3936 | "dev": true 3937 | }, 3938 | "type-is": { 3939 | "version": "1.6.18", 3940 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3941 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3942 | "dev": true, 3943 | "requires": { 3944 | "media-typer": "0.3.0", 3945 | "mime-types": "~2.1.24" 3946 | } 3947 | }, 3948 | "typedarray": { 3949 | "version": "0.0.6", 3950 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3951 | "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", 3952 | "dev": true 3953 | }, 3954 | "ua-parser-js": { 3955 | "version": "0.7.32", 3956 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", 3957 | "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", 3958 | "dev": true 3959 | }, 3960 | "universalify": { 3961 | "version": "0.1.2", 3962 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3963 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3964 | "dev": true 3965 | }, 3966 | "unpipe": { 3967 | "version": "1.0.0", 3968 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3969 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 3970 | "dev": true 3971 | }, 3972 | "uri-js": { 3973 | "version": "4.4.1", 3974 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3975 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3976 | "dev": true, 3977 | "requires": { 3978 | "punycode": "^2.1.0" 3979 | }, 3980 | "dependencies": { 3981 | "punycode": { 3982 | "version": "2.1.1", 3983 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3984 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3985 | "dev": true 3986 | } 3987 | } 3988 | }, 3989 | "util-deprecate": { 3990 | "version": "1.0.2", 3991 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3992 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3993 | "dev": true 3994 | }, 3995 | "utils-merge": { 3996 | "version": "1.0.1", 3997 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3998 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 3999 | "dev": true 4000 | }, 4001 | "uuid": { 4002 | "version": "3.4.0", 4003 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 4004 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 4005 | "dev": true 4006 | }, 4007 | "vary": { 4008 | "version": "1.1.2", 4009 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 4010 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 4011 | "dev": true 4012 | }, 4013 | "verror": { 4014 | "version": "1.10.0", 4015 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 4016 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 4017 | "dev": true, 4018 | "requires": { 4019 | "assert-plus": "^1.0.0", 4020 | "core-util-is": "1.0.2", 4021 | "extsprintf": "^1.2.0" 4022 | }, 4023 | "dependencies": { 4024 | "core-util-is": { 4025 | "version": "1.0.2", 4026 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 4027 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 4028 | "dev": true 4029 | } 4030 | } 4031 | }, 4032 | "void-elements": { 4033 | "version": "2.0.1", 4034 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 4035 | "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", 4036 | "dev": true 4037 | }, 4038 | "which": { 4039 | "version": "1.3.1", 4040 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4041 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4042 | "dev": true, 4043 | "requires": { 4044 | "isexe": "^2.0.0" 4045 | } 4046 | }, 4047 | "wrap-ansi": { 4048 | "version": "7.0.0", 4049 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4050 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4051 | "dev": true, 4052 | "requires": { 4053 | "ansi-styles": "^4.0.0", 4054 | "string-width": "^4.1.0", 4055 | "strip-ansi": "^6.0.0" 4056 | } 4057 | }, 4058 | "wrappy": { 4059 | "version": "1.0.2", 4060 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4061 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 4062 | "dev": true 4063 | }, 4064 | "ws": { 4065 | "version": "8.2.3", 4066 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", 4067 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", 4068 | "dev": true, 4069 | "requires": {} 4070 | }, 4071 | "y18n": { 4072 | "version": "5.0.8", 4073 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4074 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4075 | "dev": true 4076 | }, 4077 | "yargs": { 4078 | "version": "16.2.0", 4079 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 4080 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 4081 | "dev": true, 4082 | "requires": { 4083 | "cliui": "^7.0.2", 4084 | "escalade": "^3.1.1", 4085 | "get-caller-file": "^2.0.5", 4086 | "require-directory": "^2.1.1", 4087 | "string-width": "^4.2.0", 4088 | "y18n": "^5.0.5", 4089 | "yargs-parser": "^20.2.2" 4090 | } 4091 | }, 4092 | "yargs-parser": { 4093 | "version": "20.2.9", 4094 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 4095 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 4096 | "dev": true 4097 | }, 4098 | "yauzl": { 4099 | "version": "2.10.0", 4100 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 4101 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 4102 | "dev": true, 4103 | "requires": { 4104 | "buffer-crc32": "~0.2.3", 4105 | "fd-slicer": "~1.1.0" 4106 | } 4107 | } 4108 | } 4109 | } 4110 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "anki-persistence", 3 | "version": "1.1.8", 4 | "description": "Persist data between both sides of an anki flashcard.", 5 | "main": "script.js", 6 | "directories": { 7 | "test": "tests" 8 | }, 9 | "scripts": { 10 | "test": "karma start test/karma.conf.js --single-run", 11 | "minify": "curl -X POST -s --data-urlencode 'input@script.js' https://www.toptal.com/developers/javascript-minifier/api/raw" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/SimonLammer/anki-persistence.git" 16 | }, 17 | "author": "Simon Lammer", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/SimonLammer/anki-persistence/issues" 21 | }, 22 | "homepage": "https://github.com/SimonLammer/anki-persistence#readme", 23 | "devDependencies": { 24 | "jasmine-core": "^3.1.0", 25 | "karma": "^6.3.16", 26 | "karma-jasmine": "^4.0.0", 27 | "karma-phantomjs-launcher": "^1.0.4", 28 | "karma-verbose-reporter": "^0.0.8" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | if (typeof(window.Persistence) === 'undefined') { 2 | var _persistenceKey = 'github.com/SimonLammer/anki-persistence/'; 3 | var _defaultKey = '_default'; 4 | window.Persistence_sessionStorage = function() { // used in android, iOS, web 5 | var isAvailable = false; 6 | try { 7 | if (typeof(window.sessionStorage) === 'object') { 8 | isAvailable = true; 9 | this.clear = function() { 10 | for (var i = 0; i < sessionStorage.length; i++) { 11 | var k = sessionStorage.key(i); 12 | if (k.indexOf(_persistenceKey) == 0) { 13 | sessionStorage.removeItem(k); 14 | i--; 15 | } 16 | }; 17 | }; 18 | this.setItem = function(key, value) { 19 | if (value == undefined) { 20 | value = key; 21 | key = _defaultKey; 22 | } 23 | sessionStorage.setItem(_persistenceKey + key, JSON.stringify(value)); 24 | }; 25 | this.getItem = function(key) { 26 | if (key == undefined) { 27 | key = _defaultKey; 28 | } 29 | return JSON.parse(sessionStorage.getItem(_persistenceKey + key)); 30 | }; 31 | this.removeItem = function(key) { 32 | if (key == undefined) { 33 | key = _defaultKey; 34 | } 35 | sessionStorage.removeItem(_persistenceKey + key); 36 | }; 37 | this.getAllKeys = function () { 38 | var keys = []; 39 | var prefixedKeys = Object.keys(sessionStorage); 40 | for (var i = 0; i < prefixedKeys.length; i++) { 41 | var k = prefixedKeys[i]; 42 | if (k.indexOf(_persistenceKey) == 0) { 43 | keys.push(k.substring(_persistenceKey.length, k.length)); 44 | } 45 | }; 46 | return keys.sort() 47 | } 48 | } 49 | } catch(err) {} 50 | this.isAvailable = function() { 51 | return isAvailable; 52 | }; 53 | }; 54 | window.Persistence_windowKey = function(persistentKey) { // used in windows, linux, mac 55 | var obj = window[persistentKey]; 56 | var isAvailable = false; 57 | if (typeof(obj) === 'object') { 58 | isAvailable = true; 59 | this.clear = function() { 60 | obj[_persistenceKey] = {}; 61 | }; 62 | this.setItem = function(key, value) { 63 | if (value == undefined) { 64 | value = key; 65 | key = _defaultKey; 66 | } 67 | obj[_persistenceKey][key] = value; 68 | }; 69 | this.getItem = function(key) { 70 | if (key == undefined) { 71 | key = _defaultKey; 72 | } 73 | return obj[_persistenceKey][key] == undefined ? null : obj[_persistenceKey][key]; 74 | }; 75 | this.removeItem = function(key) { 76 | if (key == undefined) { 77 | key = _defaultKey; 78 | } 79 | delete obj[_persistenceKey][key]; 80 | }; 81 | this.getAllKeys = function () { 82 | return Object.keys(obj[_persistenceKey]); 83 | } 84 | 85 | if (obj[_persistenceKey] == undefined) { 86 | this.clear(); 87 | } 88 | } 89 | this.isAvailable = function() { 90 | return isAvailable; 91 | }; 92 | }; 93 | /* 94 | * client | sessionStorage | persistentKey | useful location | 95 | * ----------|----------------|---------------|-----------------| 96 | * web | YES | - | NO | 97 | * windows | NO | py | NO | 98 | * android | YES | - | NO | 99 | * linux 2.0 | NO | qt | YES | 100 | * linux 2.1 | NO | qt | YES | 101 | * mac 2.0 | NO | py | NO | 102 | * mac 2.1 | NO | qt | YES | 103 | * iOS | YES | - | NO | 104 | */ 105 | window.Persistence = new Persistence_sessionStorage(); // android, iOS, web 106 | if (!Persistence.isAvailable()) { 107 | window.Persistence = new Persistence_windowKey("py"); // windows, mac (2.0) 108 | } 109 | if (!Persistence.isAvailable()) { 110 | var titleStartIndex = window.location.toString().indexOf('title'); // if titleStartIndex > 0, window.location is useful 111 | var titleContentIndex = window.location.toString().indexOf('main', titleStartIndex); 112 | if (titleStartIndex > 0 && titleContentIndex > 0 && (titleContentIndex - titleStartIndex) < 10) { 113 | window.Persistence = new Persistence_windowKey("qt"); // linux, mac (2.1) 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /test/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Tue May 22 2018 11:42:36 GMT+0200 (Mitteleuropäische Sommerzeit) 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | 7 | // base path that will be used to resolve all patterns (eg. files, exclude) 8 | basePath: '..', 9 | 10 | 11 | // frameworks to use 12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 13 | frameworks: ['jasmine'], 14 | 15 | 16 | // list of files / patterns to load in the browser 17 | files: [ 18 | 'script.js', 19 | 'test/**/*.js' 20 | ], 21 | 22 | 23 | // list of files / patterns to exclude 24 | exclude: [ 25 | '**/karma.conf.js', 26 | '**/_*' 27 | ], 28 | 29 | 30 | // preprocess matching files before serving them to the browser 31 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 32 | preprocessors: { 33 | }, 34 | 35 | 36 | // test results reporter to use 37 | // possible values: 'dots', 'progress' 38 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter 39 | reporters: ['verbose'], 40 | 41 | 42 | // web server port 43 | port: 9876, 44 | 45 | 46 | // enable / disable colors in the output (reporters and logs) 47 | colors: true, 48 | 49 | 50 | // level of logging 51 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 52 | logLevel: config.LOG_INFO, 53 | 54 | 55 | // enable / disable watching file and executing tests whenever any file changes 56 | autoWatch: true, 57 | 58 | 59 | // start these browsers 60 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 61 | browsers: ['PhantomJS'], 62 | 63 | 64 | // Continuous Integration mode 65 | // if true, Karma captures browsers, runs the tests and exits 66 | singleRun: false, 67 | 68 | // Concurrency level 69 | // how many browser should be started simultaneous 70 | concurrency: Infinity 71 | }) 72 | } 73 | -------------------------------------------------------------------------------- /test/persistence.js: -------------------------------------------------------------------------------- 1 | [{ 2 | constructor: 'Persistence_sessionStorage', 3 | generator: function() { 4 | return new Persistence_sessionStorage(); 5 | } 6 | },{ 7 | constructor: 'Persistence_windowKey', 8 | generator: function() { 9 | var key = 'persistence'; 10 | window[key] = {}; 11 | return new Persistence_windowKey(key); 12 | } 13 | }].forEach(function(args) { 14 | describe(args.constructor, function() { 15 | var persistence = args.generator(); 16 | var data = [ 17 | 0, 18 | 1, 19 | 2.2, 20 | '3', 21 | {"value": 4}, 22 | [1, 2, 3], 23 | ]; 24 | it('is available', function() { 25 | expect(persistence.isAvailable()).toEqual(true); 26 | }); 27 | it('can get all keys', function() { 28 | for (var i = 0; i < 10; i++) { 29 | persistence.setItem(i, "value for " + i); 30 | } 31 | var keys = persistence.getAllKeys(); 32 | expect(keys.length).toEqual(10) 33 | for (var i = 0; i < keys.length; i++) { 34 | expect(keys[i]).toEqual(i + "") 35 | } 36 | persistence.clear() 37 | }); 38 | it('works without key', function() { 39 | expect(persistence.getItem()).toBeNull(); 40 | persistence.removeItem(); 41 | 42 | for (var i = 0; i < data.length; i++) { 43 | persistence.setItem(data[i]); 44 | expect(persistence.getItem()).toEqual(data[i]); 45 | } 46 | 47 | persistence.removeItem(); 48 | expect(persistence.getItem()).toBeNull(); 49 | 50 | persistence.setItem(data[0]); 51 | persistence.clear(); 52 | expect(persistence.getItem()).toBeNull(); 53 | }); 54 | it('works with key', function() { 55 | for (var i = 0; i < data.length; i++) { 56 | expect(persistence.getItem('' + i)).toBeNull(); 57 | persistence.removeItem('' + i); // shouldn't throw an error 58 | } 59 | 60 | for (var i = 0; i < data.length; i++) { 61 | persistence.setItem('' + i, data[i]); 62 | expect(persistence.getItem('' + i)).toEqual(data[i]); 63 | } 64 | 65 | for (var i = 0; i < data.length; i++) { 66 | persistence.removeItem('' + i); 67 | expect(persistence.getItem('' + i)).toBeNull(); 68 | persistence.setItem('' + i, data[i]); 69 | } 70 | persistence.clear(); 71 | for (var i = 0; i < data.length; i++) { 72 | expect(persistence.getItem('' + i)).toBeNull(); 73 | } 74 | }); 75 | }); 76 | }); 77 | --------------------------------------------------------------------------------