From d9dfa12b6227276597a609248316058c82bafffb Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Wed, 14 Jun 2023 13:01:18 +1000 Subject: [PATCH 01/22] Bumped ui library to 0.0.2 to include iOS fullscreen fix --- Frontend/ui-library/package-lock.json | 6 +++--- Frontend/ui-library/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Frontend/ui-library/package-lock.json b/Frontend/ui-library/package-lock.json index afa36960..de35bb05 100644 --- a/Frontend/ui-library/package-lock.json +++ b/Frontend/ui-library/package-lock.json @@ -1,12 +1,12 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.1", - "lockfileVersion": 3, + "version": "0.0.2", + "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "dependencies": { "jss": "^10.9.2", diff --git a/Frontend/ui-library/package.json b/Frontend/ui-library/package.json index dad2834f..01b0c59e 100644 --- a/Frontend/ui-library/package.json +++ b/Frontend/ui-library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.1", + "version": "0.0.2", "description": "Reference frontend UI library for Unreal Engine 5.3 Pixel Streaming - gives the stock look and feel.", "main": "dist/lib-pixelstreamingfrontend-ui.js", "module": "dist/lib-pixelstreamingfrontend-ui.esm.js", From 357a66599460af66d5aabb71f5611b5ef3dc5272 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Wed, 14 Jun 2023 13:02:59 +1000 Subject: [PATCH 02/22] Update RELEASE_VERSION to 0.0.2 to include iOS fullscreen fix Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- RELEASE_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_VERSION b/RELEASE_VERSION index 8acdd82b..4e379d2b 100644 --- a/RELEASE_VERSION +++ b/RELEASE_VERSION @@ -1 +1 @@ -0.0.1 +0.0.2 From 0fd71b6887fccf82b50dcc704813e69ffa138338 Mon Sep 17 00:00:00 2001 From: mcottontensor <80377552+mcottontensor@users.noreply.github.com> Date: Wed, 21 Jun 2023 10:28:10 +1000 Subject: [PATCH 03/22] Merge pull request #273 from jibranabsarulislam/jibranabsarulislam/add-CRD-events Include create, reconnect, and update events (with associated tests) --- .../src/PixelStreaming/PixelStreaming.test.ts | 47 +++++++++++++++++++ .../src/PixelStreaming/PixelStreaming.ts | 6 +++ Frontend/library/src/Util/EventEmitter.ts | 33 +++++++++++++ 3 files changed, 86 insertions(+) diff --git a/Frontend/library/src/PixelStreaming/PixelStreaming.test.ts b/Frontend/library/src/PixelStreaming/PixelStreaming.test.ts index 323a1f63..3c1036ba 100644 --- a/Frontend/library/src/PixelStreaming/PixelStreaming.test.ts +++ b/Frontend/library/src/PixelStreaming/PixelStreaming.test.ts @@ -572,4 +572,51 @@ describe('PixelStreaming', () => { expect(responseListenerSpy).toHaveBeenCalledWith(testMessageContents); }); + it('should emit StreamConnectEvent when streamer connects', () => { + const config = new Config({ initialSettings: {ss: mockSignallingUrl}}); + const streamConnectSpy = jest.fn(); + const pixelStreaming = new PixelStreaming(config); + pixelStreaming.addEventListener("streamConnect", streamConnectSpy); + pixelStreaming.connect(); + + establishMockedPixelStreamingConnection(); + + expect(streamConnectSpy).toHaveBeenCalled(); + }); + + it('should emit StreamDisconnectEvent when streamer disconnects', () => { + const config = new Config({ initialSettings: {ss: mockSignallingUrl}}); + const streamDisconnectSpy = jest.fn(); + const pixelStreaming = new PixelStreaming(config); + pixelStreaming.addEventListener("streamDisconnect", streamDisconnectSpy); + pixelStreaming.connect(); + + establishMockedPixelStreamingConnection(); + + expect(streamDisconnectSpy).not.toHaveBeenCalled(); + + pixelStreaming.disconnect(); + + expect(streamDisconnectSpy).toHaveBeenCalled(); + }); + + it('should emit StreamReconnectEvent when streamer reconnects', () => { + const config = new Config({ initialSettings: {ss: mockSignallingUrl}}); + const streamReconnectSpy = jest.fn(); + const pixelStreaming = new PixelStreaming(config); + pixelStreaming.addEventListener("streamReconnect", streamReconnectSpy); + pixelStreaming.connect(); + + establishMockedPixelStreamingConnection(); + + expect(streamReconnectSpy).not.toHaveBeenCalled(); + + pixelStreaming.reconnect(); + + expect(streamReconnectSpy).toHaveBeenCalled(); + + pixelStreaming.disconnect(); + + expect(streamReconnectSpy).toHaveBeenCalledTimes(1); + }); }); diff --git a/Frontend/library/src/PixelStreaming/PixelStreaming.ts b/Frontend/library/src/PixelStreaming/PixelStreaming.ts index 6d07728f..48acd5ab 100644 --- a/Frontend/library/src/PixelStreaming/PixelStreaming.ts +++ b/Frontend/library/src/PixelStreaming/PixelStreaming.ts @@ -15,6 +15,9 @@ import { PixelStreamingEvent, StatsReceivedEvent, StreamLoadingEvent, + StreamPreConnectEvent, + StreamReconnectEvent, + StreamPreDisconnectEvent, VideoEncoderAvgQPEvent, VideoInitializedEvent, WebRtcAutoConnectEvent, @@ -325,6 +328,7 @@ export class PixelStreaming { * Connect to signaling server. */ public connect() { + this._eventEmitter.dispatchEvent(new StreamPreConnectEvent()); this._webRtcController.connectToSignallingServer(); } @@ -333,6 +337,7 @@ export class PixelStreaming { * before establishing a new connection */ public reconnect() { + this._eventEmitter.dispatchEvent(new StreamReconnectEvent()); this._webRtcController.restartStreamAutomatically(); } @@ -340,6 +345,7 @@ export class PixelStreaming { * Disconnect from the signaling server and close open peer connections. */ public disconnect() { + this._eventEmitter.dispatchEvent(new StreamPreDisconnectEvent()); this._webRtcController.close(); } diff --git a/Frontend/library/src/Util/EventEmitter.ts b/Frontend/library/src/Util/EventEmitter.ts index 89eb3a51..0059b276 100644 --- a/Frontend/library/src/Util/EventEmitter.ts +++ b/Frontend/library/src/Util/EventEmitter.ts @@ -219,6 +219,36 @@ export class StreamLoadingEvent extends Event { } } +/** + * An event that is emitted when video stream loading has finished. + */ +export class StreamPreConnectEvent extends Event { + readonly type: 'streamConnect'; + constructor() { + super('streamConnect'); + } +} + +/** + * An event that is emitted when video stream has stopped. + */ +export class StreamPreDisconnectEvent extends Event { + readonly type: 'streamDisconnect'; + constructor() { + super('streamDisconnect'); + } +} + +/** + * An event that is emitted when video stream is reconnecting. + */ +export class StreamReconnectEvent extends Event { + readonly type: 'streamReconnect'; + constructor() { + super('streamReconnect'); + } +} + /** * An event that is emitted if there are errors loading the video stream. */ @@ -457,6 +487,9 @@ export type PixelStreamingEvent = | DataChannelErrorEvent | VideoInitializedEvent | StreamLoadingEvent + | StreamPreConnectEvent + | StreamReconnectEvent + | StreamPreDisconnectEvent | PlayStreamErrorEvent | PlayStreamEvent | PlayStreamRejectedEvent From 8d6ebc69101464c6f693edd87ab0b9380ab47dfa Mon Sep 17 00:00:00 2001 From: Matthew Cotton Date: Wed, 21 Jun 2023 11:29:39 +1000 Subject: [PATCH 04/22] Bump library version --- Frontend/library/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/library/package.json b/Frontend/library/package.json index cd2f0f53..30a70c9a 100644 --- a/Frontend/library/package.json +++ b/Frontend/library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3", - "version": "0.0.1", + "version": "0.0.2", "description": "Frontend library for Unreal Engine 5.3 Pixel Streaming", "main": "dist/lib-pixelstreamingfrontend.js", "module": "dist/lib-pixelstreamingfrontend.esm.js", From 039354b1514e551dc6668d8c7659419a822b8879 Mon Sep 17 00:00:00 2001 From: Matthew Cotton Date: Wed, 21 Jun 2023 11:31:23 +1000 Subject: [PATCH 05/22] Bump ui-library version --- Frontend/ui-library/package-lock.json | 2264 ++++++++----------------- Frontend/ui-library/package.json | 6 +- 2 files changed, 667 insertions(+), 1603 deletions(-) diff --git a/Frontend/ui-library/package-lock.json b/Frontend/ui-library/package-lock.json index de35bb05..bb09cf46 100644 --- a/Frontend/ui-library/package-lock.json +++ b/Frontend/ui-library/package-lock.json @@ -1,268 +1,236 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.2", - "lockfileVersion": 2, + "version": "0.0.3", + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.2", - "license": "MIT", - "dependencies": { - "jss": "^10.9.2", - "jss-plugin-camel-case": "^10.9.2", - "jss-plugin-global": "^10.9.2" - }, - "devDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.1", - "@typescript-eslint/eslint-plugin": "^5.16.0", - "@typescript-eslint/parser": "^5.16.0", - "cspell": "^4.1.0", - "eslint": "^8.11.0", - "prettier": "2.8.3", - "ts-loader": "^9.4.2", - "typedoc": "^0.23.24", - "typescript": "^4.9.4", - "webpack": "^5.75.0", - "webpack-cli": "^5.0.1" - }, - "peerDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.1" - } - }, - "node_modules/@babel/runtime": { + "dependencies": { + "@babel/runtime": { "version": "7.20.13", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "dependencies": { + "requires": { "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@cspell/dict-aws": { + "@cspell/dict-aws": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-1.0.14.tgz", "integrity": "sha512-K21CfB4ZpKYwwDQiPfic2zJA/uxkbsd4IQGejEvDAhE3z8wBs6g6BwwqdVO767M9NgZqc021yAVpr79N5pWe3w==", "dev": true }, - "node_modules/@cspell/dict-bash": { + "@cspell/dict-bash": { "version": "1.0.18", "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-1.0.18.tgz", "integrity": "sha512-kJIqQ+FD2TCSgaaP5XLEDgy222+pVWTc+VhveNO++gnTWU3BCVjkD5LjfW7g/CmGONnz+nwXDueWspProaSdJw==", "dev": true }, - "node_modules/@cspell/dict-companies": { + "@cspell/dict-companies": { "version": "1.0.40", "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-1.0.40.tgz", "integrity": "sha512-Aw07qiTroqSST2P5joSrC4uOA05zTXzI2wMb+me3q4Davv1D9sCkzXY0TGoC2vzhNv5ooemRi9KATGaBSdU1sw==", "dev": true }, - "node_modules/@cspell/dict-cpp": { + "@cspell/dict-cpp": { "version": "1.1.40", "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-1.1.40.tgz", "integrity": "sha512-sscfB3woNDNj60/yGXAdwNtIRWZ89y35xnIaJVDMk5TPMMpaDvuk0a34iOPIq0g4V+Y8e3RyAg71SH6ADwSjGw==", "dev": true }, - "node_modules/@cspell/dict-cryptocurrencies": { + "@cspell/dict-cryptocurrencies": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-1.0.10.tgz", "integrity": "sha512-47ABvDJOkaST/rXipNMfNvneHUzASvmL6K/CbOFpYKfsd0x23Jc9k1yaOC7JAm82XSC/8a7+3Yu+Fk2jVJNnsA==", "dev": true }, - "node_modules/@cspell/dict-csharp": { + "@cspell/dict-csharp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-1.0.11.tgz", "integrity": "sha512-nub+ZCiTgmT87O+swI+FIAzNwaZPWUGckJU4GN402wBq420V+F4ZFqNV7dVALJrGaWH7LvADRtJxi6cZVHJKeA==", "dev": true }, - "node_modules/@cspell/dict-css": { + "@cspell/dict-css": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-1.0.13.tgz", "integrity": "sha512-HU8RbFRoGanFH85mT01Ot/Ay48ixr/gG25VPLtdq56QTrmPsw79gxYm/5Qay16eQbpoPIxaj5CAWNam+DX4GbA==", "dev": true }, - "node_modules/@cspell/dict-django": { + "@cspell/dict-django": { "version": "1.0.26", "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-1.0.26.tgz", "integrity": "sha512-mn9bd7Et1L2zuibc08GVHTiD2Go3/hdjyX5KLukXDklBkq06r+tb0OtKtf1zKodtFDTIaYekGADhNhA6AnKLkg==", "dev": true }, - "node_modules/@cspell/dict-dotnet": { + "@cspell/dict-dotnet": { "version": "1.0.32", "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-1.0.32.tgz", "integrity": "sha512-9H9vXrgJB4KF8xsyTToXO53cXD33iyfrpT4mhCds+YLUw3P3x3E9myszgJzshnrxYBvQZ+QMII57Qr6SjZVk4Q==", "dev": true }, - "node_modules/@cspell/dict-elixir": { + "@cspell/dict-elixir": { "version": "1.0.26", "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-1.0.26.tgz", "integrity": "sha512-hz1yETUiRJM7yjN3mITSnxcmZaEyaBbyJhpZPpg+cKUil+xhHeZ2wwfbRc83QHGmlqEuDWbdCFqKSpCDJYpYhg==", "dev": true }, - "node_modules/@cspell/dict-en_us": { - "version": "1.2.45", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-1.2.45.tgz", - "integrity": "sha512-UPwR4rfiJCxnS+Py+EK9E4AUj3aPZE4p/yBRSHN+5aBQConlI0lLDtMceH5wlupA/sQTU1ERZGPJA9L96jVSyQ==", - "dev": true - }, - "node_modules/@cspell/dict-en-gb": { + "@cspell/dict-en-gb": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", "dev": true }, - "node_modules/@cspell/dict-filetypes": { + "@cspell/dict-en_us": { + "version": "1.2.45", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-1.2.45.tgz", + "integrity": "sha512-UPwR4rfiJCxnS+Py+EK9E4AUj3aPZE4p/yBRSHN+5aBQConlI0lLDtMceH5wlupA/sQTU1ERZGPJA9L96jVSyQ==", + "dev": true + }, + "@cspell/dict-filetypes": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-1.1.8.tgz", "integrity": "sha512-EllahNkhzvLWo0ptwu0l3oEeAJOQSUpZnDfnKRIh6mJVehuSovNHwA9vrdZ8jBUjuqcfaN2e7c32zN0D/qvWJQ==", "dev": true }, - "node_modules/@cspell/dict-fonts": { + "@cspell/dict-fonts": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-1.0.14.tgz", "integrity": "sha512-VhIX+FVYAnqQrOuoFEtya6+H72J82cIicz9QddgknsTqZQ3dvgp6lmVnsQXPM3EnzA8n1peTGpLDwHzT7ociLA==", "dev": true }, - "node_modules/@cspell/dict-fullstack": { + "@cspell/dict-fullstack": { "version": "1.0.39", "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-1.0.39.tgz", "integrity": "sha512-Mbi+zWdiP9yzL+X4YD9Tgcm5YQ95Ql+Y3vF2LRnOY6g2QWaijTRN1rgksVuxzpFqHi//+bx2uoUb0XEKBYDi8g==", "dev": true }, - "node_modules/@cspell/dict-golang": { + "@cspell/dict-golang": { "version": "1.1.24", "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-1.1.24.tgz", "integrity": "sha512-qq3Cjnx2U1jpeWAGJL1GL0ylEhUMqyaR36Xij6Y6Aq4bViCRp+HRRqk0x5/IHHbOrti45h3yy7ii1itRFo+Xkg==", "dev": true }, - "node_modules/@cspell/dict-haskell": { + "@cspell/dict-haskell": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-1.0.13.tgz", "integrity": "sha512-kvl8T84cnYRPpND/P3D86P6WRSqebsbk0FnMfy27zo15L5MLAb3d3MOiT1kW3vEWfQgzUD7uddX/vUiuroQ8TA==", "dev": true }, - "node_modules/@cspell/dict-html": { + "@cspell/dict-html": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-1.1.9.tgz", "integrity": "sha512-vvnYia0tyIS5Fdoz+gEQm77MGZZE66kOJjuNpIYyRHCXFAhWdYz3SmkRm6YKJSWSvuO+WBJYTKDvkOxSh3Fx/w==", "dev": true }, - "node_modules/@cspell/dict-html-symbol-entities": { + "@cspell/dict-html-symbol-entities": { "version": "1.0.23", "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-1.0.23.tgz", "integrity": "sha512-PV0UBgcBFbBLf/m1wfkVMM8w96kvfHoiCGLWO6BR3Q9v70IXoE4ae0+T+f0CkxcEkacMqEQk/I7vuE9MzrjaNw==", "dev": true }, - "node_modules/@cspell/dict-java": { + "@cspell/dict-java": { "version": "1.0.23", "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-1.0.23.tgz", "integrity": "sha512-LcOg9srYLDoNGd8n3kbfDBlZD+LOC9IVcnFCdua1b/luCHNVmlgBx7e677qPu7olpMYOD5TQIVW2OmM1+/6MFA==", "dev": true }, - "node_modules/@cspell/dict-latex": { + "@cspell/dict-latex": { "version": "1.0.25", "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-1.0.25.tgz", "integrity": "sha512-cEgg91Migqcp1SdVV7dUeMxbPDhxdNo6Fgq2eygAXQjIOFK520FFvh/qxyBvW90qdZbIRoU2AJpchyHfGuwZFA==", "dev": true }, - "node_modules/@cspell/dict-lorem-ipsum": { + "@cspell/dict-lorem-ipsum": { "version": "1.0.22", "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-1.0.22.tgz", "integrity": "sha512-yqzspR+2ADeAGUxLTfZ4pXvPl7FmkENMRcGDECmddkOiuEwBCWMZdMP5fng9B0Q6j91hQ8w9CLvJKBz10TqNYg==", "dev": true }, - "node_modules/@cspell/dict-lua": { + "@cspell/dict-lua": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-1.0.16.tgz", "integrity": "sha512-YiHDt8kmHJ8nSBy0tHzaxiuitYp+oJ66ffCYuFWTNB3//Y0SI4OGHU3omLsQVeXIfCeVrO4DrVvRDoCls9B5zQ==", "dev": true }, - "node_modules/@cspell/dict-node": { + "@cspell/dict-node": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-1.0.12.tgz", "integrity": "sha512-RPNn/7CSkflAWk0sbSoOkg0ORrgBARUjOW3QjB11KwV1gSu8f5W/ij/S50uIXtlrfoBLqd4OyE04jyON+g/Xfg==", "dev": true }, - "node_modules/@cspell/dict-npm": { + "@cspell/dict-npm": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-1.0.16.tgz", "integrity": "sha512-RwkuZGcYBxL3Yux3cSG/IOWGlQ1e9HLCpHeyMtTVGYKAIkFAVUnGrz20l16/Q7zUG7IEktBz5O42kAozrEnqMQ==", "dev": true }, - "node_modules/@cspell/dict-php": { + "@cspell/dict-php": { "version": "1.0.25", "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-1.0.25.tgz", "integrity": "sha512-RoBIP5MRdByyPaXcznZMfOY1JdCMYPPLua5E9gkq0TJO7bX5mC9hyAKfYBSWVQunZydd82HZixjb5MPkDFU1uw==", "dev": true }, - "node_modules/@cspell/dict-powershell": { + "@cspell/dict-powershell": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-1.0.19.tgz", "integrity": "sha512-zF/raM/lkhXeHf4I43OtK0gP9rBeEJFArscTVwLWOCIvNk21MJcNoTYoaGw+c056+Q+hJL0psGLO7QN+mxYH1A==", "dev": true }, - "node_modules/@cspell/dict-python": { + "@cspell/dict-python": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-1.0.38.tgz", "integrity": "sha512-KuyOQaby9NID/pn7EkXilpUxjVIvvyLzhr7BPsDS6FcvUE8Yhss6bJowEDHSv6pa+W2387phoqbDf2rTicquAA==", "dev": true }, - "node_modules/@cspell/dict-ruby": { + "@cspell/dict-ruby": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-1.0.15.tgz", "integrity": "sha512-I76hJA///lc1pgmDTGUFHN/O8KLIZIU/8TgIYIGI6Ix/YzSEvWNdQYbANn6JbCynS0X+7IbZ2Ft+QqvmGtIWuA==", "dev": true }, - "node_modules/@cspell/dict-rust": { + "@cspell/dict-rust": { "version": "1.0.23", "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-1.0.23.tgz", "integrity": "sha512-lR4boDzs79YD6+30mmiSGAMMdwh7HTBAPUFSB0obR3Kidibfc3GZ+MHWZXay5dxZ4nBKM06vyjtanF9VJ8q1Iw==", "dev": true }, - "node_modules/@cspell/dict-scala": { + "@cspell/dict-scala": { "version": "1.0.21", "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-1.0.21.tgz", "integrity": "sha512-5V/R7PRbbminTpPS3ywgdAalI9BHzcEjEj9ug4kWYvBIGwSnS7T6QCFCiu+e9LvEGUqQC+NHgLY4zs1NaBj2vA==", "dev": true }, - "node_modules/@cspell/dict-software-terms": { + "@cspell/dict-software-terms": { "version": "1.0.48", "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-1.0.48.tgz", "integrity": "sha512-pfF3Ys2gRffu5ElqkH7FQMDMi/iZMyOzpGMb3FSH0PJ2AnRQ5rRNWght1h2L36YxvXl0mWVaFrrfwiOyRIc8ZQ==", "dev": true }, - "node_modules/@cspell/dict-typescript": { + "@cspell/dict-typescript": { "version": "1.0.20", "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-1.0.20.tgz", "integrity": "sha512-yIuGeeZtQA2gqpGefGjZqBl8iGJpIYWz0QzDqsscNi2qfSnLsbjM0RkRbTehM8y9gGGe7xfgUP5adxceJa5Krg==", "dev": true }, - "node_modules/@discoveryjs/json-ext": { + "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } + "dev": true }, - "node_modules/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3/-/lib-pixelstreamingfrontend-ue5.3-0.0.1.tgz", - "integrity": "sha512-Y3bXHTqHAE93epaj7FPQwVbwypFVH0RqOaGUZLNcWIRi2/mXmcWbTCvPLxhcL2/D9ezEVAR+Lb8OJMLL8qyfPQ==", + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3/-/lib-pixelstreamingfrontend-ue5.3-0.0.2.tgz", + "integrity": "sha512-zAQbxOGQE0y9Qqcfv05tsI8wr0bsm9h65xN57Wy4EX9XL8ulTx4wwrF0z0bmW6bK+ccOp2jZMd56/oH6lNVQLQ==", "dev": true, - "dependencies": { + "requires": { "sdp": "^3.1.0" } }, - "node_modules/@eslint/eslintrc": { + "@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, - "dependencies": { + "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", @@ -272,190 +240,156 @@ "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/@humanwhocodes/config-array": { + "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, - "dependencies": { + "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/module-importer": { + "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "dev": true }, - "node_modules/@humanwhocodes/object-schema": { + "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@jridgewell/gen-mapping": { + "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "dependencies": { + "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { + "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } + "dev": true }, - "node_modules/@jridgewell/set-array": { + "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } + "dev": true }, - "node_modules/@jridgewell/source-map": { + "@jridgewell/source-map": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, - "dependencies": { + "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/@jridgewell/sourcemap-codec": { + "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "node_modules/@jridgewell/trace-mapping": { + "@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, - "dependencies": { + "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@nodelib/fs.scandir": { + "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "dependencies": { + "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@nodelib/fs.stat": { + "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } + "dev": true }, - "node_modules/@nodelib/fs.walk": { + "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "dependencies": { + "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@types/eslint": { + "@types/eslint": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==", "dev": true, - "dependencies": { + "requires": { "@types/estree": "*", "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { + "@types/eslint-scope": { "version": "3.7.4", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, - "dependencies": { + "requires": { "@types/eslint": "*", "@types/estree": "*" } }, - "node_modules/@types/estree": { + "@types/estree": { "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, - "node_modules/@types/json-schema": { + "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "node_modules/@types/node": { + "@types/node": { "version": "18.13.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", "dev": true }, - "node_modules/@types/semver": { + "@types/semver": { "version": "7.3.13", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, - "node_modules/@typescript-eslint/eslint-plugin": { + "@typescript-eslint/eslint-plugin": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/scope-manager": "5.51.0", "@typescript-eslint/type-utils": "5.51.0", "@typescript-eslint/utils": "5.51.0", @@ -466,114 +400,54 @@ "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/parser": { + "@typescript-eslint/parser": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/scope-manager": "5.51.0", "@typescript-eslint/types": "5.51.0", "@typescript-eslint/typescript-estree": "5.51.0", "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { + "@typescript-eslint/scope-manager": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/types": "5.51.0", "@typescript-eslint/visitor-keys": "5.51.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { + "@typescript-eslint/type-utils": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/typescript-estree": "5.51.0", "@typescript-eslint/utils": "5.51.0", "debug": "^4.3.4", "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/types": { + "@typescript-eslint/types": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "dev": true }, - "node_modules/@typescript-eslint/typescript-estree": { + "@typescript-eslint/typescript-estree": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/types": "5.51.0", "@typescript-eslint/visitor-keys": "5.51.0", "debug": "^4.3.4", @@ -581,26 +455,14 @@ "is-glob": "^4.0.3", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/utils": { + "@typescript-eslint/utils": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", "dev": true, - "dependencies": { + "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", "@typescript-eslint/scope-manager": "5.51.0", @@ -609,122 +471,105 @@ "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { + "@typescript-eslint/visitor-keys": { "version": "5.51.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", "dev": true, - "dependencies": { + "requires": { "@typescript-eslint/types": "5.51.0", "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@webassemblyjs/ast": { + "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { + "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, - "node_modules/@webassemblyjs/helper-api-error": { + "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, - "node_modules/@webassemblyjs/helper-buffer": { + "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "node_modules/@webassemblyjs/helper-numbers": { + "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", "@xtuc/long": "4.2.2" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, - "node_modules/@webassemblyjs/helper-wasm-section": { + "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", "@webassemblyjs/wasm-gen": "1.11.1" } }, - "node_modules/@webassemblyjs/ieee754": { + "@webassemblyjs/ieee754": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, - "dependencies": { + "requires": { "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@webassemblyjs/leb128": { + "@webassemblyjs/leb128": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, - "dependencies": { + "requires": { "@xtuc/long": "4.2.2" } }, - "node_modules/@webassemblyjs/utf8": { + "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, - "node_modules/@webassemblyjs/wasm-edit": { + "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -735,12 +580,12 @@ "@webassemblyjs/wast-printer": "1.11.1" } }, - "node_modules/@webassemblyjs/wasm-gen": { + "@webassemblyjs/wasm-gen": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", "@webassemblyjs/ieee754": "1.11.1", @@ -748,24 +593,24 @@ "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/@webassemblyjs/wasm-opt": { + "@webassemblyjs/wasm-opt": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", "@webassemblyjs/wasm-gen": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1" } }, - "node_modules/@webassemblyjs/wasm-parser": { + "@webassemblyjs/wasm-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -774,414 +619,292 @@ "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/@webassemblyjs/wast-printer": { + "@webassemblyjs/wast-printer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "dependencies": { + "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, - "node_modules/@webpack-cli/configtest": { + "@webpack-cli/configtest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } + "dev": true }, - "node_modules/@webpack-cli/info": { + "@webpack-cli/info": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } + "dev": true }, - "node_modules/@webpack-cli/serve": { + "@webpack-cli/serve": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } + "dev": true }, - "node_modules/@xtuc/ieee754": { + "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, - "node_modules/@xtuc/long": { + "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "node_modules/acorn": { + "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "dev": true }, - "node_modules/acorn-import-assertions": { + "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } + "dev": true }, - "node_modules/acorn-jsx": { + "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "dev": true }, - "node_modules/ajv": { + "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "dependencies": { + "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-keywords": { + "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } + "dev": true }, - "node_modules/ansi-regex": { + "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/ansi-styles": { + "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "dependencies": { + "requires": { "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/argparse": { + "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/array-timsort": { + "array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true }, - "node_modules/array-union": { + "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/at-least-node": { + "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } + "dev": true }, - "node_modules/balanced-match": { + "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/brace-expansion": { + "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "dependencies": { + "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/braces": { + "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "dependencies": { + "requires": { "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/browserslist": { + "browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { + "requires": { "caniuse-lite": "^1.0.30001449", "electron-to-chromium": "^1.4.284", "node-releases": "^2.0.8", "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer-from": { + "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/callsites": { + "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/caniuse-lite": { + "caniuse-lite": { "version": "1.0.30001451", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "dev": true }, - "node_modules/chalk": { + "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "dependencies": { + "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chrome-trace-event": { + "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } + "dev": true }, - "node_modules/clone-deep": { + "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "dependencies": { + "requires": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" } }, - "node_modules/color-convert": { + "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "dependencies": { + "requires": { "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/color-name": { + "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colorette": { + "colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/commander": { + "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } + "dev": true }, - "node_modules/comment-json": { + "comment-json": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", "dev": true, - "dependencies": { + "requires": { "array-timsort": "^1.0.3", "core-util-is": "^1.0.3", "esprima": "^4.0.1", "has-own-prop": "^2.0.0", "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">= 6" } }, - "node_modules/concat-map": { + "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/configstore": { + "configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, - "dependencies": { + "requires": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/core-util-is": { + "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/cross-spawn": { + "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "dependencies": { + "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/crypto-random-string": { + "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/cspell": { + "cspell": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/cspell/-/cspell-4.2.8.tgz", "integrity": "sha512-eqan8+lCU9bSp8Tl4+SR/ccBnuPyMmp7evck/RlMdFTjLh/s+3vQ5hQyBzbzK8w2MMqL84CymW7BwIOKjpylSg==", "dev": true, - "dependencies": { + "requires": { "chalk": "^4.1.0", "commander": "^7.0.0", "comment-json": "^4.0.6", @@ -1192,45 +915,33 @@ "get-stdin": "^8.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" - }, - "bin": { - "cspell": "bin.js" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/cspell-glob": { + "cspell-glob": { "version": "0.1.25", "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-0.1.25.tgz", "integrity": "sha512-/XaSHrGBpMJa+duFz3GKOWfrijrfdHT7a/XGgIcq3cymCSpOH+DPho42sl0jLI/hjM+8yv2m8aEoxRT8yVSnlg==", "dev": true, - "dependencies": { + "requires": { "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/cspell-io": { + "cspell-io": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-4.1.7.tgz", "integrity": "sha512-V0/tUu9FnIS3v+vAvDT6NNa14Nc/zUNX8+YUUOfFAiDJJTdqefmvcWjOJBIMYBf3wIk9iWLmLbMM+bNHqr7DSQ==", "dev": true, - "dependencies": { + "requires": { "iconv-lite": "^0.6.2", "iterable-to-stream": "^1.0.1" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/cspell-lib": { + "cspell-lib": { "version": "4.3.12", "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-4.3.12.tgz", "integrity": "sha512-yCCb6MoW1K8Tsr/WVEQoO4dfYhH9bCsjQayccb8MlyDaNNuWJHuX+gUGHsZSXSuChSh8PrTWKXJzs13/uM977g==", "dev": true, - "dependencies": { + "requires": { "@cspell/dict-aws": "^1.0.13", "@cspell/dict-bash": "^1.0.11", "@cspell/dict-companies": "^1.0.35", @@ -1241,8 +952,8 @@ "@cspell/dict-django": "^1.0.25", "@cspell/dict-dotnet": "^1.0.24", "@cspell/dict-elixir": "^1.0.23", - "@cspell/dict-en_us": "^1.2.39", "@cspell/dict-en-gb": "^1.1.27", + "@cspell/dict-en_us": "^1.2.39", "@cspell/dict-filetypes": "^1.1.5", "@cspell/dict-fonts": "^1.0.13", "@cspell/dict-fullstack": "^1.0.36", @@ -1275,160 +986,116 @@ "resolve-from": "^5.0.0", "resolve-global": "^1.0.0", "vscode-uri": "^3.0.2" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/cspell-trie-lib": { + "cspell-trie-lib": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-4.2.8.tgz", "integrity": "sha512-Nt3c0gxOYXIc3/yhALDukpje1BgR6guvlUKWQO2zb0r7qRWpwUw2j2YM4dWbHQeH/3Hx5ei4Braa6cMaiJ5YBw==", "dev": true, - "dependencies": { + "requires": { "gensequence": "^3.1.1" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/cspell-util-bundle": { + "cspell-util-bundle": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/cspell-util-bundle/-/cspell-util-bundle-4.1.11.tgz", "integrity": "sha512-or3OGKydZs1NwweMIgnA48k8H3F5zK4e5lonjUhpEzLYQZ2nB23decdoqZ8ogFC8pFTA40tZKDsMJ0b+65gX4Q==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } + "dev": true }, - "node_modules/csstype": { + "csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, - "node_modules/debug": { + "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/deep-is": { + "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/dir-glob": { + "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "dependencies": { + "requires": { "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/doctrine": { + "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "dependencies": { + "requires": { "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/dot-prop": { + "dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "dependencies": { + "requires": { "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/electron-to-chromium": { + "electron-to-chromium": { "version": "1.4.289", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.289.tgz", "integrity": "sha512-relLdMfPBxqGCxy7Gyfm1HcbRPcFUJdlgnCPVgQ23sr1TvUrRJz0/QPoGP0+x41wOVSTN/Wi3w6YDgHiHJGOzg==", "dev": true }, - "node_modules/enhanced-resolve": { + "enhanced-resolve": { "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, - "dependencies": { + "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/envinfo": { + "envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } + "dev": true }, - "node_modules/es-module-lexer": { + "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, - "node_modules/escalade": { + "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/escape-string-regexp": { + "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/eslint": { + "eslint": { "version": "8.33.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, - "dependencies": { + "requires": { "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", @@ -1469,1929 +1136,1390 @@ "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + } } }, - "node_modules/eslint-scope": { + "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "dependencies": { + "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { + "eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "dependencies": { + "requires": { "eslint-visitor-keys": "^2.0.0" }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, - "node_modules/eslint-visitor-keys": { + "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } + "dev": true }, - "node_modules/espree": { + "espree": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, - "dependencies": { + "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { + "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } + "dev": true }, - "node_modules/esquery": { + "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "dependencies": { + "requires": { "estraverse": "^5.1.0" }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, - "node_modules/esrecurse": { + "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "dependencies": { + "requires": { "estraverse": "^5.2.0" }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, - "node_modules/estraverse": { + "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } + "dev": true }, - "node_modules/esutils": { + "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/events": { + "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } + "dev": true }, - "node_modules/fast-deep-equal": { + "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-glob": { + "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, - "dependencies": { + "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" } }, - "node_modules/fast-json-stable-stringify": { + "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/fast-levenshtein": { + "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fastest-levenshtein": { + "fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } + "dev": true }, - "node_modules/fastq": { + "fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "dependencies": { + "requires": { "reusify": "^1.0.4" } }, - "node_modules/file-entry-cache": { + "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "dependencies": { + "requires": { "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fill-range": { + "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "dependencies": { + "requires": { "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/find-up": { + "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "dependencies": { + "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { + "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "dependencies": { + "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flatted": { + "flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/fs-extra": { + "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "dependencies": { + "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" } }, - "node_modules/fs.realpath": { + "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/function-bind": { + "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/gensequence": { + "gensequence": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz", "integrity": "sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } + "dev": true }, - "node_modules/get-stdin": { + "get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/glob": { + "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "dependencies": { + "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { + "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "dependencies": { + "requires": { "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, - "node_modules/glob-to-regexp": { + "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/global-dirs": { + "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, - "dependencies": { + "requires": { "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" } }, - "node_modules/globals": { + "globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "dependencies": { + "requires": { "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { + "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "dependencies": { + "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { + "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "node_modules/grapheme-splitter": { + "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "node_modules/has": { + "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "dependencies": { + "requires": { "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" } }, - "node_modules/has-flag": { + "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/has-own-prop": { + "has-own-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/hyphenate-style-name": { + "hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, - "node_modules/iconv-lite": { + "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "dependencies": { + "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/ignore": { + "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } + "dev": true }, - "node_modules/import-fresh": { + "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "dependencies": { + "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } } }, - "node_modules/import-local": { + "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "dependencies": { + "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { + "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } + "dev": true }, - "node_modules/inflight": { + "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "dependencies": { + "requires": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/inherits": { + "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { + "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/interpret": { + "interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } + "dev": true }, - "node_modules/is-core-module": { + "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, - "dependencies": { + "requires": { "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { + "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/is-glob": { + "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "dependencies": { + "requires": { "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-in-browser": { + "is-in-browser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" }, - "node_modules/is-number": { + "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } + "dev": true }, - "node_modules/is-obj": { + "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/is-path-inside": { + "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/is-plain-object": { + "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "dependencies": { + "requires": { "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-typedarray": { + "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/isexe": { + "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/isobject": { + "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/iterable-to-stream": { + "iterable-to-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz", "integrity": "sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } + "dev": true }, - "node_modules/jest-worker": { + "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "dependencies": { + "requires": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/js-sdsl": { + "js-sdsl": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } + "dev": true }, - "node_modules/js-yaml": { + "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "dependencies": { + "requires": { "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-parse-even-better-errors": { + "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema-traverse": { + "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/json-stable-stringify-without-jsonify": { + "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/jsonc-parser": { + "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/jsonfile": { + "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "dependencies": { + "requires": { + "graceful-fs": "^4.1.6", "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" } }, - "node_modules/jss": { + "jss": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz", "integrity": "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", "is-in-browser": "^1.1.3", "tiny-warning": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/jss" } }, - "node_modules/jss-plugin-camel-case": { + "jss-plugin-camel-case": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz", "integrity": "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", "jss": "10.9.2" } }, - "node_modules/jss-plugin-global": { + "jss-plugin-global": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz", "integrity": "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" } }, - "node_modules/kind-of": { + "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/levn": { + "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "dependencies": { + "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/loader-runner": { + "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } + "dev": true }, - "node_modules/locate-path": { + "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "dependencies": { + "requires": { "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.merge": { + "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lru-cache": { + "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "dependencies": { + "requires": { "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" } }, - "node_modules/lunr": { + "lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, - "node_modules/make-dir": { + "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "dependencies": { + "requires": { "semver": "^6.0.0" }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "node_modules/marked": { + "marked": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } + "dev": true }, - "node_modules/merge-stream": { + "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/merge2": { + "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } + "dev": true }, - "node_modules/micromatch": { + "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "dependencies": { + "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" } }, - "node_modules/mime-db": { + "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "dev": true }, - "node_modules/mime-types": { + "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "dependencies": { + "requires": { "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" } }, - "node_modules/minimatch": { + "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "dependencies": { + "requires": { "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" } }, - "node_modules/ms": { + "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/natural-compare": { + "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { + "natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "node_modules/neo-async": { + "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/node-releases": { + "node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, - "node_modules/once": { + "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "dependencies": { + "requires": { "wrappy": "1" } }, - "node_modules/optionator": { + "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "dependencies": { + "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/p-limit": { + "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "dependencies": { + "requires": { "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { + "p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "dependencies": { + "requires": { "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { + "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/parent-module": { + "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "dependencies": { + "requires": { "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" } }, - "node_modules/path-exists": { + "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/path-is-absolute": { + "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/path-key": { + "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/path-parse": { + "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { + "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/picocolors": { + "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "node_modules/picomatch": { + "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "dev": true }, - "node_modules/pkg-dir": { + "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "dependencies": { + "requires": { "find-up": "^4.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, - "node_modules/prelude-ls": { + "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "dev": true }, - "node_modules/prettier": { + "prettier": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } + "dev": true }, - "node_modules/punycode": { + "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/queue-microtask": { + "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dev": true }, - "node_modules/randombytes": { + "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "dependencies": { + "requires": { "safe-buffer": "^5.1.0" } }, - "node_modules/rechoir": { + "rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, - "dependencies": { + "requires": { "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" } }, - "node_modules/regenerator-runtime": { + "regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, - "node_modules/regexpp": { + "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } + "dev": true }, - "node_modules/repeat-string": { + "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } + "dev": true }, - "node_modules/resolve": { + "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, - "dependencies": { + "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-cwd": { + "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "dependencies": { + "requires": { "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/resolve-from": { + "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/resolve-global": { + "resolve-global": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", "dev": true, - "dependencies": { + "requires": { "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/reusify": { + "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/rimraf": { + "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "dependencies": { + "requires": { "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-parallel": { + "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { + "requires": { "queue-microtask": "^1.2.2" } }, - "node_modules/safe-buffer": { + "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dev": true }, - "node_modules/safer-buffer": { + "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/schema-utils": { + "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, - "dependencies": { + "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, - "node_modules/sdp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.1.0.tgz", - "integrity": "sha512-YQ2+lulxfcPv5/3FsY9FR0F8r+qQngluz2L+YdR7S8mMiFFy3/6Cx9mzAL57Sbzgaj13Eaiq88rfQx7Wiik0qg==", + "sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", "dev": true }, - "node_modules/semver": { + "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "dependencies": { + "requires": { "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, - "node_modules/serialize-javascript": { + "serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "dependencies": { + "requires": { "randombytes": "^2.1.0" } }, - "node_modules/shallow-clone": { + "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "dependencies": { + "requires": { "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" } }, - "node_modules/shebang-command": { + "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "dependencies": { + "requires": { "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/shebang-regex": { + "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/shiki": { + "shiki": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.12.1.tgz", "integrity": "sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==", "dev": true, - "dependencies": { + "requires": { "jsonc-parser": "^3.2.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^8.0.0" } }, - "node_modules/signal-exit": { + "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/slash": { + "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/source-map": { + "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/source-map-support": { + "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "dependencies": { + "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/strip-ansi": { + "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "dependencies": { + "requires": { "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/strip-json-comments": { + "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/supports-color": { + "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "dependencies": { + "requires": { "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { + "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/tapable": { + "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/terser": { + "terser": { "version": "5.16.3", "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz", "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==", "dev": true, - "dependencies": { + "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, - "node_modules/terser-webpack-plugin": { + "terser-webpack-plugin": { "version": "5.3.6", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, - "dependencies": { + "requires": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/text-table": { + "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tiny-warning": { + "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "node_modules/to-regex-range": { + "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "dependencies": { + "requires": { "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" } }, - "node_modules/ts-loader": { + "ts-loader": { "version": "9.4.2", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", "dev": true, - "dependencies": { + "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" } }, - "node_modules/tslib": { + "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tsutils": { + "tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "dependencies": { + "requires": { "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/type-check": { + "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "dependencies": { + "requires": { "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/type-fest": { + "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/typedarray-to-buffer": { + "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "dependencies": { + "requires": { "is-typedarray": "^1.0.0" } }, - "node_modules/typedoc": { + "typedoc": { "version": "0.23.24", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.24.tgz", "integrity": "sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==", "dev": true, - "dependencies": { + "requires": { "lunr": "^2.3.9", "marked": "^4.2.5", "minimatch": "^5.1.2", "shiki": "^0.12.1" }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, - "node_modules/typescript": { + "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } + "dev": true }, - "node_modules/unique-string": { + "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "dependencies": { + "requires": { "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/universalify": { + "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } + "dev": true }, - "node_modules/update-browserslist-db": { + "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { + "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { + "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "dependencies": { + "requires": { "punycode": "^2.1.0" } }, - "node_modules/vscode-oniguruma": { + "vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", "dev": true }, - "node_modules/vscode-textmate": { + "vscode-textmate": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, - "node_modules/vscode-uri": { + "vscode-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", "dev": true }, - "node_modules/watchpack": { + "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "dependencies": { + "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/webpack": { + "webpack": { "version": "5.76.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, - "dependencies": { + "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", @@ -3416,29 +2544,14 @@ "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } } }, - "node_modules/webpack-cli": { + "webpack-cli": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", "dev": true, - "dependencies": { + "requires": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.0.1", "@webpack-cli/info": "^2.0.1", @@ -3453,136 +2566,87 @@ "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/webpack-merge": { + "webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, - "dependencies": { + "requires": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" } }, - "node_modules/webpack-sources": { + "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } + "dev": true }, - "node_modules/which": { + "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "dependencies": { + "requires": { "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/wildcard": { + "wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "node_modules/word-wrap": { + "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/wrappy": { + "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/write-file-atomic": { + "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "dependencies": { + "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/xdg-basedir": { + "xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/yallist": { + "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yocto-queue": { + "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true } } } diff --git a/Frontend/ui-library/package.json b/Frontend/ui-library/package.json index 01b0c59e..b452bc90 100644 --- a/Frontend/ui-library/package.json +++ b/Frontend/ui-library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.2", + "version": "0.0.3", "description": "Reference frontend UI library for Unreal Engine 5.3 Pixel Streaming - gives the stock look and feel.", "main": "dist/lib-pixelstreamingfrontend-ui.js", "module": "dist/lib-pixelstreamingfrontend-ui.esm.js", @@ -16,7 +16,7 @@ "spellcheck": "cspell \"{README.md,.github/*.md,src/**/*.ts}\"" }, "devDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.1", + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.2", "@typescript-eslint/eslint-plugin": "^5.16.0", "@typescript-eslint/parser": "^5.16.0", "cspell": "^4.1.0", @@ -34,7 +34,7 @@ "jss-plugin-global": "^10.9.2" }, "peerDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.1" + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.2" }, "repository": { "type": "git", From 1f3644eff727f15c2a4d6ad94e46a5032a1102fb Mon Sep 17 00:00:00 2001 From: Matthew Cotton Date: Wed, 21 Jun 2023 11:31:53 +1000 Subject: [PATCH 06/22] Bump release version --- RELEASE_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_VERSION b/RELEASE_VERSION index 4e379d2b..bcab45af 100644 --- a/RELEASE_VERSION +++ b/RELEASE_VERSION @@ -1 +1 @@ -0.0.2 +0.0.3 From 6852ed39c0bd87a76790867765c045edb34dfbd6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:32:51 +1000 Subject: [PATCH 07/22] Show player count in stats panel (#303) (cherry picked from commit 6bdbf509eb894f98d451b95e298a7c3b21f07396) Co-authored-by: William Belcher --- .../src/PixelStreaming/PixelStreaming.ts | 9 ++++++++- Frontend/library/src/Util/EventEmitter.ts | 18 +++++++++++++++++- .../src/WebRtcPlayer/WebRtcPlayerController.ts | 3 +++ .../src/WebSockets/SignallingProtocol.ts | 1 + .../src/WebSockets/WebSocketController.ts | 11 ++++++++--- .../ui-library/src/Application/Application.ts | 9 +++++++++ Frontend/ui-library/src/UI/StatsPanel.ts | 8 ++++++++ 7 files changed, 54 insertions(+), 5 deletions(-) diff --git a/Frontend/library/src/PixelStreaming/PixelStreaming.ts b/Frontend/library/src/PixelStreaming/PixelStreaming.ts index 48acd5ab..cc1f8ea3 100644 --- a/Frontend/library/src/PixelStreaming/PixelStreaming.ts +++ b/Frontend/library/src/PixelStreaming/PixelStreaming.ts @@ -25,7 +25,8 @@ import { WebRtcConnectingEvent, WebRtcDisconnectedEvent, WebRtcFailedEvent, - WebRtcSdpEvent + WebRtcSdpEvent, + PlayerCountEvent } from '../Util/EventEmitter'; import { MessageOnScreenKeyboard } from '../WebSockets/MessageReceive'; import { WebXRController } from '../WebXR/WebXRController'; @@ -561,6 +562,12 @@ export class PixelStreaming { ); } + _onPlayerCount(playerCount: number) { + this._eventEmitter.dispatchEvent( + new PlayerCountEvent({ count: playerCount }) + ); + } + /** * Request a connection latency test. * NOTE: There are plans to refactor all request* functions. Expect changes if you use this! diff --git a/Frontend/library/src/Util/EventEmitter.ts b/Frontend/library/src/Util/EventEmitter.ts index 0059b276..b6ee9bdb 100644 --- a/Frontend/library/src/Util/EventEmitter.ts +++ b/Frontend/library/src/Util/EventEmitter.ts @@ -470,6 +470,21 @@ export class XrFrameEvent extends Event { } } +/** + * An event that is emitted when receiving a player count from the signalling server + */ +export class PlayerCountEvent extends Event { + readonly type: 'playerCount'; + readonly data: { + /** count object */ + count: number + }; + constructor(data: PlayerCountEvent['data']) { + super('playerCount'); + this.data = data; + } +} + export type PixelStreamingEvent = | AfkWarningActivateEvent | AfkWarningUpdateEvent @@ -502,7 +517,8 @@ export type PixelStreamingEvent = | SettingsChangedEvent | XrSessionStartedEvent | XrSessionEndedEvent - | XrFrameEvent; + | XrFrameEvent + | PlayerCountEvent; export class EventEmitter extends EventTarget { /** diff --git a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts index 050a8514..330dec9c 100644 --- a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts +++ b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts @@ -204,6 +204,9 @@ export class WebRtcPlayerController { ); this.setVideoEncoderAvgQP(0); }; + this.webSocketController.onPlayerCount = (playerCount: MessageReceive.MessagePlayerCount) => { + this.pixelStreaming._onPlayerCount(playerCount.count); + }; this.webSocketController.onOpen.addEventListener('open', () => { const BrowserSendsOffer = this.config.isFlagEnabled( Flags.BrowserSendOffer diff --git a/Frontend/library/src/WebSockets/SignallingProtocol.ts b/Frontend/library/src/WebSockets/SignallingProtocol.ts index e9b7b866..f03f5695 100644 --- a/Frontend/library/src/WebSockets/SignallingProtocol.ts +++ b/Frontend/library/src/WebSockets/SignallingProtocol.ts @@ -108,6 +108,7 @@ export class SignallingProtocol { 'Player Count: ' + playerCount.count, 6 ); + websocketController.onPlayerCount(playerCount) } ); diff --git a/Frontend/library/src/WebSockets/WebSocketController.ts b/Frontend/library/src/WebSockets/WebSocketController.ts index ddb64fcc..fcc551e4 100644 --- a/Frontend/library/src/WebSockets/WebSocketController.ts +++ b/Frontend/library/src/WebSockets/WebSocketController.ts @@ -247,7 +247,12 @@ export class WebSocketController { * @param messageDataChannels - The data channels details */ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function - onWebRtcPeerDataChannels( - messageDataChannels: MessageReceive.MessagePeerDataChannels - ) {} + onWebRtcPeerDataChannels(messageDataChannels: MessageReceive.MessagePeerDataChannels) {} + + /** + * Event is fired when the websocket receives the an updated player count from cirrus + * @param MessagePlayerCount - The new player count + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function + onPlayerCount(playerCount: MessageReceive.MessagePlayerCount) {} } diff --git a/Frontend/ui-library/src/Application/Application.ts b/Frontend/ui-library/src/Application/Application.ts index dfaaa9cd..2864016e 100644 --- a/Frontend/ui-library/src/Application/Application.ts +++ b/Frontend/ui-library/src/Application/Application.ts @@ -365,6 +365,11 @@ export class Application { 'settingsChanged', (event) => this.configUI.onSettingsChanged(event) ); + this.stream.addEventListener( + 'playerCount', + ({ data: { count }}) => + this.onPlayerCount(count) + ); } /** @@ -662,6 +667,10 @@ export class Application { this.statsPanel.latencyTest.handleTestResult(latencyTimings); } + onPlayerCount(playerCount: number) { + this.statsPanel.handlePlayerCount(playerCount); + } + handleStreamerListMessage(messageStreamingList: MessageStreamerList, autoSelectedStreamerId: string | null) { if (autoSelectedStreamerId === null) { if(messageStreamingList.ids.length === 0) { diff --git a/Frontend/ui-library/src/UI/StatsPanel.ts b/Frontend/ui-library/src/UI/StatsPanel.ts index 2c9a5040..a3c81919 100644 --- a/Frontend/ui-library/src/UI/StatsPanel.ts +++ b/Frontend/ui-library/src/UI/StatsPanel.ts @@ -147,6 +147,14 @@ export class StatsPanel { } } + public handlePlayerCount(playerCount: number) { + this.addOrUpdateStat( + 'PlayerCountStat', + 'Players', + playerCount.toString() + ); + } + /** * Handle stats coming in from browser/UE * @param stats the stats structure From 149e5263609905858e16d096959243264e93f167 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:32:43 +1000 Subject: [PATCH 08/22] Fix: Firefox console errors `TypeError: this.preferredCodec.split is not a function` (#310) (#313) * Fix select codec on Firefox * Restore indentation in cirrus (cherry picked from commit 503b565bc5aa5b80594cef20aae2530dc60cb7df) Co-authored-by: William Belcher --- Frontend/library/src/Config/SettingOption.ts | 13 ++++++++++++- .../PeerConnectionController.ts | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Frontend/library/src/Config/SettingOption.ts b/Frontend/library/src/Config/SettingOption.ts index 3b682fbe..cc5726e3 100644 --- a/Frontend/library/src/Config/SettingOption.ts +++ b/Frontend/library/src/Config/SettingOption.ts @@ -103,11 +103,22 @@ export class SettingOption< public set selected(value: string) { // A user may not specify the full possible value so we instead use the closest match. // eg ?xxx=H264 would select 'H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f' - const filteredList = this.options.filter( + let filteredList = this.options.filter( (option: string) => option.indexOf(value) !== -1 ); if (filteredList.length) { this.value = filteredList[0]; + return; + } + + // A user has specified a codec with a fmtp string but this codec + fmtp line isn't available. + // in that case, just use the codec + filteredList = this.options.filter( + (option: string) => option.indexOf(value.split(' ')[0]) !== -1 + ); + if (filteredList.length) { + this.value = filteredList[0]; + return; } } } diff --git a/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts b/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts index 255a375b..1ba096f8 100644 --- a/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts +++ b/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts @@ -372,10 +372,12 @@ export class PeerConnectionController { if (RTCRtpReceiver.getCapabilities && this.preferredCodec != '') { for (const transceiver of this.peerConnection?.getTransceivers() ?? []) { if ( - transceiver && + transceiver && transceiver.receiver && transceiver.receiver.track && - transceiver.receiver.track.kind === 'video' + transceiver.receiver.track.kind === 'video' && + // As of 06/2023, FireFox has added RTCRtpReceiver.getCapabilities, but hasn't added the ability to set codec preferences + transceiver.setCodecPreferences ) { const preferredRTPCodec = this.preferredCodec.split(' '); const codecs = [ From 2dea212048ddfd7e9bfdc7cad343941e4694236e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 16:33:06 +1000 Subject: [PATCH 09/22] Rename implementations/EpicGames to implementations/typescript (#177) Co-authored-by: William Belcher (cherry picked from commit d92e46e30131d26cd9b5f0c16ed6e5fea26f62f9) Co-authored-by: gunsha --- .github/workflows/create-gh-release.yml | 14 +- .../Docs/Customizing the Player Webpage.md | 2 +- Frontend/Docs/HTML Page Requirements.md | 6 +- Frontend/README.md | 6 +- .../EpicGames/docs/configuration.md | 3 - .../EpicGames/docs/images/frontend.jpg | Bin 56393 -> 0 bytes .../EpicGames/docs/images/images.md | 1 - .../package-lock.json | 0 .../{EpicGames => typescript}/package.json | 4 +- .../{EpicGames => typescript}/readme.md | 2 +- .../src/assets/css/login.css | 0 .../src/assets/css/showcase.css | 404 +++++++++--------- .../src/assets/css/stresstest.css | 0 .../src/assets/images/Aurora.jpg | Bin .../src/assets/images/Crunch.jpg | Bin .../src/assets/images/favicon-16x16.png | Bin .../src/assets/images/favicon-32x32.png | Bin .../src/assets/images/favicon-96x96.png | Bin .../src/assets/images/favicon.ico | Bin .../src/assets/images/favicon.png | Bin .../{EpicGames => typescript}/src/login.html | 0 .../{EpicGames => typescript}/src/login.ts | 0 .../{EpicGames => typescript}/src/player.html | 54 +-- .../{EpicGames => typescript}/src/player.ts | 48 +-- .../src/showcase.html | 122 +++--- .../{EpicGames => typescript}/src/showcase.ts | 0 .../src/stresstest.html | 0 .../src/stresstest.ts | 0 .../{EpicGames => typescript}/src/uiless.html | 94 ++-- .../{EpicGames => typescript}/src/uiless.ts | 0 .../{EpicGames => typescript}/tsconfig.json | 0 .../webpack.common.js | 0 .../{EpicGames => typescript}/webpack.dev.js | 0 .../{EpicGames => typescript}/webpack.prod.js | 0 Frontend/library/readme.md | 2 +- .../platform_scripts/bash/setup.sh | 2 +- .../platform_scripts/cmd/setup_frontend.bat | 4 +- 37 files changed, 382 insertions(+), 386 deletions(-) delete mode 100644 Frontend/implementations/EpicGames/docs/configuration.md delete mode 100644 Frontend/implementations/EpicGames/docs/images/frontend.jpg delete mode 100644 Frontend/implementations/EpicGames/docs/images/images.md rename Frontend/implementations/{EpicGames => typescript}/package-lock.json (100%) rename Frontend/implementations/{EpicGames => typescript}/package.json (87%) rename Frontend/implementations/{EpicGames => typescript}/readme.md (92%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/css/login.css (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/css/showcase.css (94%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/css/stresstest.css (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/Aurora.jpg (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/Crunch.jpg (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/favicon-16x16.png (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/favicon-32x32.png (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/favicon-96x96.png (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/favicon.ico (100%) rename Frontend/implementations/{EpicGames => typescript}/src/assets/images/favicon.png (100%) rename Frontend/implementations/{EpicGames => typescript}/src/login.html (100%) rename Frontend/implementations/{EpicGames => typescript}/src/login.ts (100%) rename Frontend/implementations/{EpicGames => typescript}/src/player.html (98%) rename Frontend/implementations/{EpicGames => typescript}/src/player.ts (97%) rename Frontend/implementations/{EpicGames => typescript}/src/showcase.html (97%) rename Frontend/implementations/{EpicGames => typescript}/src/showcase.ts (100%) rename Frontend/implementations/{EpicGames => typescript}/src/stresstest.html (100%) rename Frontend/implementations/{EpicGames => typescript}/src/stresstest.ts (100%) rename Frontend/implementations/{EpicGames => typescript}/src/uiless.html (97%) rename Frontend/implementations/{EpicGames => typescript}/src/uiless.ts (100%) rename Frontend/implementations/{EpicGames => typescript}/tsconfig.json (100%) rename Frontend/implementations/{EpicGames => typescript}/webpack.common.js (100%) rename Frontend/implementations/{EpicGames => typescript}/webpack.dev.js (100%) rename Frontend/implementations/{EpicGames => typescript}/webpack.prod.js (100%) diff --git a/.github/workflows/create-gh-release.yml b/.github/workflows/create-gh-release.yml index b8cd0887..78f96a7c 100644 --- a/.github/workflows/create-gh-release.yml +++ b/.github/workflows/create-gh-release.yml @@ -48,16 +48,16 @@ jobs: working-directory: ./Frontend/ui-library run: npm run build-all - - name: Install implementations/EpicGames deps - working-directory: ./Frontend/implementations/EpicGames + - name: Install implementations/typescript deps + working-directory: ./Frontend/implementations/typescript run: npm ci - - name: NPM link frontend and ui-library into implementations/EpicGames - working-directory: ./Frontend/implementations/EpicGames + - name: NPM link frontend and ui-library into implementations/typescript + working-directory: ./Frontend/implementations/typescript run: npm link ../../library ../../ui-library - - name: Build implementations/EpicGames - working-directory: ./Frontend/implementations/EpicGames + - name: Build implementations/typescript + working-directory: ./Frontend/implementations/typescript run: npm run build-all - name: Move all content into output directory for archiving @@ -70,7 +70,7 @@ jobs: path: 'PixelStreamingInfrastructure-${{ github.ref_name }}-${{ steps.getversion.outputs.version }}' type: 'tar' filename: '${{ github.ref_name }}-${{ steps.getversion.outputs.version }}.tar.gz' - exclusions: '.git .github output Frontend/Docs Frontend/library/dist Frontend/library/types Frontend/library/node_modules Frontend/ui-library/dist Frontend/ui-library/types Frontend/ui-library/node_modules Frontend/implementations/EpicGames/node_modules' + exclusions: '.git .github output Frontend/Docs Frontend/library/dist Frontend/library/types Frontend/library/node_modules Frontend/ui-library/dist Frontend/ui-library/types Frontend/ui-library/node_modules Frontend/implementations/typescript/node_modules' - name: Archive Release .zip uses: thedoctor0/zip-release@0.7.1 diff --git a/Frontend/Docs/Customizing the Player Webpage.md b/Frontend/Docs/Customizing the Player Webpage.md index b039b968..def65fd9 100644 --- a/Frontend/Docs/Customizing the Player Webpage.md +++ b/Frontend/Docs/Customizing the Player Webpage.md @@ -1,5 +1,5 @@ ## Recommended Reading -We recommend starting with the [sample implementations](/Frontend/implementations/EpicGames/src) in order to judge how to put a new player page together and integrate it with your Unreal Engine application. Additionally, if you have cloned the Pixel Streaming Infrastructure repository and made upstream changes, you can fork the repo and make a pull request. +We recommend starting with the [sample implementations](/Frontend/implementations/typescript/src) in order to judge how to put a new player page together and integrate it with your Unreal Engine application. Additionally, if you have cloned the Pixel Streaming Infrastructure repository and made upstream changes, you can fork the repo and make a pull request. ## Using the default Player Webpage The Pixel Streaming Signalling and Web Server provides a sample player page that is already set up to stream in media from your Unreal Engine application and to send mouse, keyboard, and touch events back to the application. You can use this default player page as-is, if it meets your needs. diff --git a/Frontend/Docs/HTML Page Requirements.md b/Frontend/Docs/HTML Page Requirements.md index c79f4163..1b056ce1 100644 --- a/Frontend/Docs/HTML Page Requirements.md +++ b/Frontend/Docs/HTML Page Requirements.md @@ -1,6 +1,6 @@ ## HTML Page Requirements -Most of the HTML that will end up on the final page will actually be introduced by the Pixel Streaming application itself. Several example HTML pages are provided in the [sample implementations](/Frontend/implementations/EpicGames/src) where you can see the base page is very minimal, only serving as a space for the application to attach to and fill. The only concrete requirements are for ensuring there's sufficient space taken up by the element being attached to for the viewport to be visible on screen. In the sample implementations this is simply a `` tag set to fill the screen without scrolling. +Most of the HTML that will end up on the final page will actually be introduced by the Pixel Streaming application itself. Several example HTML pages are provided in the [sample implementations](/Frontend/implementations/typescript/src) where you can see the base page is very minimal, only serving as a space for the application to attach to and fill. The only concrete requirements are for ensuring there's sufficient space taken up by the element being attached to for the viewport to be visible on screen. In the sample implementations this is simply a `` tag set to fill the screen without scrolling. ```html @@ -20,14 +20,14 @@ Most of the HTML that will end up on the final page will actually be introduced ``` -As can be seen in the [sample implementations](/Frontend/implementations/EpicGames/src/player.ts), you must specify which element on the page the Pixel Streaming viewport is to be appended to. In the sample implementations this is typically done in the `document.body.onload` event listener and in this case appended to the `document.body` element in the DOM, causing it to fill the whole page. +As can be seen in the [sample implementations](/Frontend/implementations/typescript/src/player.ts), you must specify which element on the page the Pixel Streaming viewport is to be appended to. In the sample implementations this is typically done in the `document.body.onload` event listener and in this case appended to the `document.body` element in the DOM, causing it to fill the whole page. [//]: # (This has yet to be done) ### Player File Location and URL You have a few options for where you can place your custom HTML player page, and how client browsers can access it. -* You can create a new implementation page and place it in [`/Frontend/implementations/EpicGames/src/`](/Frontend/implementations/EpicGames/src) alongside the sample implementations. This must consist of both a base `.html` page and the `.ts` source for your application's entrypoint. This will then be accessible by appending the name of the `html` file to IP address or hostname of the computer running the Signalling Server. +* You can create a new implementation page and place it in [`/Frontend/implementations/typescript/src/`](/Frontend/implementations/typescript/src) alongside the sample implementations. This must consist of both a base `.html` page and the `.ts` source for your application's entrypoint. This will then be accessible by appending the name of the `html` file to IP address or hostname of the computer running the Signalling Server. For example, the sample `stresstest` page can be accessed on a locally-running infrastructure at `http:/127.0.0.1/stresstest.html`. * You can customize the `HomepageFile` parameter for the Signaling and Web Server, and set the path to the filename of your custom HTML player page relative to the [Frontend implementations source folder](/Frontend/implementations/src). It will then be accessible when you access the IP address or hostname of the computer running the Signaling and Web Server. * You can also use the **AdditionalRoutes** parameter for the Signaling and Web Server to customize the mapping between URL paths and local folders on your computer. diff --git a/Frontend/README.md b/Frontend/README.md index 322cf7f7..eb98c93a 100644 --- a/Frontend/README.md +++ b/Frontend/README.md @@ -5,7 +5,7 @@ The **frontend** refers to the HTML, CSS, images, and JavaScript/TypeScript code The frontend consists of two packages: 1. [lib-pixelstreamingfrontend](/Frontend/library/): the core Pixel Streaming frontend for WebRTC, settings, input, and general functionality. -2. [lib-pixelstreamingfrontend-ui](/Frontend/implementations/EpicGames): the reference UI that users can either optionally apply on top of the core library or build on top of. +2. [lib-pixelstreamingfrontend-ui](/Frontend/implementations/typescript): the reference UI that users can either optionally apply on top of the core library or build on top of. ## Docs @@ -29,7 +29,7 @@ The TypeScript libraries are provided as both an [NPM](https://www.npmjs.com/set ## Usage from source When developing your own Pixel Streaming experience the intent is you will start with this library and extend it through the use of -its public API. We have provided an example of this workflow in our [implementations/EpicGames](/Frontend/implementations/EpicGames), which is an implementation of this library. +its public API. We have provided an example of this workflow in our [implementations/typescript](/Frontend/implementations/typescript), which is an implementation of this library. ## Contributing @@ -53,7 +53,7 @@ This will produce `player.js` under the `SignallingWebServer/Public` directory - ### Making your own UI -We recommend studying [/ui-library](/Frontend/ui-library) and [player.ts](/Frontend/implementations/EpicGames/src/player.ts)/[player.html](/Frontend/implementations/EpicGames/src/player.html), or alternatively the sample React implementation in [implementations/react](/Frontend/implementations/react), then once you have copied and modified the [package.json](/Frontend/implementations/EpicGames/package.json) and `.ts` into your own `implementation/your_implementation` directory, the process is similar: +We recommend studying [/ui-library](/Frontend/ui-library) and [player.ts](/Frontend/implementations/typescript/src/player.ts)/[player.html](/Frontend/implementations/typescript/src/player.html), or alternatively the sample React implementation in [implementations/react](/Frontend/implementations/react), then once you have copied and modified the [package.json](/Frontend/implementations/typescript/package.json) and `.ts` into your own `implementation/your_implementation` directory, the process is similar: - `cd implementation/your_implementation` - `npm build-all` diff --git a/Frontend/implementations/EpicGames/docs/configuration.md b/Frontend/implementations/EpicGames/docs/configuration.md deleted file mode 100644 index 2c9f0878..00000000 --- a/Frontend/implementations/EpicGames/docs/configuration.md +++ /dev/null @@ -1,3 +0,0 @@ -# Configuration of the Frontend UI - -Todo diff --git a/Frontend/implementations/EpicGames/docs/images/frontend.jpg b/Frontend/implementations/EpicGames/docs/images/frontend.jpg deleted file mode 100644 index c52068139006ee77ec0a57a88dcdde412571b375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56393 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 a, a[aria-expanded="true"] { - color: #fff; - background: #212f44; - /*#f90;*/ -} -ul ul a { - font-size: 0.9em !important; - padding-left: 30px !important; - background: #354b6d; -} - -a[data-toggle="collapse"] { - position: relative; -} - -.dropdown-toggle::after { - display: block; - position: absolute; - top: 50%; - right: 20px; - transform: translateY(-50%); -} - -.characterBtn { - width: 100%; - cursor: pointer; -} - -.characterBtn:hover { - box-shadow: var(--democolor3) 0px 0px 0px 3px; -} - -.characterBtn:active { - box-shadow: var(--democolor5) 0px 0px 0px 3px; + +:root { + --democolor0: rgba(15, 15, 15, 1); + --democolor1: #000000; + --democolor2: #FFFFFF; + --democolor3: #0585fe; + --democolor4: rgba(26, 26, 26, 1); + --democolor5: rgba(36, 36, 36, 1); + --democolor6: rgba(53, 53, 53, 1); + --democolor7: rgba(180, 180, 180, 1); +} + +body { + margin: 0px; + padding: 0px; + height: 100vh; + width: 100vw; + background-color: var(--democolor5); + font-family: verdana,sans-serif; + color: var(--democolor7); +} + +code { + background-color: var(--democolor6); +} + +.wrapper { + display: flex; + align-items: stretch; + height: 100%; + width: 100%; +} + +.spaced-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-evenly; + row-gap: 1vh; +} + +#infocontainer { + padding: 0.5em; + font-size: large; + min-height: 15vh; + max-height: 15vh; + display: flex; + flex-direction: column; + justify-content: flex-start; +} + +#infoinstructions { + background-color: var(--democolor4); + padding: 0.5em; + font-size: medium; + flex-grow: 1; + overflow-y: auto; +} + +#content { + width: 100%; + flex-direction: column; + display: flex; + align-items: initial; + justify-content: center; +} + +#exampletitle { + padding: 1em; + display: flex; + flex-direction: column; + justify-content: center; + align-items: baseline; +} + +#sidebar { + min-width: 250px; + max-width: 250px; + background-color: var(--democolor4); + transition: all 0.3s; + font-size: small; + border-color: var(--democolor4); + border-style: solid; + border-width: 0.33em 0.33em 0em 0em; + align-content: flex-start; + display: flex; + flex-direction: column; +} + +#sidebar-tab-header { + width: 100%; +} + +#sidebar-header { + padding: 0.25rem 2rem 0.25rem 0.5rem; + background-color: var(--democolor5); + border-top: 1px solid var(--democolor3); + border-radius: 5px 5px 0px 0px; + margin-left: 1em; + width: -moz-fit-content; + width: fit-content; +} + +#sidebarContent { + max-height:100%; + overflow-y:auto; + background-color: var(--democolor5); + flex-grow: 1; + padding-left: 1em; + padding-right: 1em; +} + +#sidebar-example-selector { + background-color: var(--democolor5); + padding-top: 1em; + padding-bottom: 1em; + padding-left: 1em; +} + +#psdemotext { + font-size: large; +} + +#playercontainer { + background-color: var(--democolor0); + flex-grow: 1; + font-family: 'Montserrat', sans-serif; +} + +select { + font-size: large; + padding: 0.5em; + color: var(--democolor7); + background-color: var(--democolor0); + border: 2px solid var(--democolor6); + outline: none !important; + border-radius: 5px; +} + +select:hover { + color: var(--democolor2); +} + +a, a:hover, a:focus { + color: inherit; + text-decoration: none; + transition: all 0.3s; +} + +#sidebar ul.components { + padding: 20px 0; +} + +#sidebar ul p { + color: #fff; + padding: 10px; +} + +#sidebar ul li a { + padding: 10px; + font-size: 1.1em; + display: block; +} +#sidebar ul li a:hover { + color: #7386D5; + background: #fff; +} + +#sidebar ul li.active > a, a[aria-expanded="true"] { + color: #fff; + background: #212f44; + /*#f90;*/ +} +ul ul a { + font-size: 0.9em !important; + padding-left: 30px !important; + background: #354b6d; +} + +a[data-toggle="collapse"] { + position: relative; +} + +.dropdown-toggle::after { + display: block; + position: absolute; + top: 50%; + right: 20px; + transform: translateY(-50%); +} + +.characterBtn { + width: 100%; + cursor: pointer; +} + +.characterBtn:hover { + box-shadow: var(--democolor3) 0px 0px 0px 3px; +} + +.characterBtn:active { + box-shadow: var(--democolor5) 0px 0px 0px 3px; } \ No newline at end of file diff --git a/Frontend/implementations/EpicGames/src/assets/css/stresstest.css b/Frontend/implementations/typescript/src/assets/css/stresstest.css similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/css/stresstest.css rename to Frontend/implementations/typescript/src/assets/css/stresstest.css diff --git a/Frontend/implementations/EpicGames/src/assets/images/Aurora.jpg b/Frontend/implementations/typescript/src/assets/images/Aurora.jpg similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/Aurora.jpg rename to Frontend/implementations/typescript/src/assets/images/Aurora.jpg diff --git a/Frontend/implementations/EpicGames/src/assets/images/Crunch.jpg b/Frontend/implementations/typescript/src/assets/images/Crunch.jpg similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/Crunch.jpg rename to Frontend/implementations/typescript/src/assets/images/Crunch.jpg diff --git a/Frontend/implementations/EpicGames/src/assets/images/favicon-16x16.png b/Frontend/implementations/typescript/src/assets/images/favicon-16x16.png similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/favicon-16x16.png rename to Frontend/implementations/typescript/src/assets/images/favicon-16x16.png diff --git a/Frontend/implementations/EpicGames/src/assets/images/favicon-32x32.png b/Frontend/implementations/typescript/src/assets/images/favicon-32x32.png similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/favicon-32x32.png rename to Frontend/implementations/typescript/src/assets/images/favicon-32x32.png diff --git a/Frontend/implementations/EpicGames/src/assets/images/favicon-96x96.png b/Frontend/implementations/typescript/src/assets/images/favicon-96x96.png similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/favicon-96x96.png rename to Frontend/implementations/typescript/src/assets/images/favicon-96x96.png diff --git a/Frontend/implementations/EpicGames/src/assets/images/favicon.ico b/Frontend/implementations/typescript/src/assets/images/favicon.ico similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/favicon.ico rename to Frontend/implementations/typescript/src/assets/images/favicon.ico diff --git a/Frontend/implementations/EpicGames/src/assets/images/favicon.png b/Frontend/implementations/typescript/src/assets/images/favicon.png similarity index 100% rename from Frontend/implementations/EpicGames/src/assets/images/favicon.png rename to Frontend/implementations/typescript/src/assets/images/favicon.png diff --git a/Frontend/implementations/EpicGames/src/login.html b/Frontend/implementations/typescript/src/login.html similarity index 100% rename from Frontend/implementations/EpicGames/src/login.html rename to Frontend/implementations/typescript/src/login.html diff --git a/Frontend/implementations/EpicGames/src/login.ts b/Frontend/implementations/typescript/src/login.ts similarity index 100% rename from Frontend/implementations/EpicGames/src/login.ts rename to Frontend/implementations/typescript/src/login.ts diff --git a/Frontend/implementations/EpicGames/src/player.html b/Frontend/implementations/typescript/src/player.html similarity index 98% rename from Frontend/implementations/EpicGames/src/player.html rename to Frontend/implementations/typescript/src/player.html index 5b35f64f..f1115af9 100644 --- a/Frontend/implementations/EpicGames/src/player.html +++ b/Frontend/implementations/typescript/src/player.html @@ -1,28 +1,28 @@ - - - - - - - - - - - - - - - - - - - - Pixel Streaming - - - - - - - + + + + + + + + + + + + + + + + + + + + Pixel Streaming + + + + + + + \ No newline at end of file diff --git a/Frontend/implementations/EpicGames/src/player.ts b/Frontend/implementations/typescript/src/player.ts similarity index 97% rename from Frontend/implementations/EpicGames/src/player.ts rename to Frontend/implementations/typescript/src/player.ts index a36eb7d6..81430e6f 100644 --- a/Frontend/implementations/EpicGames/src/player.ts +++ b/Frontend/implementations/typescript/src/player.ts @@ -1,24 +1,24 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -import { Config, PixelStreaming } from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.3'; -import { Application, PixelStreamingApplicationStyle } from '@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3'; -const PixelStreamingApplicationStyles = - new PixelStreamingApplicationStyle(); -PixelStreamingApplicationStyles.applyStyleSheet(); - -document.body.onload = function() { - // Example of how to set the logger level - // Logger.SetLoggerVerbosity(10); - - // Create a config object - const config = new Config({ useUrlParams: true }); - - // Create a Native DOM delegate instance that implements the Delegate interface class - const stream = new PixelStreaming(config); - const application = new Application({ - stream, - onColorModeChanged: (isLightMode) => PixelStreamingApplicationStyles.setColorMode(isLightMode) - }); - // document.getElementById("centrebox").appendChild(application.rootElement); - document.body.appendChild(application.rootElement); -} +// Copyright Epic Games, Inc. All Rights Reserved. + +import { Config, PixelStreaming } from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.3'; +import { Application, PixelStreamingApplicationStyle } from '@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3'; +const PixelStreamingApplicationStyles = + new PixelStreamingApplicationStyle(); +PixelStreamingApplicationStyles.applyStyleSheet(); + +document.body.onload = function() { + // Example of how to set the logger level + // Logger.SetLoggerVerbosity(10); + + // Create a config object + const config = new Config({ useUrlParams: true }); + + // Create a Native DOM delegate instance that implements the Delegate interface class + const stream = new PixelStreaming(config); + const application = new Application({ + stream, + onColorModeChanged: (isLightMode) => PixelStreamingApplicationStyles.setColorMode(isLightMode) + }); + // document.getElementById("centrebox").appendChild(application.rootElement); + document.body.appendChild(application.rootElement); +} diff --git a/Frontend/implementations/EpicGames/src/showcase.html b/Frontend/implementations/typescript/src/showcase.html similarity index 97% rename from Frontend/implementations/EpicGames/src/showcase.html rename to Frontend/implementations/typescript/src/showcase.html index ed6142d4..a4684592 100644 --- a/Frontend/implementations/EpicGames/src/showcase.html +++ b/Frontend/implementations/typescript/src/showcase.html @@ -1,61 +1,61 @@ - - - - - Pixel Streaming Showcase - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- -
- -
-
- Information here -
-
- -
-
- - - + + + + + Pixel Streaming Showcase + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ Information here +
+
+ +
+
+ + + diff --git a/Frontend/implementations/EpicGames/src/showcase.ts b/Frontend/implementations/typescript/src/showcase.ts similarity index 100% rename from Frontend/implementations/EpicGames/src/showcase.ts rename to Frontend/implementations/typescript/src/showcase.ts diff --git a/Frontend/implementations/EpicGames/src/stresstest.html b/Frontend/implementations/typescript/src/stresstest.html similarity index 100% rename from Frontend/implementations/EpicGames/src/stresstest.html rename to Frontend/implementations/typescript/src/stresstest.html diff --git a/Frontend/implementations/EpicGames/src/stresstest.ts b/Frontend/implementations/typescript/src/stresstest.ts similarity index 100% rename from Frontend/implementations/EpicGames/src/stresstest.ts rename to Frontend/implementations/typescript/src/stresstest.ts diff --git a/Frontend/implementations/EpicGames/src/uiless.html b/Frontend/implementations/typescript/src/uiless.html similarity index 97% rename from Frontend/implementations/EpicGames/src/uiless.html rename to Frontend/implementations/typescript/src/uiless.html index d7b36b34..da6079fb 100644 --- a/Frontend/implementations/EpicGames/src/uiless.html +++ b/Frontend/implementations/typescript/src/uiless.html @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - Pixel Streaming - - - - -
-
-
Click to play
-
- - + + + + + + + + + + + + + + + + + + + + + + Pixel Streaming + + + + +
+
+
Click to play
+
+ + \ No newline at end of file diff --git a/Frontend/implementations/EpicGames/src/uiless.ts b/Frontend/implementations/typescript/src/uiless.ts similarity index 100% rename from Frontend/implementations/EpicGames/src/uiless.ts rename to Frontend/implementations/typescript/src/uiless.ts diff --git a/Frontend/implementations/EpicGames/tsconfig.json b/Frontend/implementations/typescript/tsconfig.json similarity index 100% rename from Frontend/implementations/EpicGames/tsconfig.json rename to Frontend/implementations/typescript/tsconfig.json diff --git a/Frontend/implementations/EpicGames/webpack.common.js b/Frontend/implementations/typescript/webpack.common.js similarity index 100% rename from Frontend/implementations/EpicGames/webpack.common.js rename to Frontend/implementations/typescript/webpack.common.js diff --git a/Frontend/implementations/EpicGames/webpack.dev.js b/Frontend/implementations/typescript/webpack.dev.js similarity index 100% rename from Frontend/implementations/EpicGames/webpack.dev.js rename to Frontend/implementations/typescript/webpack.dev.js diff --git a/Frontend/implementations/EpicGames/webpack.prod.js b/Frontend/implementations/typescript/webpack.prod.js similarity index 100% rename from Frontend/implementations/EpicGames/webpack.prod.js rename to Frontend/implementations/typescript/webpack.prod.js diff --git a/Frontend/library/readme.md b/Frontend/library/readme.md index 4caa1b03..bf5a0e07 100644 --- a/Frontend/library/readme.md +++ b/Frontend/library/readme.md @@ -2,7 +2,7 @@ The core library for the browser/client side of Pixel Streaming experiences. **This library contains no UI.** -See [lib-pixelstreamingfrontend-ui](/Frontend/implementations/EpicGames) for an example of how to build UI on top of this library. +See [lib-pixelstreamingfrontend-ui](/Frontend/implementations/typescript) for an example of how to build UI on top of this library. ### Key features - Create a websocket connection to communicate with the signalling server. diff --git a/SignallingWebServer/platform_scripts/bash/setup.sh b/SignallingWebServer/platform_scripts/bash/setup.sh index 58cb1b85..91bda314 100755 --- a/SignallingWebServer/platform_scripts/bash/setup.sh +++ b/SignallingWebServer/platform_scripts/bash/setup.sh @@ -106,7 +106,7 @@ function setup_frontend() { ../../SignallingWebServer/platform_scripts/bash/node/bin/npm run build-dev popd - pushd ${BASH_LOCATION}/../../../Frontend/implementations/EpicGames > /dev/null + pushd ${BASH_LOCATION}/../../../Frontend/implementations/typescript > /dev/null ../../../SignallingWebServer/platform_scripts/bash/node/bin/npm install ../../../SignallingWebServer/platform_scripts/bash/node/bin/npm link ../../library ../../ui-library ../../../SignallingWebServer/platform_scripts/bash/node/bin/npm run build-dev diff --git a/SignallingWebServer/platform_scripts/cmd/setup_frontend.bat b/SignallingWebServer/platform_scripts/cmd/setup_frontend.bat index b2971e4f..c8767f76 100644 --- a/SignallingWebServer/platform_scripts/cmd/setup_frontend.bat +++ b/SignallingWebServer/platform_scripts/cmd/setup_frontend.bat @@ -62,10 +62,10 @@ popd echo End of build PS frontend lib step. - @Rem Do npm install in the Frontend\implementations\EpicGames directory (note we use start because that loads PATH) + @Rem Do npm install in the Frontend\implementations\typescript directory (note we use start because that loads PATH) echo ---------------------------- echo Building Epic Games reference frontend... - pushd %CD%\Frontend\implementations\EpicGames + pushd %CD%\Frontend\implementations\typescript call ..\..\..\SignallingWebServer\platform_scripts\cmd\node\npm install call ..\..\..\SignallingWebServer\platform_scripts\cmd\node\npm link ../../library ../../ui-library call ..\..\..\SignallingWebServer\platform_scripts\cmd\node\npm run build-dev From aa13c254fd88a4a71b19c4158d88635c12cb461d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:24:16 +1000 Subject: [PATCH 10/22] Ensure touch is relative to absolute location of parent rect (#316) (cherry picked from commit 4e370e5439dc1583317acedcd78f172ed9cf87e9) Co-authored-by: Michael Stopa --- Frontend/library/src/Inputs/TouchController.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Frontend/library/src/Inputs/TouchController.ts b/Frontend/library/src/Inputs/TouchController.ts index 83aec684..e2520933 100644 --- a/Frontend/library/src/Inputs/TouchController.ts +++ b/Frontend/library/src/Inputs/TouchController.ts @@ -152,16 +152,15 @@ export class TouchController implements ITouchController { if (!this.videoElementProvider.isVideoReady()) { return; } - const videoElementParent = - this.videoElementProvider.getVideoParentElement(); + const offset = this.videoElementProvider.getVideoParentElement().getBoundingClientRect(); const toStreamerHandlers = this.toStreamerMessagesProvider.toStreamerHandlers; for (let t = 0; t < touches.length; t++) { const numTouches = 1; // the number of touches to be sent this message const touch = touches[t]; - const x = touch.clientX - videoElementParent.offsetLeft; - const y = touch.clientY - videoElementParent.offsetTop; + const x = touch.clientX - offset.left; + const y = touch.clientY - offset.top; Logger.Log( Logger.GetStackTrace(), `F${this.fingerIds.get(touch.identifier)}=(${x}, ${y})`, From b3f966bc8eb5afb55fdea05d5874ad43179e046a Mon Sep 17 00:00:00 2001 From: Joel-Patteson <69024767+Joel-Patteson@users.noreply.github.com> Date: Sat, 22 Jul 2023 21:43:18 +1000 Subject: [PATCH 11/22] Fix TypeError: console.warning is not a function (#325) Co-authored-by: Joel Patteson --- SignallingWebServer/cirrus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SignallingWebServer/cirrus.js b/SignallingWebServer/cirrus.js index 9abe3759..5dc2b03e 100644 --- a/SignallingWebServer/cirrus.js +++ b/SignallingWebServer/cirrus.js @@ -476,7 +476,7 @@ function forwardStreamerMessageToPlayer(streamer, msg) { logForward(streamer.id, playerId, msg); player.sendTo(msg); } else { - console.warning("No playerId specified, cannot forward message: %s", msg); + console.warn("No playerId specified, cannot forward message: %s", msg); } } From 5fcd53614eec7e0cfd9f53bdc0f87c5099a5567a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Jul 2023 10:08:43 +1000 Subject: [PATCH 12/22] Properly inject new params into SDP to get stereo back on Chrome (#332) --- .../PeerConnectionController/PeerConnectionController.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts b/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts index 1ba096f8..776562d1 100644 --- a/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts +++ b/Frontend/library/src/PeerConnectionController/PeerConnectionController.ts @@ -207,16 +207,13 @@ export class PeerConnectionController { * @returns A modified Session Descriptor */ mungeSDP(sdp: string, useMic: boolean) { - const mungedSDP = sdp; - mungedSDP.replace( + let mungedSDP = sdp.replace( /(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm, '$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r\n' ); - let audioSDP = ''; - // set max bitrate to highest bitrate Opus supports - audioSDP += 'maxaveragebitrate=510000;'; + let audioSDP = 'maxaveragebitrate=510000;'; if (useMic) { // set the max capture rate to 48khz (so we can send high quality audio from mic) @@ -232,7 +229,7 @@ export class PeerConnectionController { audioSDP += 'useinbandfec=1'; // We use the line 'useinbandfec=1' (which Opus uses) to set our Opus specific audio parameters. - mungedSDP.replace('useinbandfec=1', audioSDP); + mungedSDP = mungedSDP.replace('useinbandfec=1', audioSDP); return mungedSDP; } From 5b250b7148aaebd827ff6c6e76e77802daf40c0f Mon Sep 17 00:00:00 2001 From: William Belcher Date: Thu, 27 Jul 2023 16:41:26 +1000 Subject: [PATCH 13/22] Refactor SignallingWebServer to a single docker file (#337) for UE5.3 (#339) --- SignallingWebServer/Dockerfile | 13 ++++--- .../platform_scripts/bash/Dockerfile | 35 ------------------- .../bash/docker-build-cirrus.sh | 6 ++-- .../bash/docker-start-cirrus.sh | 2 +- 4 files changed, 14 insertions(+), 42 deletions(-) delete mode 100644 SignallingWebServer/platform_scripts/bash/Dockerfile diff --git a/SignallingWebServer/Dockerfile b/SignallingWebServer/Dockerfile index 685badbe..70d649c3 100644 --- a/SignallingWebServer/Dockerfile +++ b/SignallingWebServer/Dockerfile @@ -1,25 +1,30 @@ # Use the current Long Term Support (LTS) version of Node.js FROM node:lts - # Copy the signalling server and frontend source code from the build context COPY /SignallingWebServer /SignallingWebServer COPY /Frontend /Frontend - # Install the dependencies for the signalling server and build the frontend RUN SignallingWebServer/platform_scripts/bash/setup.sh --build - # Expose TCP ports 80 and 443 for player WebSocket connections and web server HTTP(S) access EXPOSE 80 EXPOSE 443 # Expose TCP port 8888 for streamer WebSocket connections EXPOSE 8888 +EXPOSE 8888/udp # Expose TCP port 8889 for connections from the SFU EXPOSE 8889 +# Expose TCP port 19302 for connections to Google's stun server +EXPOSE 19302 + # Expose TCP port 9999 for connections from the Matchmaker EXPOSE 9999 +# Expose TCP port 19302 for connections from coturn +EXPOSE 3478 +EXPOSE 3479 + # Set the signalling server as the container's entrypoint -ENTRYPOINT ["/usr/local/bin/node", "/SignallingWebServer/cirrus.js"] +ENTRYPOINT ["/usr/local/bin/node", "/SignallingWebServer/cirrus.js"] \ No newline at end of file diff --git a/SignallingWebServer/platform_scripts/bash/Dockerfile b/SignallingWebServer/platform_scripts/bash/Dockerfile deleted file mode 100644 index 48b3d23e..00000000 --- a/SignallingWebServer/platform_scripts/bash/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# Copyright Epic Games, Inc. All Rights Reserved. - -FROM node:latest - -# Copy the signalling server source code to the Docker build context -COPY . /opt/SignallingWebServer - -# Install the dependencies for the signalling server -WORKDIR /opt/SignallingWebServer -RUN npm install . - -# Expose TCP port 80 for player WebSocket connections and web server HTTP access -EXPOSE 80 - -# Expose TCP port 8888 for streamer WebSocket connections -EXPOSE 8888 -EXPOSE 8888/udp - -# Expose port for SFU connections -EXPOSE 8889 - -# Google stun -EXPOSE 19302 - -# Matchmaker -EXPOSE 9999 - -# Turn coturn -EXPOSE 3478 -EXPOSE 3479 - -# Set the signalling server as the container's entrypoint -ENTRYPOINT ["/usr/local/bin/node", "/opt/SignallingWebServer/cirrus.js"] - diff --git a/SignallingWebServer/platform_scripts/bash/docker-build-cirrus.sh b/SignallingWebServer/platform_scripts/bash/docker-build-cirrus.sh index 6c9d1c96..9474f80d 100755 --- a/SignallingWebServer/platform_scripts/bash/docker-build-cirrus.sh +++ b/SignallingWebServer/platform_scripts/bash/docker-build-cirrus.sh @@ -1,7 +1,9 @@ #!/bin/bash # Copyright Epic Games, Inc. All Rights Reserved. +BASH_LOCATION=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +pushd "${BASH_LOCATION}" > /dev/null # When run from SignallingWebServer/platform_scripts/bash, this uses the SignallingWebServer directory # as the build context so the Cirrus files can be successfully copied into the container image -docker build --network=host -t 'cirrus-webserver:latest' -f ./Dockerfile ../.. - +docker build --network=host -t 'cirrus-webserver:latest' -f "${BASH_LOCATION}/../../Dockerfile" "${BASH_LOCATION}/../../.." \ No newline at end of file diff --git a/SignallingWebServer/platform_scripts/bash/docker-start-cirrus.sh b/SignallingWebServer/platform_scripts/bash/docker-start-cirrus.sh index 7bc6c0a5..9eb0f4e3 100755 --- a/SignallingWebServer/platform_scripts/bash/docker-start-cirrus.sh +++ b/SignallingWebServer/platform_scripts/bash/docker-start-cirrus.sh @@ -27,5 +27,5 @@ else peerConnectionOptions="{\""iceServers\"":[{\""urls\"":[\""stun:"${stunserver}"\""]}]}" fi -docker run --name cirrus_latest --network host --rm --entrypoint /usr/local/bin/node cirrus-webserver /opt/SignallingWebServer/cirrus.js --peerConnectionOptions="${peerConnectionOptions}" --publicIp="${publicip}" +docker run --name cirrus_latest --network host --rm --entrypoint /usr/local/bin/node cirrus-webserver /SignallingWebServer/cirrus.js --peerConnectionOptions="${peerConnectionOptions}" --publicIp="${publicip}" From 81e065f84e0f122832a9b4aec0476bebafed005c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:07:12 +1000 Subject: [PATCH 14/22] Consume the context menu event instead of sending a mouse up (#356) (cherry picked from commit e4946abba2b50bcb8fca34362bbe323bc2723731) Co-authored-by: Michael Stopa --- .../library/src/Inputs/HoveringMouseEvents.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/Frontend/library/src/Inputs/HoveringMouseEvents.ts b/Frontend/library/src/Inputs/HoveringMouseEvents.ts index 6526dffd..0aa7f98b 100644 --- a/Frontend/library/src/Inputs/HoveringMouseEvents.ts +++ b/Frontend/library/src/Inputs/HoveringMouseEvents.ts @@ -86,6 +86,7 @@ export class HoveringMouseEvents implements IMouseEvents { if (!this.mouseController.videoElementProvider.isVideoReady()) { return; } + Logger.Log(Logger.GetStackTrace(), 'onMouse Up', 6); const coord = this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned( mouseEvent.offsetX, @@ -102,25 +103,13 @@ export class HoveringMouseEvents implements IMouseEvents { } /** - * Handle the mouse context menu event, sends the mouse data to the UE Instance + * Consumes the mouse context event. The UE instance has no equivalent and doesn't need to be informed. * @param mouseEvent - Mouse Event */ handleContextMenu(mouseEvent: MouseEvent) { if (!this.mouseController.videoElementProvider.isVideoReady()) { return; } - const coord = - this.mouseController.coordinateConverter.normalizeAndQuantizeUnsigned( - mouseEvent.offsetX, - mouseEvent.offsetY - ); - const toStreamerHandlers = - this.mouseController.toStreamerMessagesProvider.toStreamerHandlers; - toStreamerHandlers.get('MouseUp')([ - mouseEvent.button, - coord.x, - coord.y - ]); mouseEvent.preventDefault(); } @@ -177,6 +166,7 @@ export class HoveringMouseEvents implements IMouseEvents { if (!this.mouseController.videoElementProvider.isVideoReady()) { return; } + Logger.Log(Logger.GetStackTrace(), 'onMouse press', 6); this.mouseController.pressMouseButtons( mouseEvent.buttons, mouseEvent.offsetX, @@ -192,6 +182,7 @@ export class HoveringMouseEvents implements IMouseEvents { if (!this.mouseController.videoElementProvider.isVideoReady()) { return; } + Logger.Log(Logger.GetStackTrace(), 'onMouse release', 6); this.mouseController.releaseMouseButtons( mouseEvent.buttons, mouseEvent.offsetX, From a907d2b926163c3b0b8ae83019a523d0e56abb26 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:28:53 +1000 Subject: [PATCH 15/22] Bump frontend /library version to 0.0.3 in 5.3 Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- Frontend/library/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/library/package.json b/Frontend/library/package.json index 30a70c9a..fcb9c9ae 100644 --- a/Frontend/library/package.json +++ b/Frontend/library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3", - "version": "0.0.2", + "version": "0.0.3", "description": "Frontend library for Unreal Engine 5.3 Pixel Streaming", "main": "dist/lib-pixelstreamingfrontend.js", "module": "dist/lib-pixelstreamingfrontend.esm.js", From 75cb711348486462c4766a428f7c99bc86f52e36 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:29:59 +1000 Subject: [PATCH 16/22] Bump /ui-library version to 0.0.4 in 5.3 Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- Frontend/ui-library/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/ui-library/package.json b/Frontend/ui-library/package.json index b452bc90..88ddffdb 100644 --- a/Frontend/ui-library/package.json +++ b/Frontend/ui-library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.3", + "version": "0.0.4", "description": "Reference frontend UI library for Unreal Engine 5.3 Pixel Streaming - gives the stock look and feel.", "main": "dist/lib-pixelstreamingfrontend-ui.js", "module": "dist/lib-pixelstreamingfrontend-ui.esm.js", From 301b624806b47a6b7c497213b470f27c37752af9 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:36:08 +1000 Subject: [PATCH 17/22] Lock github action to NodeJS 18.17.0 Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- .github/workflows/publish-library-to-npm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-library-to-npm.yml b/.github/workflows/publish-library-to-npm.yml index 03779d99..c21d955a 100644 --- a/.github/workflows/publish-library-to-npm.yml +++ b/.github/workflows/publish-library-to-npm.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: '18.17.0' registry-url: 'https://registry.npmjs.org' - run: npm ci - run: npm run build From c0b941acf7c67bb66f24a98a8a3f28ea50cb3f80 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:36:31 +1000 Subject: [PATCH 18/22] Update publish-ui-library-to-npm.yml Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- .github/workflows/publish-ui-library-to-npm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-ui-library-to-npm.yml b/.github/workflows/publish-ui-library-to-npm.yml index d421cbaf..12a6387d 100644 --- a/.github/workflows/publish-ui-library-to-npm.yml +++ b/.github/workflows/publish-ui-library-to-npm.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: '18.17.0' registry-url: 'https://registry.npmjs.org' - run: npm ci - run: npm run build From 53bf8deececba9217279231333b0f8ae51eca27d Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:37:56 +1000 Subject: [PATCH 19/22] Bump /ui-library to 0.0.5 in UE5.3 Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- Frontend/ui-library/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/ui-library/package.json b/Frontend/ui-library/package.json index 88ddffdb..a879e2ea 100644 --- a/Frontend/ui-library/package.json +++ b/Frontend/ui-library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.4", + "version": "0.0.5", "description": "Reference frontend UI library for Unreal Engine 5.3 Pixel Streaming - gives the stock look and feel.", "main": "dist/lib-pixelstreamingfrontend-ui.js", "module": "dist/lib-pixelstreamingfrontend-ui.esm.js", From 7f8a86435e7808e9696e59bd4bad02ea12f37378 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Tue, 12 Sep 2023 08:27:19 +1000 Subject: [PATCH 20/22] Change /ui-library version back to 0.0.4 and update package-lock.json --- Frontend/ui-library/package-lock.json | 3624 ++++++++++++++++++++++++- Frontend/ui-library/package.json | 6 +- 2 files changed, 3609 insertions(+), 21 deletions(-) diff --git a/Frontend/ui-library/package-lock.json b/Frontend/ui-library/package-lock.json index bb09cf46..98465273 100644 --- a/Frontend/ui-library/package-lock.json +++ b/Frontend/ui-library/package-lock.json @@ -1,8 +1,3590 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.3", - "lockfileVersion": 1, + "version": "0.0.5", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", + "version": "0.0.5", + "license": "MIT", + "dependencies": { + "jss": "^10.9.2", + "jss-plugin-camel-case": "^10.9.2", + "jss-plugin-global": "^10.9.2" + }, + "devDependencies": { + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.3", + "@typescript-eslint/eslint-plugin": "^5.16.0", + "@typescript-eslint/parser": "^5.16.0", + "cspell": "^4.1.0", + "eslint": "^8.11.0", + "prettier": "2.8.3", + "ts-loader": "^9.4.2", + "typedoc": "^0.23.24", + "typescript": "^4.9.4", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.1" + }, + "peerDependencies": { + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.2" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspell/dict-aws": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-1.0.14.tgz", + "integrity": "sha512-K21CfB4ZpKYwwDQiPfic2zJA/uxkbsd4IQGejEvDAhE3z8wBs6g6BwwqdVO767M9NgZqc021yAVpr79N5pWe3w==", + "dev": true + }, + "node_modules/@cspell/dict-bash": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-1.0.18.tgz", + "integrity": "sha512-kJIqQ+FD2TCSgaaP5XLEDgy222+pVWTc+VhveNO++gnTWU3BCVjkD5LjfW7g/CmGONnz+nwXDueWspProaSdJw==", + "dev": true + }, + "node_modules/@cspell/dict-companies": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-1.0.40.tgz", + "integrity": "sha512-Aw07qiTroqSST2P5joSrC4uOA05zTXzI2wMb+me3q4Davv1D9sCkzXY0TGoC2vzhNv5ooemRi9KATGaBSdU1sw==", + "dev": true + }, + "node_modules/@cspell/dict-cpp": { + "version": "1.1.40", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-1.1.40.tgz", + "integrity": "sha512-sscfB3woNDNj60/yGXAdwNtIRWZ89y35xnIaJVDMk5TPMMpaDvuk0a34iOPIq0g4V+Y8e3RyAg71SH6ADwSjGw==", + "dev": true + }, + "node_modules/@cspell/dict-cryptocurrencies": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-1.0.10.tgz", + "integrity": "sha512-47ABvDJOkaST/rXipNMfNvneHUzASvmL6K/CbOFpYKfsd0x23Jc9k1yaOC7JAm82XSC/8a7+3Yu+Fk2jVJNnsA==", + "dev": true + }, + "node_modules/@cspell/dict-csharp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-1.0.11.tgz", + "integrity": "sha512-nub+ZCiTgmT87O+swI+FIAzNwaZPWUGckJU4GN402wBq420V+F4ZFqNV7dVALJrGaWH7LvADRtJxi6cZVHJKeA==", + "dev": true + }, + "node_modules/@cspell/dict-css": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-1.0.13.tgz", + "integrity": "sha512-HU8RbFRoGanFH85mT01Ot/Ay48ixr/gG25VPLtdq56QTrmPsw79gxYm/5Qay16eQbpoPIxaj5CAWNam+DX4GbA==", + "dev": true + }, + "node_modules/@cspell/dict-django": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-1.0.26.tgz", + "integrity": "sha512-mn9bd7Et1L2zuibc08GVHTiD2Go3/hdjyX5KLukXDklBkq06r+tb0OtKtf1zKodtFDTIaYekGADhNhA6AnKLkg==", + "dev": true + }, + "node_modules/@cspell/dict-dotnet": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-1.0.32.tgz", + "integrity": "sha512-9H9vXrgJB4KF8xsyTToXO53cXD33iyfrpT4mhCds+YLUw3P3x3E9myszgJzshnrxYBvQZ+QMII57Qr6SjZVk4Q==", + "dev": true + }, + "node_modules/@cspell/dict-elixir": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-1.0.26.tgz", + "integrity": "sha512-hz1yETUiRJM7yjN3mITSnxcmZaEyaBbyJhpZPpg+cKUil+xhHeZ2wwfbRc83QHGmlqEuDWbdCFqKSpCDJYpYhg==", + "dev": true + }, + "node_modules/@cspell/dict-en_us": { + "version": "1.2.45", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-1.2.45.tgz", + "integrity": "sha512-UPwR4rfiJCxnS+Py+EK9E4AUj3aPZE4p/yBRSHN+5aBQConlI0lLDtMceH5wlupA/sQTU1ERZGPJA9L96jVSyQ==", + "dev": true + }, + "node_modules/@cspell/dict-en-gb": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", + "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", + "dev": true + }, + "node_modules/@cspell/dict-filetypes": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-1.1.8.tgz", + "integrity": "sha512-EllahNkhzvLWo0ptwu0l3oEeAJOQSUpZnDfnKRIh6mJVehuSovNHwA9vrdZ8jBUjuqcfaN2e7c32zN0D/qvWJQ==", + "dev": true + }, + "node_modules/@cspell/dict-fonts": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-1.0.14.tgz", + "integrity": "sha512-VhIX+FVYAnqQrOuoFEtya6+H72J82cIicz9QddgknsTqZQ3dvgp6lmVnsQXPM3EnzA8n1peTGpLDwHzT7ociLA==", + "dev": true + }, + "node_modules/@cspell/dict-fullstack": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-1.0.39.tgz", + "integrity": "sha512-Mbi+zWdiP9yzL+X4YD9Tgcm5YQ95Ql+Y3vF2LRnOY6g2QWaijTRN1rgksVuxzpFqHi//+bx2uoUb0XEKBYDi8g==", + "dev": true + }, + "node_modules/@cspell/dict-golang": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-1.1.24.tgz", + "integrity": "sha512-qq3Cjnx2U1jpeWAGJL1GL0ylEhUMqyaR36Xij6Y6Aq4bViCRp+HRRqk0x5/IHHbOrti45h3yy7ii1itRFo+Xkg==", + "dev": true + }, + "node_modules/@cspell/dict-haskell": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-1.0.13.tgz", + "integrity": "sha512-kvl8T84cnYRPpND/P3D86P6WRSqebsbk0FnMfy27zo15L5MLAb3d3MOiT1kW3vEWfQgzUD7uddX/vUiuroQ8TA==", + "dev": true + }, + "node_modules/@cspell/dict-html": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-1.1.9.tgz", + "integrity": "sha512-vvnYia0tyIS5Fdoz+gEQm77MGZZE66kOJjuNpIYyRHCXFAhWdYz3SmkRm6YKJSWSvuO+WBJYTKDvkOxSh3Fx/w==", + "dev": true + }, + "node_modules/@cspell/dict-html-symbol-entities": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-1.0.23.tgz", + "integrity": "sha512-PV0UBgcBFbBLf/m1wfkVMM8w96kvfHoiCGLWO6BR3Q9v70IXoE4ae0+T+f0CkxcEkacMqEQk/I7vuE9MzrjaNw==", + "dev": true + }, + "node_modules/@cspell/dict-java": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-1.0.23.tgz", + "integrity": "sha512-LcOg9srYLDoNGd8n3kbfDBlZD+LOC9IVcnFCdua1b/luCHNVmlgBx7e677qPu7olpMYOD5TQIVW2OmM1+/6MFA==", + "dev": true + }, + "node_modules/@cspell/dict-latex": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-1.0.25.tgz", + "integrity": "sha512-cEgg91Migqcp1SdVV7dUeMxbPDhxdNo6Fgq2eygAXQjIOFK520FFvh/qxyBvW90qdZbIRoU2AJpchyHfGuwZFA==", + "dev": true + }, + "node_modules/@cspell/dict-lorem-ipsum": { + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-1.0.22.tgz", + "integrity": "sha512-yqzspR+2ADeAGUxLTfZ4pXvPl7FmkENMRcGDECmddkOiuEwBCWMZdMP5fng9B0Q6j91hQ8w9CLvJKBz10TqNYg==", + "dev": true + }, + "node_modules/@cspell/dict-lua": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-1.0.16.tgz", + "integrity": "sha512-YiHDt8kmHJ8nSBy0tHzaxiuitYp+oJ66ffCYuFWTNB3//Y0SI4OGHU3omLsQVeXIfCeVrO4DrVvRDoCls9B5zQ==", + "dev": true + }, + "node_modules/@cspell/dict-node": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-1.0.12.tgz", + "integrity": "sha512-RPNn/7CSkflAWk0sbSoOkg0ORrgBARUjOW3QjB11KwV1gSu8f5W/ij/S50uIXtlrfoBLqd4OyE04jyON+g/Xfg==", + "dev": true + }, + "node_modules/@cspell/dict-npm": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-1.0.16.tgz", + "integrity": "sha512-RwkuZGcYBxL3Yux3cSG/IOWGlQ1e9HLCpHeyMtTVGYKAIkFAVUnGrz20l16/Q7zUG7IEktBz5O42kAozrEnqMQ==", + "dev": true + }, + "node_modules/@cspell/dict-php": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-1.0.25.tgz", + "integrity": "sha512-RoBIP5MRdByyPaXcznZMfOY1JdCMYPPLua5E9gkq0TJO7bX5mC9hyAKfYBSWVQunZydd82HZixjb5MPkDFU1uw==", + "dev": true + }, + "node_modules/@cspell/dict-powershell": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-1.0.19.tgz", + "integrity": "sha512-zF/raM/lkhXeHf4I43OtK0gP9rBeEJFArscTVwLWOCIvNk21MJcNoTYoaGw+c056+Q+hJL0psGLO7QN+mxYH1A==", + "dev": true + }, + "node_modules/@cspell/dict-python": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-1.0.38.tgz", + "integrity": "sha512-KuyOQaby9NID/pn7EkXilpUxjVIvvyLzhr7BPsDS6FcvUE8Yhss6bJowEDHSv6pa+W2387phoqbDf2rTicquAA==", + "dev": true + }, + "node_modules/@cspell/dict-ruby": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-1.0.15.tgz", + "integrity": "sha512-I76hJA///lc1pgmDTGUFHN/O8KLIZIU/8TgIYIGI6Ix/YzSEvWNdQYbANn6JbCynS0X+7IbZ2Ft+QqvmGtIWuA==", + "dev": true + }, + "node_modules/@cspell/dict-rust": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-1.0.23.tgz", + "integrity": "sha512-lR4boDzs79YD6+30mmiSGAMMdwh7HTBAPUFSB0obR3Kidibfc3GZ+MHWZXay5dxZ4nBKM06vyjtanF9VJ8q1Iw==", + "dev": true + }, + "node_modules/@cspell/dict-scala": { + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-1.0.21.tgz", + "integrity": "sha512-5V/R7PRbbminTpPS3ywgdAalI9BHzcEjEj9ug4kWYvBIGwSnS7T6QCFCiu+e9LvEGUqQC+NHgLY4zs1NaBj2vA==", + "dev": true + }, + "node_modules/@cspell/dict-software-terms": { + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-1.0.48.tgz", + "integrity": "sha512-pfF3Ys2gRffu5ElqkH7FQMDMi/iZMyOzpGMb3FSH0PJ2AnRQ5rRNWght1h2L36YxvXl0mWVaFrrfwiOyRIc8ZQ==", + "dev": true + }, + "node_modules/@cspell/dict-typescript": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-1.0.20.tgz", + "integrity": "sha512-yIuGeeZtQA2gqpGefGjZqBl8iGJpIYWz0QzDqsscNi2qfSnLsbjM0RkRbTehM8y9gGGe7xfgUP5adxceJa5Krg==", + "dev": true + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3/-/lib-pixelstreamingfrontend-ue5.3-0.0.3.tgz", + "integrity": "sha512-cKlJWbDNkX2dafupmyCcV8eLMZ3NZbL07giSMRbBGPEBmW5xSiWBK+htfmkuVm8ycRucEc8VlRWUP5g8S2e8Bw==", + "dev": true, + "dependencies": { + "sdp": "^3.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/eslint": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", + "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/type-utils": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", + "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", + "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", + "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", + "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", + "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", + "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", + "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", + "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", + "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", + "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001451", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", + "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cspell": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-4.2.8.tgz", + "integrity": "sha512-eqan8+lCU9bSp8Tl4+SR/ccBnuPyMmp7evck/RlMdFTjLh/s+3vQ5hQyBzbzK8w2MMqL84CymW7BwIOKjpylSg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.0.0", + "comment-json": "^4.0.6", + "cspell-glob": "^0.1.25", + "cspell-lib": "^4.3.12", + "fs-extra": "^9.1.0", + "gensequence": "^3.1.1", + "get-stdin": "^8.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "cspell": "bin.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cspell-glob": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-0.1.25.tgz", + "integrity": "sha512-/XaSHrGBpMJa+duFz3GKOWfrijrfdHT7a/XGgIcq3cymCSpOH+DPho42sl0jLI/hjM+8yv2m8aEoxRT8yVSnlg==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cspell-io": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-4.1.7.tgz", + "integrity": "sha512-V0/tUu9FnIS3v+vAvDT6NNa14Nc/zUNX8+YUUOfFAiDJJTdqefmvcWjOJBIMYBf3wIk9iWLmLbMM+bNHqr7DSQ==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.2", + "iterable-to-stream": "^1.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cspell-lib": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-4.3.12.tgz", + "integrity": "sha512-yCCb6MoW1K8Tsr/WVEQoO4dfYhH9bCsjQayccb8MlyDaNNuWJHuX+gUGHsZSXSuChSh8PrTWKXJzs13/uM977g==", + "dev": true, + "dependencies": { + "@cspell/dict-aws": "^1.0.13", + "@cspell/dict-bash": "^1.0.11", + "@cspell/dict-companies": "^1.0.35", + "@cspell/dict-cpp": "^1.1.37", + "@cspell/dict-cryptocurrencies": "^1.0.10", + "@cspell/dict-csharp": "^1.0.10", + "@cspell/dict-css": "^1.0.10", + "@cspell/dict-django": "^1.0.25", + "@cspell/dict-dotnet": "^1.0.24", + "@cspell/dict-elixir": "^1.0.23", + "@cspell/dict-en_us": "^1.2.39", + "@cspell/dict-en-gb": "^1.1.27", + "@cspell/dict-filetypes": "^1.1.5", + "@cspell/dict-fonts": "^1.0.13", + "@cspell/dict-fullstack": "^1.0.36", + "@cspell/dict-golang": "^1.1.24", + "@cspell/dict-haskell": "^1.0.12", + "@cspell/dict-html": "^1.1.5", + "@cspell/dict-html-symbol-entities": "^1.0.23", + "@cspell/dict-java": "^1.0.22", + "@cspell/dict-latex": "^1.0.23", + "@cspell/dict-lorem-ipsum": "^1.0.22", + "@cspell/dict-lua": "^1.0.16", + "@cspell/dict-node": "^1.0.10", + "@cspell/dict-npm": "^1.0.10", + "@cspell/dict-php": "^1.0.23", + "@cspell/dict-powershell": "^1.0.14", + "@cspell/dict-python": "^1.0.32", + "@cspell/dict-ruby": "^1.0.12", + "@cspell/dict-rust": "^1.0.22", + "@cspell/dict-scala": "^1.0.21", + "@cspell/dict-software-terms": "^1.0.24", + "@cspell/dict-typescript": "^1.0.16", + "comment-json": "^4.1.0", + "configstore": "^5.0.1", + "cspell-io": "^4.1.7", + "cspell-trie-lib": "^4.2.8", + "cspell-util-bundle": "^4.1.11", + "fs-extra": "^9.1.0", + "gensequence": "^3.1.1", + "minimatch": "^3.0.4", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cspell-trie-lib": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-4.2.8.tgz", + "integrity": "sha512-Nt3c0gxOYXIc3/yhALDukpje1BgR6guvlUKWQO2zb0r7qRWpwUw2j2YM4dWbHQeH/3Hx5ei4Braa6cMaiJ5YBw==", + "dev": true, + "dependencies": { + "gensequence": "^3.1.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cspell-util-bundle": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cspell-util-bundle/-/cspell-util-bundle-4.1.11.tgz", + "integrity": "sha512-or3OGKydZs1NwweMIgnA48k8H3F5zK4e5lonjUhpEzLYQZ2nB23decdoqZ8ogFC8pFTA40tZKDsMJ0b+65gX4Q==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.289", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.289.tgz", + "integrity": "sha512-relLdMfPBxqGCxy7Gyfm1HcbRPcFUJdlgnCPVgQ23sr1TvUrRJz0/QPoGP0+x41wOVSTN/Wi3w6YDgHiHJGOzg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensequence": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz", + "integrity": "sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iterable-to-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz", + "integrity": "sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jss": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz", + "integrity": "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz", + "integrity": "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.9.2" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz", + "integrity": "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.2" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/marked": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.12.1.tgz", + "integrity": "sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.16.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz", + "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", + "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.23.24", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.24.tgz", + "integrity": "sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.5", + "minimatch": "^5.1.2", + "shiki": "^0.12.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, + "node_modules/vscode-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", + "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", + "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.0.1", + "@webpack-cli/info": "^2.0.1", + "@webpack-cli/serve": "^2.0.1", + "colorette": "^2.0.14", + "commander": "^9.4.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@babel/runtime": { "version": "7.20.13", @@ -72,18 +3654,18 @@ "integrity": "sha512-hz1yETUiRJM7yjN3mITSnxcmZaEyaBbyJhpZPpg+cKUil+xhHeZ2wwfbRc83QHGmlqEuDWbdCFqKSpCDJYpYhg==", "dev": true }, - "@cspell/dict-en-gb": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", - "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", - "dev": true - }, "@cspell/dict-en_us": { "version": "1.2.45", "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-1.2.45.tgz", "integrity": "sha512-UPwR4rfiJCxnS+Py+EK9E4AUj3aPZE4p/yBRSHN+5aBQConlI0lLDtMceH5wlupA/sQTU1ERZGPJA9L96jVSyQ==", "dev": true }, + "@cspell/dict-en-gb": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", + "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", + "dev": true + }, "@cspell/dict-filetypes": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-1.1.8.tgz", @@ -217,9 +3799,9 @@ "dev": true }, "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3/-/lib-pixelstreamingfrontend-ue5.3-0.0.2.tgz", - "integrity": "sha512-zAQbxOGQE0y9Qqcfv05tsI8wr0bsm9h65xN57Wy4EX9XL8ulTx4wwrF0z0bmW6bK+ccOp2jZMd56/oH6lNVQLQ==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@epicgames-ps/lib-pixelstreamingfrontend-ue5.3/-/lib-pixelstreamingfrontend-ue5.3-0.0.3.tgz", + "integrity": "sha512-cKlJWbDNkX2dafupmyCcV8eLMZ3NZbL07giSMRbBGPEBmW5xSiWBK+htfmkuVm8ycRucEc8VlRWUP5g8S2e8Bw==", "dev": true, "requires": { "sdp": "^3.1.0" @@ -633,19 +4215,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/serve": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -669,13 +4254,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -693,7 +4280,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-regex": { "version": "5.0.1", @@ -952,8 +4540,8 @@ "@cspell/dict-django": "^1.0.25", "@cspell/dict-dotnet": "^1.0.24", "@cspell/dict-elixir": "^1.0.23", - "@cspell/dict-en-gb": "^1.1.27", "@cspell/dict-en_us": "^1.2.39", + "@cspell/dict-en-gb": "^1.1.27", "@cspell/dict-filetypes": "^1.1.5", "@cspell/dict-fonts": "^1.0.13", "@cspell/dict-fullstack": "^1.0.36", diff --git a/Frontend/ui-library/package.json b/Frontend/ui-library/package.json index a879e2ea..c5a3b62a 100644 --- a/Frontend/ui-library/package.json +++ b/Frontend/ui-library/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3", - "version": "0.0.5", + "version": "0.0.4", "description": "Reference frontend UI library for Unreal Engine 5.3 Pixel Streaming - gives the stock look and feel.", "main": "dist/lib-pixelstreamingfrontend-ui.js", "module": "dist/lib-pixelstreamingfrontend-ui.esm.js", @@ -16,7 +16,7 @@ "spellcheck": "cspell \"{README.md,.github/*.md,src/**/*.ts}\"" }, "devDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.2", + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.3", "@typescript-eslint/eslint-plugin": "^5.16.0", "@typescript-eslint/parser": "^5.16.0", "cspell": "^4.1.0", @@ -34,7 +34,7 @@ "jss-plugin-global": "^10.9.2" }, "peerDependencies": { - "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.2" + "@epicgames-ps/lib-pixelstreamingfrontend-ue5.3": "^0.0.3" }, "repository": { "type": "git", From 10d61a2ea19bc6d5997bea445d461690f0d89512 Mon Sep 17 00:00:00 2001 From: Luke Bermingham <1215582+lukehb@users.noreply.github.com> Date: Tue, 12 Sep 2023 08:30:28 +1000 Subject: [PATCH 21/22] Bump RELEASE_VERSION to 0.0.4 Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com> --- RELEASE_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_VERSION b/RELEASE_VERSION index bcab45af..81340c7e 100644 --- a/RELEASE_VERSION +++ b/RELEASE_VERSION @@ -1 +1 @@ -0.0.3 +0.0.4 From 8b2563085290dd384bd1a7149718140cd0fe99a7 Mon Sep 17 00:00:00 2001 From: I-m-None-user <122039782+I-m-None-user@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:42:44 +0200 Subject: [PATCH 22/22] Update Application.ts add check ipad Signed-off-by: I-m-None-user <122039782+I-m-None-user@users.noreply.github.com> --- Frontend/ui-library/src/Application/Application.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/ui-library/src/Application/Application.ts b/Frontend/ui-library/src/Application/Application.ts index 2864016e..af14c476 100644 --- a/Frontend/ui-library/src/Application/Application.ts +++ b/Frontend/ui-library/src/Application/Application.ts @@ -195,7 +195,7 @@ export class Application { // Or use the one created by the Controls initializer earlier : controls.fullscreenIcon; if (fullScreenButton) { - fullScreenButton.fullscreenElement = /iPhone|iPod/.test(navigator.userAgent) ? this.stream.videoElementParent.getElementsByTagName("video")[0] : this.rootElement; + fullScreenButton.fullscreenElement = /iPad|iPhone|iPod/.test(navigator.userAgent) ? this.stream.videoElementParent.getElementsByTagName("video")[0] : this.rootElement; } // Add settings button to controls