From 28071e585f1559c513860b0baad8bd75d7bfecf3 Mon Sep 17 00:00:00 2001 From: Florian Schmitt Date: Sun, 8 Jun 2025 18:27:17 +0300 Subject: [PATCH] wip refacto --- .prettierrc | 2 +- bun.lock | 936 +++++ bun.lockb | Bin 265979 -> 0 bytes client/css/style.css | 271 +- client/script.js | 1088 +++--- config.js | 30 +- eslint.config.mjs | 102 +- eslint.config.mjs.old | 49 + lib/data.js | 44 - lib/data/redis.js | 3 +- lib/rooms.js | 34 +- package-lock.json | 6006 ----------------------------- package.json | 42 +- server.js | 1248 ++---- shell.nix | 1 + views/{home.jade => home.pug} | 0 views/{index.jade => index.pug} | 0 views/{layout.jade => layout.pug} | 1 - 18 files changed, 2270 insertions(+), 7587 deletions(-) create mode 100644 bun.lock delete mode 100755 bun.lockb create mode 100644 eslint.config.mjs.old delete mode 100644 lib/data.js delete mode 100644 package-lock.json rename views/{home.jade => home.pug} (100%) rename views/{index.jade => index.pug} (100%) rename views/{layout.jade => layout.pug} (99%) diff --git a/.prettierrc b/.prettierrc index 92cde39..544138b 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,3 @@ { "singleQuote": true -} \ No newline at end of file +} diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..296e75a --- /dev/null +++ b/bun.lock @@ -0,0 +1,936 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "memo", + "dependencies": { + "async": "^3.2.6", + "compression": "^1.8.0", + "dompurify": "^3.2.6", + "express": "^5.1.0", + "hiredis": "^0.5.0", + "jsdom": "^26.1.0", + "pug": "^3.0.3", + "redis": "~0.12.1", + "simplesets": "^1.2.0", + "socket.io": "^4.8.1", + "typeface-inter": "^3.18.1", + "yargs": "^18.0.0", + }, + "devDependencies": { + "@eslint/compat": "^1.2.9", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.28.0", + "@stylistic/eslint-plugin": "^3.1.0", + "eslint": "^9.28.0", + "eslint-config-airbnb-extended": "^1.0.11", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-import-x": "^4.15.1", + "eslint-plugin-n": "^17.19.0", + "eslint-plugin-prettier": "^5.4.1", + "prettier": "^3.5.3", + }, + }, + }, + "packages": { + "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/parser": ["@babel/parser@7.27.5", "", { "dependencies": { "@babel/types": "^7.27.3" }, "bin": "./bin/babel-parser.js" }, "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg=="], + + "@babel/types": ["@babel/types@7.27.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q=="], + + "@csstools/color-helpers": ["@csstools/color-helpers@5.0.2", "", {}, "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA=="], + + "@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="], + + "@csstools/css-color-parser": ["@csstools/css-color-parser@3.0.10", "", { "dependencies": { "@csstools/color-helpers": "^5.0.2", "@csstools/css-calc": "^2.1.4" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg=="], + + "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@3.0.5", "", { "peerDependencies": { "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ=="], + + "@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.4", "", {}, "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw=="], + + "@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" } }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + + "@eslint/compat": ["@eslint/compat@1.2.9", "", { "peerDependencies": { "eslint": "^9.10.0" }, "optionalPeers": ["eslint"] }, "sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA=="], + + "@eslint/config-array": ["@eslint/config-array@0.20.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.2.2", "", {}, "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg=="], + + "@eslint/core": ["@eslint/core@0.14.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.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" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], + + "@eslint/js": ["@eslint/js@9.28.0", "", {}, "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg=="], + + "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.1", "", { "dependencies": { "@eslint/core": "^0.14.0", "levn": "^0.4.1" } }, "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.10", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.9.0" } }, "sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@pkgr/core": ["@pkgr/core@0.2.7", "", {}, "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg=="], + + "@socket.io/component-emitter": ["@socket.io/component-emitter@3.1.2", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="], + + "@stylistic/eslint-plugin": ["@stylistic/eslint-plugin@3.1.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.13.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, "peerDependencies": { "eslint": ">=8.40.0" } }, "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="], + + "@types/cors": ["@types/cors@2.8.19", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="], + + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.33.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.33.1", "@typescript-eslint/types": "^8.33.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.33.1", "", { "dependencies": { "@typescript-eslint/types": "8.33.1", "@typescript-eslint/visitor-keys": "8.33.1" } }, "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA=="], + + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.33.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@8.33.1", "", {}, "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.33.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.33.1", "@typescript-eslint/tsconfig-utils": "8.33.1", "@typescript-eslint/types": "8.33.1", "@typescript-eslint/visitor-keys": "8.33.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.33.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/types": "8.33.1", "@typescript-eslint/typescript-estree": "8.33.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.33.1", "", { "dependencies": { "@typescript-eslint/types": "8.33.1", "eslint-visitor-keys": "^4.2.0" } }, "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ=="], + + "@unrs/resolver-binding-darwin-arm64": ["@unrs/resolver-binding-darwin-arm64@1.7.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-i3/wlWjQJXMh1uiGtiv7k1EYvrrS3L1hdwmWJJiz1D8jWy726YFYPIxQWbEIVPVAgrfRR0XNlLrTQwq17cuCGw=="], + + "@unrs/resolver-binding-darwin-x64": ["@unrs/resolver-binding-darwin-x64@1.7.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-8XXyFvc6w6kmMmi6VYchZhjd5CDcp+Lv6Cn1YmUme0ypsZ/0Kzd+9ESrWtDrWibKPTgSteDTxp75cvBOY64FQQ=="], + + "@unrs/resolver-binding-freebsd-x64": ["@unrs/resolver-binding-freebsd-x64@1.7.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0qJBYzP8Qk24CZ05RSWDQUjdiQUeIJGfqMMzbtXgCKl/a5xa6thfC0MQkGIr55LCLd6YmMyO640ifYUa53lybQ=="], + + "@unrs/resolver-binding-linux-arm-gnueabihf": ["@unrs/resolver-binding-linux-arm-gnueabihf@1.7.11", "", { "os": "linux", "cpu": "arm" }, "sha512-1sGwpgvx+WZf0GFT6vkkOm6UJ+mlsVnjw+Yv9esK71idWeRAG3bbpkf3AoY8KIqKqmnzJExi0uKxXpakQ5Pcbg=="], + + "@unrs/resolver-binding-linux-arm-musleabihf": ["@unrs/resolver-binding-linux-arm-musleabihf@1.7.11", "", { "os": "linux", "cpu": "arm" }, "sha512-D/1F/2lTe+XAl3ohkYj51NjniVly8sIqkA/n1aOND3ZMO418nl2JNU95iVa1/RtpzaKcWEsNTtHRogykrUflJg=="], + + "@unrs/resolver-binding-linux-arm64-gnu": ["@unrs/resolver-binding-linux-arm64-gnu@1.7.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-7vFWHLCCNFLEQlmwKQfVy066ohLLArZl+AV/AdmrD1/pD1FlmqM+FKbtnONnIwbHtgetFUCV/SRi1q4D49aTlw=="], + + "@unrs/resolver-binding-linux-arm64-musl": ["@unrs/resolver-binding-linux-arm64-musl@1.7.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-tYkGIx8hjWPh4zcn17jLEHU8YMmdP2obRTGkdaB3BguGHh31VCS3ywqC4QjTODjmhhNyZYkj/1Dz/+0kKvg9YA=="], + + "@unrs/resolver-binding-linux-ppc64-gnu": ["@unrs/resolver-binding-linux-ppc64-gnu@1.7.11", "", { "os": "linux", "cpu": "ppc64" }, "sha512-6F328QIUev29vcZeRX6v6oqKxfUoGwIIAhWGD8wSysnBYFY0nivp25jdWmAb1GildbCCaQvOKEhCok7YfWkj4Q=="], + + "@unrs/resolver-binding-linux-riscv64-gnu": ["@unrs/resolver-binding-linux-riscv64-gnu@1.7.11", "", { "os": "linux", "cpu": "none" }, "sha512-NqhWmiGJGdzbZbeucPZIG9Iav4lyYLCarEnxAceguMx9qlpeEF7ENqYKOwB8Zqk7/CeuYMEcLYMaW2li6HyDzQ=="], + + "@unrs/resolver-binding-linux-riscv64-musl": ["@unrs/resolver-binding-linux-riscv64-musl@1.7.11", "", { "os": "linux", "cpu": "none" }, "sha512-J2RPIFKMdTrLtBdfR1cUMKl8Gcy05nlQ+bEs/6al7EdWLk9cs3tnDREHZ7mV9uGbeghpjo4i8neNZNx3PYUY9w=="], + + "@unrs/resolver-binding-linux-s390x-gnu": ["@unrs/resolver-binding-linux-s390x-gnu@1.7.11", "", { "os": "linux", "cpu": "s390x" }, "sha512-bDpGRerHvvHdhun7MmFUNDpMiYcJSqWckwAVVRTJf8F+RyqYJOp/mx04PDc7DhpNPeWdnTMu91oZRMV+gGaVcQ=="], + + "@unrs/resolver-binding-linux-x64-gnu": ["@unrs/resolver-binding-linux-x64-gnu@1.7.11", "", { "os": "linux", "cpu": "x64" }, "sha512-G9U7bVmylzRLma3cK39RBm3guoD1HOvY4o0NS4JNm37AD0lS7/xyMt7kn0JejYyc0Im8J+rH69/dXGM9DAJcSQ=="], + + "@unrs/resolver-binding-linux-x64-musl": ["@unrs/resolver-binding-linux-x64-musl@1.7.11", "", { "os": "linux", "cpu": "x64" }, "sha512-7qL20SBKomekSunm7M9Fe5L93bFbn+FbHiGJbfTlp0RKhPVoJDP73vOxf1QrmJHyDPECsGWPFnKa/f8fO2FsHw=="], + + "@unrs/resolver-binding-wasm32-wasi": ["@unrs/resolver-binding-wasm32-wasi@1.7.11", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.10" }, "cpu": "none" }, "sha512-jisvIva8MidjI+B1lFRZZMfCPaCISePgTyR60wNT1MeQvIh5Ksa0G3gvI+Iqyj3jqYbvOHByenpa5eDGcSdoSg=="], + + "@unrs/resolver-binding-win32-arm64-msvc": ["@unrs/resolver-binding-win32-arm64-msvc@1.7.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-G+H5nQZ8sRZ8ebMY6mRGBBvTEzMYEcgVauLsNHpvTUavZoCCRVP1zWkCZgOju2dW3O22+8seTHniTdl1/uLz3g=="], + + "@unrs/resolver-binding-win32-ia32-msvc": ["@unrs/resolver-binding-win32-ia32-msvc@1.7.11", "", { "os": "win32", "cpu": "ia32" }, "sha512-Hfy46DBfFzyv0wgR0MMOwFFib2W2+Btc8oE5h4XlPhpelnSyA6nFxkVIyTgIXYGTdFaLoZFNn62fmqx3rjEg3A=="], + + "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.7.11", "", { "os": "win32", "cpu": "x64" }, "sha512-7L8NdsQlCJ8T106Gbz/AjzM4QKWVsoQbKpB9bMBGcIZswUuAnJMHpvbqGW3RBqLHCIwX4XZ5fxSBHEFcK2h9wA=="], + + "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], + + "acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="], + + "ajv": ["ajv@6.12.6", "", { "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" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], + + "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], + + "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], + + "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], + + "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], + + "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], + + "assert-never": ["assert-never@1.4.0", "", {}, "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA=="], + + "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], + + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], + + "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], + + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], + + "axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="], + + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + + "babel-walk": ["babel-walk@3.0.0-canary-5", "", { "dependencies": { "@babel/types": "^7.9.6" } }, "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "base64id": ["base64id@2.0.0", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="], + + "bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="], + + "body-parser": ["body-parser@2.2.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.0", "http-errors": "^2.0.0", "iconv-lite": "^0.6.3", "on-finished": "^2.4.1", "qs": "^6.14.0", "raw-body": "^3.0.0", "type-is": "^2.0.0" } }, "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg=="], + + "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "character-parser": ["character-parser@2.2.0", "", { "dependencies": { "is-regex": "^1.0.3" } }, "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw=="], + + "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "comment-parser": ["comment-parser@1.4.1", "", {}, "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg=="], + + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + + "compression": ["compression@1.8.0", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.0.2", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA=="], + + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "confusing-browser-globals": ["confusing-browser-globals@1.0.11", "", {}, "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA=="], + + "constantinople": ["constantinople@4.0.1", "", { "dependencies": { "@babel/parser": "^7.6.0", "@babel/types": "^7.6.1" } }, "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw=="], + + "content-disposition": ["content-disposition@1.0.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], + + "cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "cssstyle": ["cssstyle@4.3.1", "", { "dependencies": { "@asamuzakjp/css-color": "^3.1.2", "rrweb-cssom": "^0.8.0" } }, "sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q=="], + + "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], + + "data-urls": ["data-urls@5.0.0", "", { "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" } }, "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg=="], + + "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], + + "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], + + "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + + "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "decimal.js": ["decimal.js@10.5.0", "", {}, "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "doctypes": ["doctypes@1.1.0", "", {}, "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="], + + "dompurify": ["dompurify@3.2.6", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "engine.io": ["engine.io@6.6.4", "", { "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" } }, "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g=="], + + "engine.io-parser": ["engine.io-parser@5.2.3", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="], + + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], + + "entities": ["entities@6.0.0", "", {}, "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw=="], + + "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], + + "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "eslint": ["eslint@9.28.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.28.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ=="], + + "eslint-compat-utils": ["eslint-compat-utils@0.5.1", "", { "dependencies": { "semver": "^7.5.4" }, "peerDependencies": { "eslint": ">=6.0.0" } }, "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q=="], + + "eslint-config-airbnb-extended": ["eslint-config-airbnb-extended@1.0.11", "", { "dependencies": { "confusing-browser-globals": "^1.0.11", "globals": "^16.0.0" }, "peerDependencies": { "@next/eslint-plugin-next": "15.x", "@stylistic/eslint-plugin": "3.x", "@types/eslint-plugin-jsx-a11y": "6.x", "eslint": "9.x", "eslint-import-resolver-typescript": "4.x", "eslint-plugin-import-x": "4.x", "eslint-plugin-jsx-a11y": "6.x", "eslint-plugin-n": "17.x", "eslint-plugin-react": "7.x", "eslint-plugin-react-hooks": "5.x", "typescript-eslint": "8.x" }, "optionalPeers": ["@next/eslint-plugin-next", "@stylistic/eslint-plugin", "@types/eslint-plugin-jsx-a11y", "eslint-plugin-n", "eslint-plugin-react", "eslint-plugin-react-hooks", "typescript-eslint"] }, "sha512-dtSU+blkYae887ur+IhZ6ZVzw2x3WABA/T1WUqmr6WcrD9HnrJ3KdAEu1joWxJObKT0GjcxeLOjH5DrHo3ZryQ=="], + + "eslint-config-prettier": ["eslint-config-prettier@10.1.5", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw=="], + + "eslint-import-context": ["eslint-import-context@0.1.8", "", { "dependencies": { "get-tsconfig": "^4.10.1", "stable-hash-x": "^0.1.1" }, "peerDependencies": { "unrs-resolver": "^1.0.0" }, "optionalPeers": ["unrs-resolver"] }, "sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w=="], + + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@4.4.3", "", { "dependencies": { "debug": "^4.4.1", "eslint-import-context": "^0.1.8", "get-tsconfig": "^4.10.1", "is-bun-module": "^2.0.0", "stable-hash-x": "^0.1.1", "tinyglobby": "^0.2.14", "unrs-resolver": "^1.7.11" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-elVDn1eWKFrWlzxlWl9xMt8LltjKl161Ix50JFC50tHXI5/TRP32SNEqlJ/bo/HV+g7Rou/tlPQU2AcRtIhrOg=="], + + "eslint-plugin-es-x": ["eslint-plugin-es-x@7.8.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", "@eslint-community/regexpp": "^4.11.0", "eslint-compat-utils": "^0.5.1" }, "peerDependencies": { "eslint": ">=8" } }, "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ=="], + + "eslint-plugin-import-x": ["eslint-plugin-import-x@4.15.1", "", { "dependencies": { "@typescript-eslint/types": "^8.33.1", "comment-parser": "^1.4.1", "debug": "^4.4.1", "eslint-import-context": "^0.1.7", "is-glob": "^4.0.3", "minimatch": "^9.0.3 || ^10.0.1", "semver": "^7.7.2", "stable-hash-x": "^0.1.1", "unrs-resolver": "^1.7.10" }, "peerDependencies": { "@typescript-eslint/utils": "^8.0.0", "eslint": "^8.57.0 || ^9.0.0", "eslint-import-resolver-node": "*" }, "optionalPeers": ["@typescript-eslint/utils", "eslint-import-resolver-node"] }, "sha512-JfVpNg1qMkPD66iaSgmMoSYeUCGS8UFSm3GwHV0IbuV3Knar/SyK5qqCct9+AxoMIzaM+KSO7KK5pOeOkC/3GQ=="], + + "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], + + "eslint-plugin-n": ["eslint-plugin-n@17.19.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.5.0", "@typescript-eslint/utils": "^8.26.1", "enhanced-resolve": "^5.17.1", "eslint-plugin-es-x": "^7.8.0", "get-tsconfig": "^4.8.1", "globals": "^15.11.0", "ignore": "^5.3.2", "minimatch": "^9.0.5", "semver": "^7.6.3", "ts-declaration-location": "^1.0.6" }, "peerDependencies": { "eslint": ">=8.23.0" } }, "sha512-qxn1NaDHtizbhVAPpbMT8wWFaLtPnwhfN/e+chdu2i6Vgzmo/tGM62tcJ1Hf7J5Ie4dhse3DOPMmDxduzfifzw=="], + + "eslint-plugin-prettier": ["eslint-plugin-prettier@5.4.1", "", { "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.11.7" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint", "eslint-config-prettier"] }, "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg=="], + + "eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], + + "espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="], + + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "express": ["express@5.1.0", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "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.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "fdir": ["fdir@6.4.5", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "file-uri-to-path": ["file-uri-to-path@1.0.0", "", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "finalhandler": ["finalhandler@2.1.0", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + + "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], + + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], + + "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], + + "get-tsconfig": ["get-tsconfig@4.10.1", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], + + "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hiredis": ["hiredis@0.5.0", "", { "dependencies": { "bindings": "^1.2.1", "nan": "^2.3.4" } }, "sha512-fKf2yLN2hTiXWGPiJUhDFyBQ5arMb500QfF+xEodoMK/G+WxYU+ckDoMIjHK7+IDWCex1QfJz3QVCfsu557XgQ=="], + + "html-encoding-sniffer": ["html-encoding-sniffer@4.0.0", "", { "dependencies": { "whatwg-encoding": "^3.1.1" } }, "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ=="], + + "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="], + + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], + + "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], + + "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], + + "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], + + "is-bun-module": ["is-bun-module@2.0.0", "", { "dependencies": { "semver": "^7.7.1" } }, "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ=="], + + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], + + "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], + + "is-expression": ["is-expression@4.0.0", "", { "dependencies": { "acorn": "^7.1.1", "object-assign": "^4.1.1" } }, "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], + + "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], + + "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], + + "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], + + "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], + + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], + + "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], + + "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + + "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], + + "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], + + "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], + + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], + + "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], + + "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], + + "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "js-stringify": ["js-stringify@1.0.2", "", {}, "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="], + + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + + "jsdom": ["jsdom@26.1.0", "", { "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", "decimal.js": "^10.5.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.16", "parse5": "^7.2.1", "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^5.1.1", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.1.1", "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^3.0.0" }, "optionalPeers": ["canvas"] }, "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "jstransformer": ["jstransformer@1.0.0", "", { "dependencies": { "is-promise": "^2.0.0", "promise": "^7.0.1" } }, "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A=="], + + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], + + "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], + + "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="], + + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nan": ["nan@2.22.2", "", {}, "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ=="], + + "napi-postinstall": ["napi-postinstall@0.2.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], + + "nwsapi": ["nwsapi@2.2.20", "", {}, "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + + "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], + + "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], + + "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "on-headers": ["on-headers@1.0.2", "", {}, "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "optionator": ["optionator@0.9.4", "", { "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.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="], + + "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], + + "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="], + + "prettier-linter-helpers": ["prettier-linter-helpers@1.0.0", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w=="], + + "promise": ["promise@7.3.1", "", { "dependencies": { "asap": "~2.0.3" } }, "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "pug": ["pug@3.0.3", "", { "dependencies": { "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", "pug-load": "^3.0.0", "pug-parser": "^6.0.0", "pug-runtime": "^3.0.1", "pug-strip-comments": "^2.0.0" } }, "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g=="], + + "pug-attrs": ["pug-attrs@3.0.0", "", { "dependencies": { "constantinople": "^4.0.1", "js-stringify": "^1.0.2", "pug-runtime": "^3.0.0" } }, "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA=="], + + "pug-code-gen": ["pug-code-gen@3.0.3", "", { "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", "pug-error": "^2.1.0", "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw=="], + + "pug-error": ["pug-error@2.1.0", "", {}, "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg=="], + + "pug-filters": ["pug-filters@4.0.0", "", { "dependencies": { "constantinople": "^4.0.1", "jstransformer": "1.0.0", "pug-error": "^2.0.0", "pug-walk": "^2.0.0", "resolve": "^1.15.1" } }, "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A=="], + + "pug-lexer": ["pug-lexer@5.0.1", "", { "dependencies": { "character-parser": "^2.2.0", "is-expression": "^4.0.0", "pug-error": "^2.0.0" } }, "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w=="], + + "pug-linker": ["pug-linker@4.0.0", "", { "dependencies": { "pug-error": "^2.0.0", "pug-walk": "^2.0.0" } }, "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw=="], + + "pug-load": ["pug-load@3.0.0", "", { "dependencies": { "object-assign": "^4.1.1", "pug-walk": "^2.0.0" } }, "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ=="], + + "pug-parser": ["pug-parser@6.0.0", "", { "dependencies": { "pug-error": "^2.0.0", "token-stream": "1.0.0" } }, "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw=="], + + "pug-runtime": ["pug-runtime@3.0.1", "", {}, "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="], + + "pug-strip-comments": ["pug-strip-comments@2.0.0", "", { "dependencies": { "pug-error": "^2.0.0" } }, "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ=="], + + "pug-walk": ["pug-walk@2.0.0", "", {}, "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "raw-body": ["raw-body@3.0.0", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", "unpipe": "1.0.0" } }, "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g=="], + + "redis": ["redis@0.12.1", "", {}, "sha512-DtqxdmgmVAO7aEyxaXBiUTvhQPOYznTIvmPzs9AwWZqZywM50JlFxQjFhicI+LVbaun7uwfO3izuvc1L8NlPKQ=="], + + "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], + + "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], + + "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], + + "rrweb-cssom": ["rrweb-cssom@0.8.0", "", {}, "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], + + "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], + + "semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + + "send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="], + + "serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="], + + "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], + + "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], + + "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "simplesets": ["simplesets@1.2.0", "", {}, "sha512-dMvnx/ITjxvdPJiCo2ZtISG6bNuQ8+Hk7/NYGPcEcA4q2sO2WrMSkNHMKkL6dhRYPHjr5oGWDWnHVogkOPHdgg=="], + + "socket.io": ["socket.io@4.8.1", "", { "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg=="], + + "socket.io-adapter": ["socket.io-adapter@2.5.5", "", { "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" } }, "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg=="], + + "socket.io-parser": ["socket.io-parser@4.2.4", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew=="], + + "stable-hash-x": ["stable-hash-x@0.1.1", "", {}, "sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], + + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], + + "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], + + "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], + + "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], + + "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], + + "synckit": ["synckit@0.11.8", "", { "dependencies": { "@pkgr/core": "^0.2.4" } }, "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A=="], + + "tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="], + + "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], + + "tldts": ["tldts@6.1.86", "", { "dependencies": { "tldts-core": "^6.1.86" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ=="], + + "tldts-core": ["tldts-core@6.1.86", "", {}, "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "token-stream": ["token-stream@1.0.0", "", {}, "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="], + + "tough-cookie": ["tough-cookie@5.1.2", "", { "dependencies": { "tldts": "^6.1.32" } }, "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A=="], + + "tr46": ["tr46@5.1.1", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw=="], + + "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], + + "ts-declaration-location": ["ts-declaration-location@1.0.7", "", { "dependencies": { "picomatch": "^4.0.2" }, "peerDependencies": { "typescript": ">=4.0.0" } }, "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], + + "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], + + "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], + + "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], + + "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], + + "typeface-inter": ["typeface-inter@3.18.1", "", {}, "sha512-c+TBanYFCvmg3j5vPk+zxK4ocMZbPxMEmjnwG7rPQoV87xvQ6b07VbAOC0Va0XBbbZCGw6cWNeFuLeg1YQru3Q=="], + + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], + + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "unrs-resolver": ["unrs-resolver@1.7.11", "", { "dependencies": { "napi-postinstall": "^0.2.2" }, "optionalDependencies": { "@unrs/resolver-binding-darwin-arm64": "1.7.11", "@unrs/resolver-binding-darwin-x64": "1.7.11", "@unrs/resolver-binding-freebsd-x64": "1.7.11", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.7.11", "@unrs/resolver-binding-linux-arm-musleabihf": "1.7.11", "@unrs/resolver-binding-linux-arm64-gnu": "1.7.11", "@unrs/resolver-binding-linux-arm64-musl": "1.7.11", "@unrs/resolver-binding-linux-ppc64-gnu": "1.7.11", "@unrs/resolver-binding-linux-riscv64-gnu": "1.7.11", "@unrs/resolver-binding-linux-riscv64-musl": "1.7.11", "@unrs/resolver-binding-linux-s390x-gnu": "1.7.11", "@unrs/resolver-binding-linux-x64-gnu": "1.7.11", "@unrs/resolver-binding-linux-x64-musl": "1.7.11", "@unrs/resolver-binding-wasm32-wasi": "1.7.11", "@unrs/resolver-binding-win32-arm64-msvc": "1.7.11", "@unrs/resolver-binding-win32-ia32-msvc": "1.7.11", "@unrs/resolver-binding-win32-x64-msvc": "1.7.11" } }, "sha512-OhuAzBImFPjKNgZ2JwHMfGFUA6NSbRegd1+BPjC1Y0E6X9Y/vJ4zKeGmIMqmlYboj6cMNEwKI+xQisrg4J0HaQ=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "void-elements": ["void-elements@3.1.0", "", {}, "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="], + + "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], + + "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], + + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], + + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], + + "whatwg-url": ["whatwg-url@14.2.0", "", { "dependencies": { "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } }, "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], + + "which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], + + "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], + + "which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="], + + "with": ["with@7.0.2", "", { "dependencies": { "@babel/parser": "^7.9.6", "@babel/types": "^7.9.6", "assert-never": "^1.2.1", "babel-walk": "3.0.0-canary-5" } }, "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "ws": ["ws@8.18.2", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ=="], + + "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], + + "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], + + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], + + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "accepts/negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + + "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "engine.io/accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "engine.io/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "engine.io/ws": ["ws@8.17.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="], + + "eslint-config-airbnb-extended/globals": ["globals@16.2.0", "", {}, "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg=="], + + "eslint-plugin-import-x/minimatch": ["minimatch@10.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="], + + "eslint-plugin-n/globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], + + "eslint-plugin-n/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "http-errors/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="], + + "is-expression/acorn": ["acorn@7.4.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="], + + "jstransformer/is-promise": ["is-promise@2.2.2", "", {}, "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "socket.io/accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "socket.io/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "socket.io-adapter/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "socket.io-adapter/ws": ["ws@8.17.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="], + + "socket.io-parser/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "engine.io/accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "engine.io/accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "eslint-plugin-import-x/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "eslint-plugin-n/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "socket.io/accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "socket.io/accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "engine.io/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "socket.io/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + } +} diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index ab143e7966ed1dc1a89936061651d8bd097ab679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265979 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 { // console.log('successful socket.io connect'); // let the final part of the path be the room name - const room = location.pathname.substring(location.pathname.lastIndexOf('/')) + const room = location.pathname.substring(location.pathname.lastIndexOf('/')); // imediately join the room which will trigger the initializations - sendAction('joinRoom', room) -}) + sendAction('joinRoom', room); +}); socket.on('disconnect', () => { - blockUI('Serveur déconnecté. Veuillez rafraîchir la page pour essayer de vous reconnecter…') + blockUI( + 'Serveur déconnecté. Veuillez rafraîchir la page pour essayer de vous reconnecter…', + ); // $('.blockOverlay').on('click', $.unblockUI); -}) +}); socket.on('message', (data) => { - getMessage(data) -}) + getMessage(data); +}); function unblockUI() { - $.unblockUI({ fadeOut: 50 }) + $.unblockUI({ fadeOut: 50 }); } function blockUI(message) { - message = message || 'En attente…' + message = message || 'En attente…'; $.blockUI({ message, @@ -70,19 +75,19 @@ function blockUI(message) { '-moz-border-radius': '10px', opacity: 0.5, color: '#fff', - fontSize: '20px' + fontSize: '20px', }, fadeOut: 0, - fadeIn: 10 - }) + fadeIn: 10, + }); } // respond to an action event function getMessage(m) { - const message = m // JSON.parse(m); - const { action } = message - const { data } = message + const message = m; // JSON.parse(m); + const { action } = message; + const { data } = message; // console.log('<-- ' + action); @@ -90,135 +95,144 @@ function getMessage(m) { case 'roomAccept': // okay we're accepted, then request initialization // (this is a bit of unnessary back and forth but that's okay for now) - sendAction('initializeMe', null) - break + sendAction('initializeMe', null); + break; case 'roomDeny': // this doesn't happen yet - break + break; case 'editBoardMetas': - sendAction('editBoardMetas', { prop: 'opacity', value: 0.5 }) - break + sendAction('editBoardMetas', { prop: 'opacity', value: 0.5 }); + break; case 'moveCard': - moveCard($(`#${data.id}`), data.position) - break + moveCard($(`#${data.id}`), data.position); + break; case 'initCards': - initCards(data) - break + initCards(data); + break; case 'createCard': // console.log(data); - drawNewCard(data.id, data.text, data.x, data.y, data.rot, data.colour, null) - break + drawNewCard( + data.id, + data.text, + data.x, + data.y, + data.rot, + data.colour, + null, + ); + break; case 'deleteCard': - $(`#${data.id}`).fadeOut(500, function() { - $(this).remove() - }) - break + $(`#${data.id}`).fadeOut(500, function () { + $(this).remove(); + }); + break; case 'editCard': - $(`#${data.id}`) - .children('.content:first') - .attr('data-text', data.value) - $(`#${data.id}`) - .children('.content:first') - .html(marked(data.value)) - break + $(`#${data.id}`).children('.content:first').attr('data-text', data.value); + $(`#${data.id}`).children('.content:first').html(marked(data.value)); + break; case 'initColumns': - initColumns(data) - break + initColumns(data); + break; case 'updateColumns': - initColumns(data) - break + initColumns(data); + break; case 'changeTheme': - changeThemeTo(data) - break + changeThemeTo(data); + break; case 'join-announce': - displayUserJoined(data.sid, data.user_name) - break + displayUserJoined(data.sid, data.user_name); + break; case 'leave-announce': - displayUserLeft(data.sid) - break + displayUserLeft(data.sid); + break; case 'initialUsers': - displayInitialUsers(data) - break + displayInitialUsers(data); + break; case 'nameChangeAnnounce': - updateName(message.data.sid, message.data.user_name) - break + updateName(message.data.sid, message.data.user_name); + break; case 'addSticker': - addSticker(message.data.cardId, message.data.stickerId) - break + addSticker(message.data.cardId, message.data.stickerId); + break; case 'setBoardSize': - resizeBoard(message.data) - break + resizeBoard(message.data); + break; case 'export': - download(message.data.filename, message.data.text) - break + download(message.data.filename, message.data.text); + break; case 'addRevision': - addRevision(message.data) - break + addRevision(message.data); + break; case 'deleteRevision': - $(`#revision-${message.data}`).remove() - break + $(`#revision-${message.data}`).remove(); + break; case 'initRevisions': - $('#revisions-list').empty() + $('#revisions-list').empty(); for (let i = 0; i < message.data.length; i++) { - addRevision(message.data[i]) + addRevision(message.data[i]); } - break + break; default: // unknown message - alert(`action inconnue : ${JSON.stringify(message)}`) - break + alert(`action inconnue : ${JSON.stringify(message)}`); + break; } } $(document).on('keyup', (event) => { - keyTrap = event.which -}) + keyTrap = event.which; +}); -function drawNewCard(id, text, x, y, rot, colour, sticker, animationspeed, mx = 0, my = 0) { +function drawNewCard( + id, + text, + x, + y, + rot, + colour, + sticker, + animationspeed, + mx = 0, + my = 0, +) { // cards[id] = {id: id, text: text, x: x, y: y, rot: rot, colour: colour}; - const h = `
\ \
${ - marked(text) -}
\ -
` + id + }" class="content stickertarget droppable" data-text="">${marked( + text, + )}\ + `; - const card = $(h) - card.appendTo('#board') - $(`#${id}`) - .children('.content:first') - .attr('data-text', text) + const card = $(h); + card.appendTo('#board'); + $(`#${id}`).children('.content:first').attr('data-text', text); // @TODO // Draggable has a bug which prevents blur event @@ -237,146 +251,146 @@ function drawNewCard(id, text, x, y, rot, colour, sticker, animationspeed, mx = containment: [0, 0, 2000, 2000], stack: '.card', start(event, ui) { - keyTrap = null + keyTrap = null; }, drag(event, ui) { if (keyTrap == 27) { - ui.helper.css(ui.originalPosition) - return false + ui.helper.css(ui.originalPosition); + return false; } }, - handle: 'div.content' - }) + handle: 'div.content', + }); // After a drag: - card.on('dragstop', function(event, ui) { + card.on('dragstop', function (event, ui) { if (keyTrap == 27) { - keyTrap = null - return + keyTrap = null; + return; } const data = { id: this.id, position: ui.position, - oldposition: ui.originalPosition - } + oldposition: ui.originalPosition, + }; - sendAction('moveCard', data) - }) + sendAction('moveCard', data); + }); card.children('.droppable').droppable({ accept: '.sticker', drop(event, ui) { - const stickerId = ui.draggable.attr('id') - const cardId = $(this).parent().attr('id') + const stickerId = ui.draggable.attr('id'); + const cardId = $(this).parent().attr('id'); - addSticker(cardId, stickerId) + addSticker(cardId, stickerId); const data = { cardId, - stickerId - } - sendAction('addSticker', data) + stickerId, + }; + sendAction('addSticker', data); // remove hover state to everything on the board to prevent // a jquery bug where it gets left around - $('.card-hover-draggable').removeClass('card-hover-draggable') + $('.card-hover-draggable').removeClass('card-hover-draggable'); }, - hoverClass: 'card-hover-draggable' - }) + hoverClass: 'card-hover-draggable', + }); - let speed = Math.floor(Math.random() * 1000) - if (typeof animationspeed != 'undefined') speed = animationspeed + let speed = Math.floor(Math.random() * 1000); + if (typeof animationspeed !== 'undefined') speed = animationspeed; if (mx == 0 && my == 0) { - const startPosition = $('#create-card').position() - mx = startPosition.left - my = startPosition.top + const startPosition = $('#create-card').position(); + mx = startPosition.left; + my = startPosition.top; } - card.css('top', my) - card.css('left', mx) + card.css('top', my); + card.css('left', mx); card.animate( { left: `${x}px`, - top: `${y}px` + top: `${y}px`, }, - speed - ) + speed, + ); card.children('.delete-card-icon').on('click', () => { - $(`#${id}`).remove() + $(`#${id}`).remove(); // notify server of delete - sendAction('deleteCard', { id }) - }) + sendAction('deleteCard', { id }); + }); card.children('.content').editable( (value, settings) => { - $(`#${id}`) - .children('.content:first') - .attr('data-text', value) - onCardChange(id, value) - return marked(value) + $(`#${id}`).children('.content:first').attr('data-text', value); + onCardChange(id, value); + return marked(value); }, { type: 'textarea', data() { - return $(`#${id}`) - .children('.content:first') - .attr('data-text') + return $(`#${id}`).children('.content:first').attr('data-text'); }, submit: 'OK', style: 'inherit', cssclass: 'card-edit-form', placeholder: 'Double cliquez pour m’éditer', onblur: 'submit', - event: 'dblclick' // event: 'mouseover' - } - ) + event: 'dblclick', // event: 'mouseover' + }, + ); // add applicable sticker - if (sticker !== null) addSticker(id, sticker) + if (sticker !== null) addSticker(id, sticker); } function onCardChange(id, text) { sendAction('editCard', { id, - value: text - }) + value: text, + }); } function moveCard(card, position) { card.animate( { left: `${position.left}px`, - top: `${position.top}px` + top: `${position.top}px`, }, - 500 - ) + 500, + ); } function addSticker(cardId, stickerId) { - stickerContainer = $(`#${cardId} .filler`) + stickerContainer = $(`#${cardId} .filler`); if (stickerId === 'nosticker') { - stickerContainer.html('') - return + stickerContainer.html(''); + return; } if (Array.isArray(stickerId)) { for (const i in stickerId) { - stickerContainer.prepend(``) + stickerContainer.prepend( + ``, + ); } - } else if (stickerContainer.html().indexOf(stickerId) < 0) { stickerContainer.prepend(``) } + } else if (stickerContainer.html().indexOf(stickerId) < 0) { + stickerContainer.prepend(``); + } } //---------------------------------- // cards //---------------------------------- function createCard(id, text, x, y, rot, colour, mx = 0, my = 0) { - drawNewCard(id, text, x, y, rot, colour, null, null, mx, my) + drawNewCard(id, text, x, y, rot, colour, null, null, mx, my); - const action = 'createCard' + const action = 'createCard'; const data = { id, @@ -384,34 +398,43 @@ function createCard(id, text, x, y, rot, colour, mx = 0, my = 0) { x, y, rot, - colour - } + colour, + }; - sendAction(action, data) + sendAction(action, data); } function randomCardColour() { - const colours = ['yellow', 'green', 'blue', 'white'] + const colours = ['yellow', 'green', 'blue', 'white']; - const i = Math.floor(Math.random() * colours.length) + const i = Math.floor(Math.random() * colours.length); - return colours[i] + return colours[i]; } function initCards(cardArray) { // first delete any cards that exist - $('.card').remove() + $('.card').remove(); - cards = cardArray + cards = cardArray; for (const i in cardArray) { - card = cardArray[i] + card = cardArray[i]; - drawNewCard(card.id, card.text, card.x, card.y, card.rot, card.colour, card.sticker, 0) + drawNewCard( + card.id, + card.text, + card.x, + card.y, + card.rot, + card.colour, + card.sticker, + 0, + ); } - boardInitialized = true - unblockUI() + boardInitialized = true; + unblockUI(); } //---------------------------------- @@ -419,25 +442,21 @@ function initCards(cardArray) { //---------------------------------- function drawNewColumn(columnName) { - let cls = 'col' + let cls = 'col'; if (totalcolumns === 0) { - cls = 'col first' + cls = 'col first'; } $('#icon-col').before( - `

${ - columnName - }

` - ) + }" class="editable">${columnName}`, + ); $('.editable').editable( - function(value, settings) { - onColumnChange(this.id, value) - return value + function (value, settings) { + onColumnChange(this.id, value); + return value; }, { style: 'inherit', @@ -447,108 +466,108 @@ function drawNewColumn(columnName) { onblur: 'submit', width: '', height: '', - xindicator: '', - event: 'dblclick' // event: 'mouseover' - } - ) + xindicator: '', + event: 'dblclick', // event: 'mouseover' + }, + ); - $('.col:last').fadeIn(500) + $('.col:last').fadeIn(500); - totalcolumns++ + totalcolumns++; } function onColumnChange(id, text) { - const names = [] + const names = []; // console.log(id + " " + text ); // Get the names of all the columns right from the DOM - $('.col').each(function() { + $('.col').each(function () { // get ID of current column we are traversing over - const thisID = $(this).children('h2').attr('id') + const thisID = $(this).children('h2').attr('id'); if (id == thisID) { - names.push(text) + names.push(text); } else { - names.push($(this).text()) + names.push($(this).text()); } - }) + }); - updateColumns(names) + updateColumns(names); } function displayRemoveColumn() { - if (totalcolumns <= 0) return false + if (totalcolumns <= 0) return false; - $('.col:last').fadeOut(150, function() { - $(this).remove() - }) + $('.col:last').fadeOut(150, function () { + $(this).remove(); + }); - totalcolumns-- + totalcolumns--; } function createColumn(name) { - if (totalcolumns >= 8) return false + if (totalcolumns >= 8) return false; - drawNewColumn(name) - columns.push(name) + drawNewColumn(name); + columns.push(name); - const action = 'updateColumns' + const action = 'updateColumns'; - const data = columns + const data = columns; - sendAction(action, data) + sendAction(action, data); } function deleteColumn() { - if (totalcolumns <= 0) return false + if (totalcolumns <= 0) return false; - displayRemoveColumn() - columns.pop() + displayRemoveColumn(); + columns.pop(); - const action = 'updateColumns' + const action = 'updateColumns'; - const data = columns + const data = columns; - sendAction(action, data) + sendAction(action, data); } function updateColumns(c) { - columns = c + columns = c; - const action = 'updateColumns' + const action = 'updateColumns'; - const data = columns + const data = columns; - sendAction(action, data) + sendAction(action, data); } function deleteColumns(next) { // delete all existing columns: - $('.col').fadeOut('slow', next()) + $('.col').fadeOut('slow', next()); } function initColumns(columnArray) { - totalcolumns = 0 - columns = columnArray + totalcolumns = 0; + columns = columnArray; - $('.col').remove() + $('.col').remove(); for (const i in columnArray) { - column = columnArray[i] + column = columnArray[i]; - drawNewColumn(column) + drawNewColumn(column); } } function changeThemeTo(theme) { - currentTheme = theme + currentTheme = theme; if (theme == 'bigcards') { - $('#board').removeClass('smallcards') + $('#board').removeClass('smallcards'); } else { - $('#board').removeClass('bigcards') + $('#board').removeClass('bigcards'); } - $('#board').addClass(theme) + $('#board').addClass(theme); } /// /////////////////////////////////////////////////////// @@ -556,168 +575,177 @@ function changeThemeTo(theme) { /// /////////////////////////////////////////////////////// function setCookie(c_name, value, exdays) { - const exdate = new Date() - exdate.setDate(exdate.getDate() + exdays) - const c_value = `${escape(value) + (exdays === null ? '' : `; expires=${exdate.toUTCString()}`)};SameSite=Strict` - document.cookie = `${c_name}=${c_value}` + const exdate = new Date(); + exdate.setDate(exdate.getDate() + exdays); + const c_value = `${escape(value) + (exdays === null ? '' : `; expires=${exdate.toUTCString()}`)};SameSite=Strict`; + document.cookie = `${c_name}=${c_value}`; } function getCookie(c_name) { - let i - let x - let y - const ARRcookies = document.cookie.split(';') + let i; + let x; + let y; + const ARRcookies = document.cookie.split(';'); for (i = 0; i < ARRcookies.length; i++) { - x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('=')) - y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1) - x = x.replace(/^\s+|\s+$/g, '') + x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('=')); + y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1); + x = x.replace(/^\s+|\s+$/g, ''); if (x == c_name) { - return unescape(y) + return unescape(y); } } } function setName(name) { - sendAction('setUserName', name) + sendAction('setUserName', name); - setCookie('scrumscrum-username', name, 365) + setCookie('scrumscrum-username', name, 365); } function displayInitialUsers(users) { for (const i in users) { // console.log(users); - displayUserJoined(users[i].sid, users[i].user_name) + displayUserJoined(users[i].sid, users[i].user_name); } } function displayUserJoined(sid, user_name) { - name = '' - if (user_name) name = user_name - else name = sid.substring(0, 5) + name = ''; + if (user_name) name = user_name; + else name = sid.substring(0, 5); - $('#names-ul').append(`
  • ${name}
  • `) + $('#names-ul').append(`
  • ${name}
  • `); } function displayUserLeft(sid) { - name = '' - if (name) name = user_name - else name = sid + name = ''; + if (name) name = user_name; + else name = sid; - const id = `#user-${sid.toString()}` + const id = `#user-${sid.toString()}`; $('#names-ul') .children(id) - .fadeOut(1000, function() { - $(this).remove() - }) + .fadeOut(1000, function () { + $(this).remove(); + }); } function updateName(sid, name) { - const id = `#user-${sid.toString()}` + const id = `#user-${sid.toString()}`; - $('#names-ul').children(id).text(name) + $('#names-ul').children(id).text(name); } /// /////////////////////////////////////////////////////// /// /////////////////////////////////////////////////////// function boardResizeHappened(event, ui) { - const newsize = ui.size + const newsize = ui.size; - sendAction('setBoardSize', newsize) + sendAction('setBoardSize', newsize); } function resizeBoard(size) { $('.board-outline').animate({ height: size.height, - width: size.width - }) + width: size.width, + }); } /// /////////////////////////////////////////////////////// /// /////////////////////////////////////////////////////// function calcCardOffset() { - const offsets = {} - $('.card').each(function() { - const card = $(this) - $('.col').each(function(i) { - const col = $(this) - if (col.offset().left + col.outerWidth() > card.offset().left + card.outerWidth() || i === $('.col').length - 1) { + const offsets = {}; + $('.card').each(function () { + const card = $(this); + $('.col').each(function (i) { + const col = $(this); + if ( + col.offset().left + col.outerWidth() > + card.offset().left + card.outerWidth() || + i === $('.col').length - 1 + ) { offsets[card.attr('id')] = { col, - x: (card.offset().left - col.offset().left) / col.outerWidth() - } - return false + x: (card.offset().left - col.offset().left) / col.outerWidth(), + }; + return false; } - }) - }) - return offsets + }); + }); + return offsets; } // moves cards with a resize of the Board // doSync is false if you don't want to synchronize // with all the other users who are in this room function adjustCard(offsets, doSync) { - $('.card').each(function() { - const card = $(this) - const offset = offsets[this.id] + $('.card').each(function () { + const card = $(this); + const offset = offsets[this.id]; if (offset) { const data = { id: this.id, position: { left: offset.col.position().left + offset.x * offset.col.outerWidth(), - top: parseInt(card.css('top').slice(0, -2)) + top: parseInt(card.css('top').slice(0, -2)), }, oldposition: { left: parseInt(card.css('left').slice(0, -2)), - top: parseInt(card.css('top').slice(0, -2)) - } - } // use .css() instead of .position() because css' rotate + top: parseInt(card.css('top').slice(0, -2)), + }, + }; // use .css() instead of .position() because css' rotate // console.log(data); if (!doSync) { - card.css('left', data.position.left) - card.css('top', data.position.top) + card.css('left', data.position.left); + card.css('top', data.position.top); } else { // note that in this case, data.oldposition isn't accurate since // many moves have happened since the last sync // but that's okay becuase oldPosition isn't used right now - moveCard(card, data.position) - sendAction('moveCard', data) + moveCard(card, data.position); + sendAction('moveCard', data); } } - }) + }); } /// /////////////////////////////////////////////////////// /// /////////////////////////////////////////////////////// function download(filename, text) { - const element = document.createElement('a') - let mime = 'text/plain' + const element = document.createElement('a'); + let mime = 'text/plain'; if (filename.match(/.csv$/)) { - mime = 'text/csv' + mime = 'text/csv'; } - element.setAttribute('href', `data:${mime};charset=utf-8,${encodeURIComponent(text)}`) - element.setAttribute('download', filename) + element.setAttribute( + 'href', + `data:${mime};charset=utf-8,${encodeURIComponent(text)}`, + ); + element.setAttribute('download', filename); - element.style.display = 'none' - document.body.appendChild(element) - element.click() - document.body.removeChild(element) + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); } function addRevision(timestamp) { - const li = $(`
  • `) - const s1 = $('') - const s2 = $('delete revision') + const li = $(`
  • `); + const s1 = $(''); + const s2 = $( + 'delete revision', + ); if (typeof timestamp === 'string') { - timestamp = parseInt(timestamp) + timestamp = parseInt(timestamp); } - s1.text(moment(timestamp).format('LLLL')) + s1.text(moment(timestamp).format('LLLL')); - li.append(s1) - li.append(s2) - $('#revisions-list').append(li) + li.append(s1); + li.append(s2); + $('#revisions-list').append(li); // $('body').on("click", s1, function () { // socket.json.send({ @@ -740,241 +768,269 @@ $(() => { // disable image dragging // window.ondragstart = function() { return false; }; - if (boardInitialized === false) blockUI('') + if (boardInitialized === false) blockUI(''); // setTimeout($.unblockUI, 2000); - $('.add-post-it').on('click', function(e) { - const rotation = Math.random() * 10 - 5 // add a bit of random rotation (+/- 10deg) - const cardLeft = 150 + Math.random() * 400 - const cardTop = 20 + Math.random() * 50 - const uniqueID = Math.round(Math.random() * 99999999) // is this big enough to assure uniqueness? - console.log(e.clientX, e.clientY) - createCard(`card${uniqueID}`, '', cardLeft, cardTop, rotation, $(this).data('color'), e.clientX, e.clientY) - }) + $('.add-post-it').on('click', function (e) { + const rotation = Math.random() * 10 - 5; // add a bit of random rotation (+/- 10deg) + const cardLeft = 150 + Math.random() * 400; + const cardTop = 20 + Math.random() * 50; + const uniqueID = Math.round(Math.random() * 99999999); // is this big enough to assure uniqueness? + console.log(e.clientX, e.clientY); + createCard( + `card${uniqueID}`, + '', + cardLeft, + cardTop, + rotation, + $(this).data('color'), + e.clientX, + e.clientY, + ); + }); // Style changer $('#smallify').on('click', () => { if (currentTheme == 'bigcards') { - changeThemeTo('smallcards') + changeThemeTo('smallcards'); } else if (currentTheme == 'smallcards') { - changeThemeTo('bigcards') + changeThemeTo('bigcards'); } - sendAction('changeTheme', currentTheme) + sendAction('changeTheme', currentTheme); - return false - }) + return false; + }); $('#icon-col').on( 'hover', () => { - $('.col-icon').fadeIn(10) + $('.col-icon').fadeIn(10); }, () => { - $('.col-icon').fadeOut(150) - } - ) + $('.col-icon').fadeOut(150); + }, + ); $('#add-col').on('click', () => { - createColumn('Nouvelle colonne') - return false - }) + createColumn('Nouvelle colonne'); + return false; + }); $('#delete-col').on('click', () => { - deleteColumn() - return false - }) + deleteColumn(); + return false; + }); - const user_name = getCookie('scrumscrum-username') + const user_name = getCookie('scrumscrum-username'); - $('#yourname-input').on('focus', function() { + $('#yourname-input').on('focus', function () { if ($(this).val() == 'anonyme') { - $(this).val('') + $(this).val(''); } - $(this).addClass('focused') - }) + $(this).addClass('focused'); + }); - $('#yourname-input').on('blur', function() { + $('#yourname-input').on('blur', function () { if ($(this).val() === '') { - $(this).val('anonyme') + $(this).val('anonyme'); } - $(this).removeClass('focused') + $(this).removeClass('focused'); - setName($(this).val()) - }) + setName($(this).val()); + }); - $('#yourname-input').val(user_name) - $('#yourname-input').trigger('blur') + $('#yourname-input').val(user_name); + $('#yourname-input').trigger('blur'); - $('#yourname-li').hide() + $('#yourname-li').hide(); - $('#yourname-input').on('keypress', function(e) { - code = e.keyCode ? e.keyCode : e.which + $('#yourname-input').on('keypress', function (e) { + code = e.keyCode ? e.keyCode : e.which; if (code == 10 || code == 13) { - $(this).trigger('blur') + $(this).trigger('blur'); } - }) + }); $('.sticker').draggable({ revert: true, - zIndex: 1000 - }) + zIndex: 1000, + }); $('.board-outline').resizable({ ghost: false, minWidth: 640, minHeight: 480, maxWidth: 1140, - maxHeight: 855 - }) + maxHeight: 855, + }); // A new scope for precalculating - ;(function() { - let offsets + (function () { + let offsets; $('.board-outline').on('resizestart', () => { - offsets = calcCardOffset() - }) + offsets = calcCardOffset(); + }); $('.board-outline').on('resize', (event, ui) => { - adjustCard(offsets, false) - }) + adjustCard(offsets, false); + }); $('.board-outline').on('resizestop', (event, ui) => { - boardResizeHappened(event, ui) - adjustCard(offsets, true) - }) - }()) + boardResizeHappened(event, ui); + adjustCard(offsets, true); + }); + })(); $('#marker').draggable({ axis: 'x', - containment: 'parent' - }) + containment: 'parent', + }); $('#eraser').draggable({ axis: 'x', - containment: 'parent' - }) + containment: 'parent', + }); $('#export-txt').on('click', () => { socket.json.send({ action: 'exportTxt', - data: $('.col').length !== 0 ? $('.col').css('width').replace('px', '') : null - }) - }) + data: + $('.col').length !== 0 + ? $('.col').css('width').replace('px', '') + : null, + }); + }); $('#export-csv').on('click', () => { socket.json.send({ action: 'exportCsv', - data: $('.col').length !== 0 ? $('.col').css('width').replace('px', '') : null - }) - }) + data: + $('.col').length !== 0 + ? $('.col').css('width').replace('px', '') + : null, + }); + }); $('#export-json').on('click', () => { socket.json.send({ action: 'exportJson', data: { width: $('.board-outline').css('width').replace('px', ''), - height: $('.board-outline').css('height').replace('px', '') - } - }) - }) + height: $('.board-outline').css('height').replace('px', ''), + }, + }); + }); $('#import-file').on('click', (evt) => { - evt.stopPropagation() - evt.preventDefault() + evt.stopPropagation(); + evt.preventDefault(); - const f = $('#import-input').get(0).files[0] - const fr = new FileReader() - fr.onloadend = function() { - const text = fr.result + const f = $('#import-input').get(0).files[0]; + const fr = new FileReader(); + fr.onloadend = function () { + const text = fr.result; socket.json.send({ action: 'importJson', - data: JSON.parse(text) - }) - } - fr.readAsText(f) - }) + data: JSON.parse(text), + }); + }; + fr.readAsText(f); + }); $('#create-revision').on('click', () => { socket.json.send({ action: 'createRevision', data: { width: $('.board-outline').css('width').replace('px', ''), - height: $('.board-outline').css('height').replace('px', '') - } - }) - }) -}) + height: $('.board-outline').css('height').replace('px', ''), + }, + }); + }); +}); /** Doubleclick on mobile + Layout Framemo with tabs * */ $(document).ready(() => { - if (window.location.href != `${window.location.protocol}//${window.location.host}/`) { + if ( + window.location.href != + `${window.location.protocol}//${window.location.host}/` + ) { // Not on homepage /** Double click on mobile interface * */ - let clickTimer = null - let clickTarget = null - let editTarget = null + let clickTimer = null; + let clickTarget = null; + let editTarget = null; function doubletapCards(selector) { - $(`${selector} .stickertarget`).addClass('doubletap') // Escape multi bound + $(`${selector} .stickertarget`).addClass('doubletap'); // Escape multi bound $(`${selector} .doubletap`).on('click', () => { - clickTarget = selector.replace('#', '') + clickTarget = selector.replace('#', ''); if (clickTimer == null) { clickTimer = setTimeout(() => { - clickTimer = null - }, 1000) + clickTimer = null; + }, 1000); } else { // console.log('doubleclick : '+clickTimer+':'+editTarget); - clearTimeout(clickTimer) - clickTimer = null + clearTimeout(clickTimer); + clickTimer = null; - if (editTarget == clickTarget && clickTarget !== undefined && clickTarget !== null) { - $(`#${clickTarget.replace('content:', '')} .doubletap`).trigger('dblclick') + if ( + editTarget == clickTarget && + clickTarget !== undefined && + clickTarget !== null + ) { + $(`#${clickTarget.replace('content:', '')} .doubletap`).trigger( + 'dblclick', + ); } } - editTarget = clickTarget - }) + editTarget = clickTarget; + }); } function doubletapTitle(selector) { - $(selector).addClass('doubletap') // Escape multi bound + $(selector).addClass('doubletap'); // Escape multi bound $(`${selector}.doubletap`).on('click', () => { - clickTarget = selector.replace('#', '') + clickTarget = selector.replace('#', ''); if (clickTimer == null) { clickTimer = setTimeout(() => { - clickTimer = null - }, 1000) + clickTimer = null; + }, 1000); } else { // console.log('doubleclick : '+clickTimer+':'+editTarget); - clearTimeout(clickTimer) - clickTimer = null + clearTimeout(clickTimer); + clickTimer = null; - if (editTarget == clickTarget && clickTarget !== undefined && clickTarget !== null) { - $(`#${clickTarget}.doubletap`).trigger('dblclick') + if ( + editTarget == clickTarget && + clickTarget !== undefined && + clickTarget !== null + ) { + $(`#${clickTarget}.doubletap`).trigger('dblclick'); } } - editTarget = clickTarget - }) + editTarget = clickTarget; + }); } setInterval(() => { // Add periodically the doubletap event on new cards - $('.stickertarget:not(.doubletap)').each(function() { - doubletapCards(`#${$(this).attr('id').replace('content:', '')}`) - }) - $('#board-table .col h2:not(.doubletap)').each(function() { - doubletapTitle(`#${$(this).attr('id')}`) - }) - }, 500) + $('.stickertarget:not(.doubletap)').each(function () { + doubletapCards(`#${$(this).attr('id').replace('content:', '')}`); + }); + $('#board-table .col h2:not(.doubletap)').each(function () { + doubletapTitle(`#${$(this).attr('id')}`); + }); + }, 500); /** Layout Framemo - Tabs * */ @@ -987,18 +1043,18 @@ $(document).ready(() => { // check if size is imported from db $('.board-outline').css({ width: `${$('.board-outline.ui-resizable').width() + 16}px`, - height: '466px' - }) - const data = {} + height: '466px', + }); + const data = {}; data.size = { height: 466, - width: $('.board-outline.ui-resizable').width() + 16 - } - boardResizeHappened('resizestop', data) // using scrumblr function that keep size in db after a resize + width: $('.board-outline.ui-resizable').width() + 16, + }; + boardResizeHappened('resizestop', data); // using scrumblr function that keep size in db after a resize } - clearInterval(boardReady) + clearInterval(boardReady); } - }, 500) + }, 500); // $("#scrumblr") // .append($(".names, .stickers, .buttons")) @@ -1015,144 +1071,160 @@ $(document).ready(() => { // $("#about").append($("#tuto-faq, #le-logiciel, #jardin")) // Style - $('#smallify').on('click', function() { + $('#smallify').on('click', function () { if (currentTheme == 'bigcards') { - $(this).children('i').removeClass('fa-search-plus').addClass('fa-search-minus') + $(this) + .children('i') + .removeClass('fa-search-plus') + .addClass('fa-search-minus'); } else { - $(this).children('i').removeClass('fa-search-minus').addClass('fa-search-plus') + $(this) + .children('i') + .removeClass('fa-search-minus') + .addClass('fa-search-plus'); } - }) + }); - $('#full-page').on('click', function() { + $('#full-page').on('click', function () { if ($(this).children('i').hasClass('fa-expand')) { - $(this).children('i').removeClass('fa-expand').addClass('fa-compress') - $('#header-bar').hide() + $(this).children('i').removeClass('fa-expand').addClass('fa-compress'); + $('#header-bar').hide(); } else { - $(this).children('i').removeClass('fa-compress').addClass('fa-expand') - $('#header-bar').show() + $(this).children('i').removeClass('fa-compress').addClass('fa-expand'); + $('#header-bar').show(); } - toggleFullScreen() - }) + toggleFullScreen(); + }); /** Mode iframe * */ if (top.location != self.document.location) { - $('#header-bar').hide() + $('#header-bar').hide(); } // put URL in share input - const mainurl = location.toString().split('#')[0] - $('.replace-url').val(mainurl) - $('.share-iframe').text($('.share-iframe').text().replace('{{replace-url}}', mainurl)) + const mainurl = location.toString().split('#')[0]; + $('.replace-url').val(mainurl); + $('.share-iframe').text( + $('.share-iframe').text().replace('{{replace-url}}', mainurl), + ); // copy URL to clipboard $('#copyurl').on('click', (e) => { - e.preventDefault() - const node = document.getElementById('taburl') - node.disabled = null - node.select() - const success = document.execCommand('copy') + e.preventDefault(); + const node = document.getElementById('taburl'); + node.disabled = null; + node.select(); + const success = document.execCommand('copy'); if (success) { - getSelection().removeAllRanges() - node.disabled = 'disabled' - alert('URL du tableau copiée dans votre presse-papier !') + getSelection().removeAllRanges(); + node.disabled = 'disabled'; + alert('URL du tableau copiée dans votre presse-papier !'); } else { alert( - "Impossible de copier l'URL du tableau dans votre presse-papier. Veuillez copier son adresse manuellement (Ctrl+C)." - ) + "Impossible de copier l'URL du tableau dans votre presse-papier. Veuillez copier son adresse manuellement (Ctrl+C).", + ); } - }) + }); } -}) +}); function go() { - let { value } = document.forms[0].elements.name - value = value.replace(/[\/\?&#]/g, '') - window.location.href = value - return false + let { value } = document.forms[0].elements.name; + value = value.replace(/[\/\?&#]/g, ''); + window.location.href = value; + return false; } $(() => { - const headerBarUrl = $('#header-bar').data('url') + const headerBarUrl = $('#header-bar').data('url'); if (headerBarUrl) { - const getJSON = function(url, callback) { - const xhr = new XMLHttpRequest() - xhr.open('GET', url, true) - xhr.responseType = 'json' - xhr.onload = function() { - const { status } = xhr + const getJSON = function (url, callback) { + const xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'json'; + xhr.onload = function () { + const { status } = xhr; if (status === 200) { - callback(null, xhr.response) + callback(null, xhr.response); } else { - callback(status, xhr.response) + callback(status, xhr.response); } - } - xhr.send() - } + }; + xhr.send(); + }; getJSON(headerBarUrl, (err, data) => { if (err !== null) { - console.log(`Something went wrong: ${err}`) + console.log(`Something went wrong: ${err}`); } else { - document.getElementById('header-bar').innerHTML = data.markup - const styleElement = document.createElement('style') - styleElement.innerHTML = data.style - document.getElementById('header-bar').appendChild(styleElement) + document.getElementById('header-bar').innerHTML = data.markup; + const styleElement = document.createElement('style'); + styleElement.innerHTML = data.style; + document.getElementById('header-bar').appendChild(styleElement); } - }) + }); } -}) +}); $(() => { // check if hash used to show informations if (window.location.hash == '#settings' || window.location.hash == '#share') { - toggleNav(window.location.hash) + toggleNav(window.location.hash); } // Toggle Nav on Click - $('.toggle-nav').on('click', function() { - let target = $(this).attr('href') + $('.toggle-nav').on('click', function () { + let target = $(this).attr('href'); - if (target === '#' || ($('#site-wrapper').hasClass('show-nav') && target == window.location.hash)) { - target = false - history.replaceState('', '', '#') + if ( + target === '#' || + ($('#site-wrapper').hasClass('show-nav') && + target == window.location.hash) + ) { + target = false; + history.replaceState('', '', '#'); } else { - history.replaceState('', '', target) + history.replaceState('', '', target); } - toggleNav(target) - return false - }) + toggleNav(target); + return false; + }); // When nav opened, a click on the canvas hides the menu - $('body').on('click', '.show-nav #site-canvas main, .show-nav .main-header', (e) => { - history.replaceState('', '', '#') - toggleNav(false) - return false - }) - $('.backgrounds .bg').on('click', function() { + $('body').on( + 'click', + '.show-nav #site-canvas main, .show-nav .main-header', + (e) => { + history.replaceState('', '', '#'); + toggleNav(false); + return false; + }, + ); + $('.backgrounds .bg').on('click', function () { if ($(this).hasClass('selected')) { - $('body').css('background-image', 'none') - $(this).removeClass('selected') + $('body').css('background-image', 'none'); + $(this).removeClass('selected'); } else { - $('.selected').removeClass('selected') - $('.bgurl').val('') - $('body').css('background-image', `url("/${$(this).attr('src')}")`) - $(this).addClass('selected') + $('.selected').removeClass('selected'); + $('.bgurl').val(''); + $('body').css('background-image', `url("/${$(this).attr('src')}")`); + $(this).addClass('selected'); } - }) - $('.bgurl').on('change', function() { - const url = $(this).val() + }); + $('.bgurl').on('change', function () { + const url = $(this).val(); if (url) { - $('.selected').removeClass('selected') - $('body').css('background-image', `url("${url}")`) + $('.selected').removeClass('selected'); + $('body').css('background-image', `url("${url}")`); } - }) -}) + }); +}); function toggleNav(target) { if ($('#site-wrapper').hasClass('show-nav') && target === false) { - $('#site-wrapper').removeClass('show-nav') + $('#site-wrapper').removeClass('show-nav'); } else { - $('#share, #settings').hide() + $('#share, #settings').hide(); if (target !== false) { - $(target).show() + $(target).show(); } - $('#site-wrapper').addClass('show-nav') + $('#site-wrapper').addClass('show-nav'); } - return false + return false; } diff --git a/config.js b/config.js index f8aa306..6c47ce4 100644 --- a/config.js +++ b/config.js @@ -1,19 +1,23 @@ -const { argv } = require('yargs').usage( - 'Usage: $0 [--port INTEGER [8080]] \ - [--baseurl STRING ["/"]] \ - [--redis STRING:INT [127.0.0.1:6379]] \ - [--headerBarUrl STRING] \ - [--logoUrl STRING] \ - [--faviconUrl STRING] \ ' -) +import yargs from 'yargs' +import { hideBin } from 'yargs/helpers' +const argv = yargs(hideBin(process.argv)) + .parse() + //.usage( +// 'Usage: $0 [--port INTEGER [8080]] \ +// [--baseurl STRING ["/"]] \ +// [--redis STRING:INT [127.0.0.1:6379]] \ +// [--headerBarUrl STRING] \ +// [--logoUrl STRING] \ +// [--faviconUrl STRING] \ ' +//) -exports.server = { +export const server = { port: argv.port || 8080, baseurl: argv.baseurl || '/' } const redis_conf = argv.redis || '127.0.0.1:6379' -exports.database = { +export const database = { sock: argv.sock || false, type: 'redis', prefix: '#memo#', @@ -21,6 +25,6 @@ exports.database = { port: redis_conf.split(':')[1] || 6379 } -exports.headerBarUrl = argv.headerBarUrl || null -exports.logoUrl = argv.logoUrl || null -exports.faviconUrl = argv.faviconUrl || null +export const headerBarUrl = argv.headerBarUrl || null +export const logoUrl = argv.logoUrl || null +export const faviconUrl = argv.faviconUrl || null diff --git a/eslint.config.mjs b/eslint.config.mjs index 10806fd..ca39c83 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,49 +1,67 @@ -import { defineConfig, globalIgnores } from 'eslint/config' -import globals from 'globals' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import js from '@eslint/js' -import { FlatCompat } from '@eslint/eslintrc' +/** + * THIS FILE WAS AUTO-GENERATED. + * PLEASE DO NOT EDIT IT MANUALLY. + * =============================== + * IF YOU'RE COPYING THIS INTO AN ESLINT CONFIG, REMOVE THIS COMMENT BLOCK. + */ -const __filename = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}) +import path from 'node:path'; -export default defineConfig([globalIgnores([ - 'node_modules', - 'client/lib' -]), { - extends: compat.extends('airbnb-base'), +import { includeIgnoreFile } from '@eslint/compat'; +import js from '@eslint/js'; +import { configs, plugins } from 'eslint-config-airbnb-extended'; +import { rules as prettierConfigRules } from 'eslint-config-prettier'; +import prettierPlugin from 'eslint-plugin-prettier'; - languageOptions: { ecmaVersion: 13 }, +export const projectRoot = path.resolve('.'); +export const gitignorePath = path.resolve(projectRoot, '.gitignore'); - rules: { - semi: ['error', 'never'], +const jsConfig = [ + // ESLint Recommended Rules + { + name: 'js/config', + ...js.configs.recommended, + }, + // Stylistic Plugin + plugins.stylistic, + // Import X Plugin + plugins.importX, + // Airbnb Base Recommended Config + ...configs.base.recommended, +]; - 'max-len': ['error', { code: 104 }], +const nodeConfig = [ + // Node Plugin + plugins.node, + // Airbnb Node Recommended Config + ...configs.node.recommended, +]; - 'vars-on-top': 'off', - 'class-methods-use-this': 'off', - 'import/no-unresolved': 'off', - 'import/extensions': ['error', 'always'], - 'import/prefer-default-export': ['off'], - 'no-use-before-define': ['off'], - eqeqeq: ['error', 'smart'], - 'comma-dangle': ['error', 'never'], +const prettierConfig = [ + // Prettier Plugin + { + name: 'prettier/plugin/config', + plugins: { + prettier: prettierPlugin, + }, + }, + // Prettier Config + { + name: 'prettier/config', + rules: { + ...prettierConfigRules, + 'prettier/prettier': 'error', + }, + }, +]; - 'object-curly-newline': ['error', { multiline: true }], - - 'func-names': ['error', 'never'], - 'space-before-function-paren': ['error', 'never'], - - 'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }], - - 'no-new': 'off', - 'no-restricted-syntax': 'off', - 'guard-for-in': 'off' - } -}]) +export default [ + // Ignore .gitignore files/folder in eslint + includeIgnoreFile(gitignorePath), + // Javascript Config + ...jsConfig, + // Node Config + ...nodeConfig, + // Prettier Config + ...prettierConfig, +]; diff --git a/eslint.config.mjs.old b/eslint.config.mjs.old new file mode 100644 index 0000000..10806fd --- /dev/null +++ b/eslint.config.mjs.old @@ -0,0 +1,49 @@ +import { defineConfig, globalIgnores } from 'eslint/config' +import globals from 'globals' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import js from '@eslint/js' +import { FlatCompat } from '@eslint/eslintrc' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}) + +export default defineConfig([globalIgnores([ + 'node_modules', + 'client/lib' +]), { + extends: compat.extends('airbnb-base'), + + languageOptions: { ecmaVersion: 13 }, + + rules: { + semi: ['error', 'never'], + + 'max-len': ['error', { code: 104 }], + + 'vars-on-top': 'off', + 'class-methods-use-this': 'off', + 'import/no-unresolved': 'off', + 'import/extensions': ['error', 'always'], + 'import/prefer-default-export': ['off'], + 'no-use-before-define': ['off'], + eqeqeq: ['error', 'smart'], + 'comma-dangle': ['error', 'never'], + + 'object-curly-newline': ['error', { multiline: true }], + + 'func-names': ['error', 'never'], + 'space-before-function-paren': ['error', 'never'], + + 'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }], + + 'no-new': 'off', + 'no-restricted-syntax': 'off', + 'guard-for-in': 'off' + } +}]) diff --git a/lib/data.js b/lib/data.js deleted file mode 100644 index b816336..0000000 --- a/lib/data.js +++ /dev/null @@ -1,44 +0,0 @@ -const conf = require('../config.js').database - -exports.db = require(`./data/${conf.type}.js`).db - -/* -var db = function(callback) { } - -db.prototype = { - clearRoom: function(room, callback) { }, - - // theme commands - setTheme: function(room, theme) { }, - - getTheme: function(room, callback) { }, - - // revisions commands - setRevisions: function(room, revisions) { }, - - getRevisions: function(room, callback) { }, - - // Column commands - createColumn: function(room, name, callback) { }, - - getAllColumns: function(room, callback) { }, - - deleteColumn: function(room) { }, - - setColumns: function(room, columns) { }, - - // Card commands - createCard: function(room, id, card) { }, - - getAllCards: function(room, callback) { }, - - cardEdit: function(room, id, text) { }, - - cardSetXY: function(room, id, x, y) { }, - - deleteCard: function(room, id) { }, - - addSticker: function(room, cardId, stickerId) { } -}; -exports.db = db; -*/ diff --git a/lib/data/redis.js b/lib/data/redis.js index e8a3b47..3677159 100644 --- a/lib/data/redis.js +++ b/lib/data/redis.js @@ -15,7 +15,7 @@ const REDIS_PREFIX = '#memo#' // For Redis Debugging -const db = function(callback) { +export const db = function(callback) { if (conf.sock) { console.log(`Opening redis connection to socket ${conf.host}`) redisClient = redis.createClient(conf.host) @@ -227,4 +227,3 @@ db.prototype = { } } -exports.db = db diff --git a/lib/rooms.js b/lib/rooms.js index 7682077..3bad898 100644 --- a/lib/rooms.js +++ b/lib/rooms.js @@ -20,7 +20,7 @@ const room_users = {} const sid_rooms = {} // Add a client to a room and return the sid:client mapping. -exports.add_to_room = function(client, room, callback) { +export const add_to_room = function(client, room, callback) { // console.log('Client ' + client.username + ' (' + client.id + ') added to room ' + room); if (!(sid_rooms.hasOwnProperty(client.id))) sid_rooms[client.id] = new sets.Set() @@ -37,7 +37,7 @@ exports.add_to_room = function(client, room, callback) { // Remove a client from all rooms and return the username:client // mapping for everybody in those rooms. -exports.remove_from_all_rooms = function(client, callback) { +export const remove_from_all_rooms = function(client, callback) { const affected_clients = new sets.Set() if (sid_rooms.hasOwnProperty(client.id)) { const client_rooms = sid_rooms[client.id].array() @@ -79,26 +79,26 @@ function remove_from_room(client, room, callback) { if (room_users[room].size() === 0) { delete room_users[room] } } - callback(exports.room_clients(room)) + callback(room_clients(room)) } // Return list of clients in the given room. -exports.room_clients = function(room) { +export const room_clients = function(room) { return rooms.hasOwnProperty(room) ? rooms[room].array() : [] } // Return true if room contains the given client, false otherwise. -exports.client_in_room = function(room, client) { +export const client_in_room = function(room, client) { return rooms.hasOwnProperty(room) && rooms[room].has(client) } // Return list of usernames in given room -exports.users_in_room = function(room) { +export const users_in_room = function(room) { return room_users.hasOwnProperty(room) ? room_users[room].array() : [] } // Return list of usernames in given room -exports.room_clients_other_than_me = function(room, client) { +export const room_clients_other_than_me = function(room, client) { if (rooms.hasOwnProperty(room)) { const clients = rooms[room] // console.dir(clients.array()); @@ -112,7 +112,7 @@ exports.room_clients_other_than_me = function(room, client) { } // gets the current room of the client (assumes one room -- will select first one if in multiple) -exports.get_room = function(client) { +export const get_room = function(client) { let client_rooms = null if (sid_rooms.hasOwnProperty(client.id)) { @@ -125,9 +125,9 @@ exports.get_room = function(client) { // Generic server code -exports.add_to_room_and_announce = function(client, room, msg) { +export const add_to_room_and_announce = function(client, room, msg) { // Add user info to the current dramatis personae - exports.add_to_room(client, room, (clients) => { + add_to_room(client, room, (clients) => { // Broadcast new-user notification for (let i = 0; i < clients.length; i++) { if (clients[i].id != client.id) { clients[i].json.send(msg) } @@ -136,7 +136,7 @@ exports.add_to_room_and_announce = function(client, room, msg) { } /* -exports.on_leave_room = function (client, room) { +export const on_leave_room = function (client, room) { remove_from_room(client, room, function(clients) { console.log(client + ' disconnected, yo'); @@ -152,8 +152,8 @@ exports.on_leave_room = function (client, room) { } */ // remember that this announces to all rooms that this client was a member of -exports.remove_from_all_rooms_and_announce = function(client, msg) { - exports.remove_from_all_rooms(client, (clients) => { +export const remove_from_all_rooms_and_announce = function(client, msg) { + remove_from_all_rooms(client, (clients) => { for (let i = 0; i < clients.length; i++) { if (clients[i].id != client.id) { clients[i].json.send(msg) } } @@ -165,7 +165,7 @@ exports.remove_from_all_rooms_and_announce = function(client, msg) { /// /////////////////////////// // Broadcast message to all clients -exports.broadcast = function(msg) { +export const broadcast = function(msg) { if (socket) socket.broadcast(msg) net_server_streams.each((stream) => { stream.write(`${JSON.stringify(msg)}\r\n`) @@ -173,13 +173,13 @@ exports.broadcast = function(msg) { } // Broadcast message to all clients in a given room. -exports.broadcast_room = function(room, msg) { - const clients = exports.room_clients(room) +export const broadcast_room = function(room, msg) { + const clients = room_clients(room) for (let i = 0; i < clients.length; i++) { clients[i].json.send(msg) } } // Broadcast message to all the other clients that are in rooms with this client -exports.broadcast_to_roommates = function(client, msg) { +export const broadcast_to_roommates = function(client, msg) { let roommates = new sets.Set() if (sid_rooms.hasOwnProperty(client.id)) { diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 98674d2..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6006 +0,0 @@ -{ - "name": "scrumblr", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "scrumblr", - "version": "1.0.0", - "license": "AGPL-3.0", - "dependencies": { - "async": "~0.9.0", - "bootstrap-icons": "^1.8.2", - "compression": "^1.1.0", - "express": "^4.18.1", - "html2canvas": "^1.4.1", - "jade": "~1.5.0", - "redis": "~0.12.1", - "reload": "^3.2.0", - "sanitizer": "~0.1.1", - "simplesets": "~1.2.0", - "socket.io": "1.x", - "typeface-inter": "^3.18.1", - "yargs": "~2.3.0" - }, - "devDependencies": { - "forever": "^0.15.3", - "nodemon": "^2.0.16" - }, - "engines": { - "node": ">=0.4.7" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==", - "license": "MIT" - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "license": "BSD-3-Clause OR MIT", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==" - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==", - "license": "MIT" - }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha512-437oANT9tP582zZMwSvZGy2nmSeAb8DW2me3y+Uv1Wp2Rulr8Mqlyrv3E7MLxmsiaPSMMDmiDVzgE+e8zlMx9g==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha512-bYeph2DFlpK1XmGs6fvlLRUN29QISM3GBuUwSFsMY2XRx4AvC0WNCS57j4c/xGrK2RS24C1w3YoBOsw9fT46tQ==", - "dependencies": { - "callsite": "1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha512-YRc9zvVz4wNaxcXmiSgb9LAg7YYwqQ2xd0Sj6osfA7k/PKmIGVlnOYs3wOFdkRC9/JpQu8sGt/zHgJV7xzerfg==" - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/bootstrap-icons": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz", - "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/broadway": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", - "integrity": "sha512-zivf7KWx8ftTEsXaKfmve6wdSfbDJ6NLXwhwWN4Q1z5+/nsHWALP952KV9jJbJGwjZHEMZABHyuKqEAh3wb2kw==", - "dev": true, - "dependencies": { - "cliff": "0.1.9", - "eventemitter2": "0.4.14", - "nconf": "0.6.9", - "utile": "0.2.1", - "winston": "0.8.0" - }, - "engines": { - "node": ">= 0.6.4" - } - }, - "node_modules/broadway/node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", - "dev": true - }, - "node_modules/broadway/node_modules/cliff": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", - "integrity": "sha512-2EECQDk23AtYy9WTUDS0UwdlyGJe62IatdR9dOfG/T3+VIoC6/SA5AnYJWGTjXjweTYL360HEGu4DchCeee4Ng==", - "dev": true, - "dependencies": { - "colors": "0.x.x", - "eyes": "0.1.x", - "winston": "0.8.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/broadway/node_modules/pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/broadway/node_modules/winston": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", - "integrity": "sha512-BoFzn3FEOWlq+1rDbDrbD093E3IRqukS8DYiqtY4vblIFR+5MSGUstAU228MGJa0vodiqm/iU2c8OGw6Iorx1g==", - "dev": true, - "dependencies": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/caller/-/caller-1.1.0.tgz", - "integrity": "sha512-n+21IZC3j06YpCWaxmUy5AnVqhmCIM2bQtqQyy00HJlmStRt6kwDX5F9Z97pqwAB+G/tgSz6q/kUBbNyQzIubw==", - "dev": true, - "license": "MIT" - }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", - "engines": { - "node": "*" - } - }, - "node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/character-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "integrity": "sha512-FtpaoJWMk2JsI8h/Qhc5cLQMMT8cbqxDJ/vP2t5a1TcjnSPHGj0dcovj5H6lR5gzMAgJbe5dlIfbx1rGufvHgw==", - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "optionalDependencies": { - "fsevents": "^1.0.0" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/class-utils/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-color": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", - "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.64", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cliff": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", - "integrity": "sha512-roZWcC2Cxo/kKjRXw7YUpVNtxJccbvcl7VzTjUYgLQk6Ot0R8bm2netbhSZYWWNrKlOO/7HD6GXHl8dtzE6SiQ==", - "dev": true, - "dependencies": { - "colors": "~1.0.3", - "eyes": "~0.1.8", - "winston": "0.8.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/cliff/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ==", - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", - "license": "MIT" - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.0.2", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/constantinople": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "integrity": "sha512-ZF+ejGc/Gu8ucEaiTOgbptlCxKnzHtUaS7rwB/ZYjnoCZxZyuu82V6zQB/Ax/CS/rp/x2FI/x8gQxrtC4ekxlw==", - "deprecated": "Please update to at least constantinople 3.1.1", - "license": "MIT", - "dependencies": { - "uglify-js": "~2.4.0" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT" - }, - "node_modules/css": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "integrity": "sha512-qmTYWhHk910nQWnGqMAiWWPQlB6tESiWgNebQJmiozOAGcBAQ1+U/UzUOkhdrcshlkSRRiKWodwmVvO0OmnIGg==", - "dependencies": { - "css-parse": "1.0.4", - "css-stringify": "1.0.5" - } - }, - "node_modules/css-line-break": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", - "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", - "license": "MIT", - "dependencies": { - "utrie": "^1.0.2" - } - }, - "node_modules/css-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "integrity": "sha512-pfstzKVRZiHprDXdsmtfH1HYUEw22lzjuHdnpe1hscwoQvgW2C5zDQIBE0RKoALEReTn9W1ECdY8uaT/kO4VfA==" - }, - "node_modules/css-stringify": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "integrity": "sha512-aIThpcErhG5EyHorGqNlTh0TduNBqLrrXLO3x5rku3ZKBxuVfY+T7noyM2G2X/01iQANqJUb6d3+FLoa+N7Xwg==" - }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-equal/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/director": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", - "integrity": "sha512-Cuia7IBvmSanM+7ZmKYtP9hq+Du7n7mv2cpCt8GiEIkUDni0ecSlVCFJUL6HWwGzqLX03uA49xVOZOjwnabWmQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", - "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", - "license": "MIT", - "dependencies": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "~1.1.5" - } - }, - "node_modules/engine.io-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.6.tgz", - "integrity": "sha512-6+rInQu8xU7c0fIF6RC4SRKuHVWPt8Xq0bZYS4lMrTwmhRineOlEMsU3X0zS5mHIvCgJsmpOKEX7DhihGk7j0g==", - "license": "MIT", - "dependencies": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~1.1.5", - "xmlhttprequest-ssl": "1.6.3", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.2" - } - }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "license": "MIT" - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "license": "MIT", - "dependencies": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - }, - "node_modules/engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha512-3UyTJo+5Jbmr7rd3MosTAApK7BOIo4sjx8dJYSHa3Em5R3A9Y2s9GWu4JFJe6Px0VieJC0hKUA5NBytC+O7k2A==", - "license": "MIT", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" - } - }, - "node_modules/engine.io/node_modules/accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha512-AOPopplFOUlmUugwiZUCDpOwmqvSgdCyE8iJVLWI4NcB7qfMKQN34dn5xYtlUU03XGG5egRWW4NW5gIxpa5hEA==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.11", - "negotiator": "0.6.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.2" - } - }, - "node_modules/engine.io/node_modules/ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "license": "MIT" - }, - "node_modules/engine.io/node_modules/negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha512-qTxkr1RoLw5Pz+1+PTJ/66hWuyi2LEOeOuIDJDlx6JF8x75bmD5C7qXTg2UlX5W9rLfkqKP+r8q6Vy6NWdWrbw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "license": "MIT", - "dependencies": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "license": "ISC", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/event-stream": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", - "integrity": "sha512-PzynKvHzEq8UpM5xBNuz8fSufJik0619XuJp5uXCC3X6PpmbHUmsWbpfCBS+grDG2xFBpsDF9TbtftWFEpDKaA==", - "dev": true, - "dependencies": { - "optimist": "0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/event-stream/node_modules/optimist": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", - "integrity": "sha512-Wy7E3cQDpqsTIFyW7m22hSevyTLxw850ahYv7FWsw4G6MIKVTZ8NSA95KBrQ95a4SMsMr1UGUUnwEFKhVaSzIg==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "wordwrap": ">=0.0.1 <0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "license": "ISC", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "dev": true, - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/flatiron": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", - "integrity": "sha512-+X3/0hl9in0FJPsPB5/xTpkxxMzDSoA4cyon46HtXhrfEbpqBvKxpR+HJGqMjKv4jcBmoLjEtTVIAADJjLjv8A==", - "dev": true, - "dependencies": { - "broadway": "~0.3.2", - "director": "1.2.7", - "optimist": "0.6.0", - "prompt": "0.2.14" - }, - "bin": { - "flatiron": "bin/flatiron" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/flatiron/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/flatiron/node_modules/optimist": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", - "integrity": "sha512-ubrZPyOU0AHpXkmwqfWolap+eHMwQ484AKivkf0ZGyysd6fUJZl7ow9iu5UNV1vCZv46HQ7EM83IC3NGJ820hg==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/forever/-/forever-0.15.3.tgz", - "integrity": "sha512-yUy1bmHlsX9NasrUMOPk6CiE53y08+jMl8Xoc3LOTJ22BRJLpG9IXPa+oJMGanSMMumoV/aPcGmDu+nIFMMezQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliff": "~0.1.9", - "clone": "^1.0.2", - "colors": "~0.6.2", - "flatiron": "~0.4.2", - "forever-monitor": "~1.7.0", - "nconf": "~0.6.9", - "nssocket": "~0.5.1", - "object-assign": "^3.0.0", - "optimist": "~0.6.0", - "path-is-absolute": "~1.0.0", - "prettyjson": "^1.1.2", - "shush": "^1.0.0", - "timespan": "~2.3.0", - "utile": "~0.2.1", - "winston": "~0.8.1" - }, - "bin": { - "forever": "bin/forever" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/forever-monitor": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.7.2.tgz", - "integrity": "sha512-TGFkX9Hg1X0A4o0ShOvI7AH+p0Ra2kUfhA4kNL0/DY1lQO7T+DUBbSODFBQrykcrxjyw+D1RiawNOX3X2NFfrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "broadway": "~0.3.6", - "chokidar": "^1.7.0", - "minimatch": "~3.0.2", - "ps-tree": "0.0.x", - "utile": "^0.3.0" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/forever-monitor/node_modules/deep-equal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", - "integrity": "sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/forever-monitor/node_modules/ncp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", - "integrity": "sha512-akBX7I5X9KQDDWmYYgQlLbVbjkveTje2mioZjhLLrVt09akSZcoqXWE5LEn1E2fu8T7th1PZYGfewQsTkTLTmQ==", - "dev": true, - "license": "MIT", - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/forever-monitor/node_modules/utile": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", - "integrity": "sha512-KaciY16ate/pJ7BAwBpVcfQlgJT02WRivIv8DlCX1cvg6WxaNEXHcdqazuS9fQ7PUoU5CH2UeY3wkqq16wRiWg==", - "dev": true, - "dependencies": { - "async": "~0.9.0", - "deep-equal": "~0.2.1", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "1.0.x", - "rimraf": "2.x.x" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "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, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "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-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/glob/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, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha512-k1Umb4/jrBWZbtL+QKSji8qWeoZ7ZTkXdnDXt1wxwBKAFM0//u96wDj43mBIqCIas8rDQMYyrBEvcS8hdGd4Sg==", - "license": "MIT", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/has-binary/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "license": "MIT" - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==", - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-value/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html2canvas": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", - "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", - "license": "MIT", - "dependencies": { - "css-line-break": "^2.1.0", - "text-segmentation": "^1.0.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/i": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", - "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "license": "ISC" - }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, - "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "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==", - "license": "ISC" - }, - "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, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-primitive": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/jade": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.5.0.tgz", - "integrity": "sha512-Q8/2vK70z4Vypw1cwMjRCK9JhILCFMa7zV9y7amECykpZiRehYdlAXjSjYU3dji2nw6GdAjlGL9hWDINEmV3zw==", - "deprecated": "Jade has been renamed to pug, please install the latest version of pug instead of jade", - "license": "MIT", - "dependencies": { - "character-parser": "1.2.0", - "commander": "2.1.0", - "constantinople": "~2.0.0", - "mkdirp": "~0.5.0", - "monocle": "1.1.51", - "transformers": "2.1.0", - "with": "~3.0.0" - }, - "bin": { - "jade": "bin/jade.js" - } - }, - "node_modules/json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha512-I5YLeauH3rIaE99EE++UeH2M2gSYo8/2TqDac7oZEH6D/DSQ4Woa628Qrfj1X9/OY5Mk5VvIDQaKCDchXaKrmA==", - "deprecated": "Please use the native JSON object instead of JSON 3" - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "license": "MIT", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoizee": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", - "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "es5-ext": "^0.10.64", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/monocle": { - "version": "1.1.51", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "integrity": "sha512-G2ozHlK2+Z+oAvKSJ4pN0a7pLvCOWMDuHgtdARDt1uRyak9klMwg71ac37SWeULSzrkV0N75A0z9JaYtqXji1w==", - "license": "BSD", - "dependencies": { - "readdirp": "~0.2.3" - } - }, - "node_modules/monocle/node_modules/readdirp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "integrity": "sha512-j3/RLxRiCZSei/4UaYaOAqHa+rQ8ZL9vpolGO9E7mLXiVTb7Fu99eTG74ZmaB/4gCGgy7Veq+U6vw8y7sKJiTw==", - "license": "MIT", - "dependencies": { - "minimatch": ">=0.2.4" - }, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "license": "ISC" - }, - "node_modules/nan": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nconf": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", - "integrity": "sha512-MHiYHIc2igQsoI1v0IcVE4MVaV/+yIQtduOwUcQNoLd+pPgoKblWKbgU3itkhC0az5w2VMdQlQuAO+oi4qxtJg==", - "dev": true, - "dependencies": { - "async": "0.2.9", - "ini": "1.x.x", - "optimist": "0.6.0" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/nconf/node_modules/async": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", - "integrity": "sha512-OAtM6mexGteNKdU29wcUfRW+VuBr94A3hx9h9yzBnPaQAbKoW1ORd68XM4CCAOpdL5wlNFgO29hsY1TKv2vAKw==", - "dev": true - }, - "node_modules/nconf/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nconf/node_modules/optimist": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", - "integrity": "sha512-ubrZPyOU0AHpXkmwqfWolap+eHMwQ484AKivkf0ZGyysd6fUJZl7ow9iu5UNV1vCZv46HQ7EM83IC3NGJ820hg==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/ncp": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==", - "dev": true, - "license": "MIT", - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "license": "ISC" - }, - "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/nodemon/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nodemon/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nodemon/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nodemon/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/nodemon/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, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/nodemon/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nodemon/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nodemon/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, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nodemon/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, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nodemon/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nodemon/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nssocket": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz", - "integrity": "sha512-qrxdGVhPQDkwoI62afGMEqlp35zyqj7PvrkGFAIFgXuIoZEvZtz3lJJR4ZFfOYnRPh2zLzAHw5ylU5vATCdMYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter2": "~0.4.14", - "lazy": "~1.0.11" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==" - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/optimist/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha512-v38ZjVbinlZ2r1Rz06WUZEnGoSRcEGX+roMsiWjHeAe23s2qlQUyfmsPQZvh7d8l0E8AZzTIO/RkUr00LfkSiA==", - "license": "MIT", - "dependencies": { - "better-assert": "~1.0.0" - } - }, - "node_modules/parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha512-B3Nrjw2aL7aI4TDujOzfA4NsEc4u1lVcIRE0xesutH8kjeWF70uk+W5cBlIQx04zUH9NTBvuN36Y9xLRPK6Jjw==", - "license": "MIT", - "dependencies": { - "better-assert": "~1.0.0" - } - }, - "node_modules/parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha512-ijhdxJu6l5Ru12jF0JvzXVPvsC+VibqeaExlNoMhWN6VQ79PGjkmc7oA4W1lp00sFkNyj0fx6ivPLdV51/UMog==", - "license": "MIT", - "dependencies": { - "better-assert": "~1.0.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettyjson": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", - "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "colors": "1.4.0", - "minimist": "^1.2.0" - }, - "bin": { - "prettyjson": "bin/prettyjson" - } - }, - "node_modules/prettyjson/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "integrity": "sha512-OgMc+sxI3zWF8D5BJGtA0z7/IsrDy1/0cPaDv6HPpqa2fSTo7AdON5U10NbZCUeF+zCAj3PtfPE50Hf02386aA==", - "license": "MIT", - "dependencies": { - "is-promise": "~1" - } - }, - "node_modules/promise/node_modules/is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==", - "license": "MIT" - }, - "node_modules/prompt": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "integrity": "sha512-jDK5yEbAakJmNm+260gZG1+PuzX3jT5Jy0VZAUGrrW9RQ1JEWEDEVNnhO70mL3+U5r6bSJo02xsE34wOS/LnrA==", - "dev": true, - "dependencies": { - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.2.x", - "winston": "0.8.x" - }, - "engines": { - "node": ">= 0.6.6" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ps-tree": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", - "integrity": "sha512-FRHemqwOCUAt+U9Ni9bN/JfsFIBIm1Ho2Zr6Y/yWCgbfecrU4cEuYDebyv/pJpFBltArsJ3j4EgI89PR+BsXTA==", - "dev": true, - "dependencies": { - "event-stream": "~0.5" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/randomatic/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randomatic/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/readdirp/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redis": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "integrity": "sha512-DtqxdmgmVAO7aEyxaXBiUTvhQPOYznTIvmPzs9AwWZqZywM50JlFxQjFhicI+LVbaun7uwfO3izuvc1L8NlPKQ==" - }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-equal-shallow": "^0.1.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reload": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/reload/-/reload-3.3.0.tgz", - "integrity": "sha512-TObPRTy5dPlw9DS8n8ROd2BLnxI+RvVn4r0WBARVAfJ493jjcN70NI5TdkcrJmex2aQh5bfQJbFbr1NapU7Lnw==", - "license": "MIT", - "dependencies": { - "cli-color": "~2.0.0", - "commander": "~12.1.0", - "finalhandler": "~1.2.0", - "minimist": "~1.2.0", - "nodemon": "~3.1.4", - "open": "^8.0.0", - "serve-static": "~1.15.0", - "ws": "~8.18.0" - }, - "bin": { - "reload": "bin/reload" - } - }, - "node_modules/reload/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/reload/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reload/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reload/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/reload/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/reload/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/reload/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reload/node_modules/finalhandler": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.1.tgz", - "integrity": "sha512-NpHDfiu6jURpO56pYkM6DEvnBEA9jNrwj4v05Vjs5hmdqEB2/kRA3wugct7BMyqYydjN+kWunMhtTn+itVmxpA==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/reload/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/reload/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==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/reload/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reload/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reload/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==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reload/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/reload/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/reload/node_modules/nodemon": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", - "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/reload/node_modules/nodemon/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/reload/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reload/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reload/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/reload/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/reload/node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/reload/node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true, - "license": "ISC" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true, - "license": "MIT" - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==", - "dev": true, - "license": "Apache 2.0", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sanitizer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.3.tgz", - "integrity": "sha512-j05vL56tR90rsYqm9ZD05v6K4HI7t4yMDEvvU0x4f+IADXM9Jx1x9mzatxOs5drJq6dGhugxDW99mcPvXVLl+Q==", - "license": "Apache-2.0" - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/shush": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/shush/-/shush-1.0.4.tgz", - "integrity": "sha512-G5w1eODRWHWd/H5u6PMAN83TQJ/iOOM8cRgzC2v7trPbnMlq3XIxmQpGw8idyqRkE/wi5YX2j+fobj5xArPw+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "caller": "^1.1.0", - "strip-json-comments": "^3.1.1" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/simplesets": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/simplesets/-/simplesets-1.2.0.tgz", - "integrity": "sha512-dMvnx/ITjxvdPJiCo2ZtISG6bNuQ8+Hk7/NYGPcEcA4q2sO2WrMSkNHMKkL6dhRYPHjr5oGWDWnHVogkOPHdgg==", - "engines": { - "node": "*" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/socket.io": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", - "integrity": "sha512-rKMY/U7gBmbHjwrljcPHy+uEXZ5973WvO2DrooL643w1R24SZVzsmhvNmJFjYVhAL4y7wrZJJS/znUfp0VWfKw==", - "license": "MIT", - "dependencies": { - "debug": "2.3.3", - "engine.io": "~1.8.4", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.4", - "socket.io-parser": "2.3.1" - } - }, - "node_modules/socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha512-zmYvlFJay9skt4yk1MffE9p93HKvQtyy0BLZ5dRM73bOXFJXNZWq8qZVdY456sLaxdK6fHGiZ7glxzqvzwGzkw==", - "license": "MIT", - "dependencies": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - } - }, - "node_modules/socket.io-adapter/node_modules/debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.2" - } - }, - "node_modules/socket.io-adapter/node_modules/ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "license": "MIT" - }, - "node_modules/socket.io-client": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", - "integrity": "sha512-vW9xr9XyTJejFS//7GNZmLTLkUSAcvOSxRXXhrojV+7wboTFB8CuvK1UBCW3NiB2kqyi0h9cTeyD7dXjdUd9jQ==", - "license": "MIT", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "~1.8.4", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.2" - } - }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "license": "MIT" - }, - "node_modules/socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha512-j6l4g/+yWQjmy1yByzg1DPFL4vxQw+NwCJatIxni/AE1wfm17FBtIKSWU4Ay+onrJwDxmC4eK4QS/04ZsqYwZQ==", - "license": "MIT", - "dependencies": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - } - }, - "node_modules/socket.io-parser/node_modules/component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha512-YhIbp3PJiznERfjlIkK0ue4obZxt2S60+0W8z24ZymOHT8sHloOqWOqZRU2eN5OlY8U08VFsP02letcu26FilA==" - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.1" - } - }, - "node_modules/socket.io-parser/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "license": "MIT" - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==" - }, - "node_modules/socket.io/node_modules/debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", - "license": "MIT", - "dependencies": { - "ms": "0.7.2" - } - }, - "node_modules/socket.io/node_modules/ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", - "license": "MIT" - }, - "node_modules/socket.io/node_modules/object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "integrity": "sha512-yfCwDj0vR9RTwt3pEzglgb3ZgmcXHt6DjG3bjJvzPwTL+5zDQ2MhmSzAcTy0GTiQuCiriSWXvWM1/NhKdXuoQA==", - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true, - "license": "MIT" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/text-segmentation": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", - "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", - "license": "MIT", - "dependencies": { - "utrie": "^1.0.2" - } - }, - "node_modules/timers-ext": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/timespan": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "integrity": "sha512-0Jq9+58T2wbOyLth0EU+AUb6JMGCLaTWIykJFa7hyAybjVH9gpVMTfUAwo5fWAvtFt2Tjh/Elg8JtgNpnMnM8g==", - "dev": true, - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex-range/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==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/transformers": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "integrity": "sha512-zJf5m2EIOngmBbDe2fhTPpCjzM2qkZVqrFJZc2jaln+KBeEaYKhS2QMOIkfVrNUyoOwqgbTwOHATzr3jZRQDyg==", - "deprecated": "Deprecated, use jstransformer", - "license": "MIT", - "dependencies": { - "css": "~1.0.8", - "promise": "~2.0", - "uglify-js": "~2.2.5" - } - }, - "node_modules/transformers/node_modules/optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ==", - "license": "MIT/X11", - "dependencies": { - "wordwrap": "~0.0.2" - } - }, - "node_modules/transformers/node_modules/uglify-js": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "integrity": "sha512-viLk+/8G0zm2aKt1JJAVcz5J/5ytdiNaIsKgrre3yvSUjwVG6ZUujGH7E2TiPigZUwLYCe7eaIUEP2Zka2VJPA==", - "dependencies": { - "optimist": "~0.3.5", - "source-map": "~0.1.7" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typeface-inter": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/typeface-inter/-/typeface-inter-3.18.1.tgz", - "integrity": "sha512-c+TBanYFCvmg3j5vPk+zxK4ocMZbPxMEmjnwG7rPQoV87xvQ6b07VbAOC0Va0XBbbZCGw6cWNeFuLeg1YQru3Q==", - "license": "OFL-1.1" - }, - "node_modules/uglify-js": { - "version": "2.4.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "integrity": "sha512-tktIjwackfZLd893KGJmXc1hrRHH1vH9Po3xFh1XBjjeGAnN02xJ3SuoA+n1L29/ZaCA18KzCFlckS+vfPugiA==", - "license": "BSD", - "dependencies": { - "async": "~0.2.6", - "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/uglify-js/node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" - }, - "node_modules/uglify-js/node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "integrity": "sha512-5j382E4xQSs71p/xZQsU1PtRA2HXPAjX0E0DkoGLxwNASMOKX6A9doV1NrZmj85u2Pjquz402qonBzz/yLPbPA==", - "license": "MIT/X11", - "dependencies": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", - "window-size": "0.1.0", - "wordwrap": "0.0.2" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", - "license": "MIT" - }, - "node_modules/ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==", - "license": "MIT" - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "license": "MIT" - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true, - "license": "MIT" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utile": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "integrity": "sha512-ltfvuCJNa/JFOhKBBiQ9qDyyFwLstoMMO1ru0Yg/Mcl8dp1Z3IBaL7n+5dHpyma+d3lCogkgBQnWKtGxzNyqhg==", - "dev": true, - "dependencies": { - "async": "~0.2.9", - "deep-equal": "*", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "0.4.x", - "rimraf": "2.x.x" - }, - "engines": { - "node": ">= 0.6.4" - } - }, - "node_modules/utile/node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/utrie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", - "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", - "license": "MIT", - "dependencies": { - "base64-arraybuffer": "^1.0.2" - } - }, - "node_modules/utrie/node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/winston": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "integrity": "sha512-fPoamsHq8leJ62D1M9V/f15mjQ1UHe4+7j1wpAT3fqgA5JqhJkk4aIfPEjfMTI9x6ZTjaLOpMAjluLtmgO5b6g==", - "dev": true, - "dependencies": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/winston/node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", - "dev": true - }, - "node_modules/winston/node_modules/pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/with": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "integrity": "sha512-kkmVGj873jXl71lBDCCoZ35tOOyUsMQv2XFmov8hS39PR5u8aTFyN7f0ZjOJ5QipflBdHGT5d9tpwBtBDrE7Ig==", - "license": "MIT", - "dependencies": { - "uglify-js": "~2.4.12" - } - }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", - "license": "MIT", - "engines": { - "node": ">=0.4.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, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha512-qfR6ovmRRMxNHgUNYI9LRdVofApe/eYrv4ggNOvvCP+pPdEo9Ym93QN4jUceGD6PignBbp2zAzgoE7GibAdq2A==", - "license": "MIT" - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/yargs": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-2.3.0.tgz", - "integrity": "sha512-w48USdbTdaVMcE3CnXsEtSY9zYSN7dTyVnLBgrJF2quA5rLwobC9zixxfexereLGFaxjxtR3oWdydC0qoayakw==", - "license": "MIT/X11", - "dependencies": { - "wordwrap": "0.0.2" - } - }, - "node_modules/yargs/node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==", - "license": "MIT" - } - } -} diff --git a/package.json b/package.json index 0c438e5..644b12d 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,16 @@ { "name": "memo", "description": "Web-based memos that support real-time collaboration. Inspired by scrumblr.", - "version": "1.0.0", + "version": "0.9.0", "license": "AGPL-3.0", + "type": "module", "repository": { - "url": "https://forge.mrflos.pw/mrflos/memo" + "url": "https://codeberg.org/mrflos/memo" }, "author": "Florian Schmitt", "scripts": { - "lint-js": "eslint --fix --ext .js,.ts .", - "start": "nodemon server.js -e js,css,jade,json" + "format": "eslint --fix --ext .js,.ts .", + "dev": "bun server.js --watch" }, "nodemonConfig": { "ignore": [ @@ -20,29 +21,30 @@ ] }, "dependencies": { - "async": "~0.9.2", - "bootstrap-icons": "^1.13.1", + "async": "^3.2.6", "compression": "^1.8.0", - "express": "^4.21.2", - "html2canvas": "^1.4.1", - "jade": "~1.5.0", + "dompurify": "^3.2.6", + "express": "^5.1.0", + "hiredis": "^0.5.0", + "jsdom": "^26.1.0", + "pug": "^3.0.3", "redis": "~0.12.1", - "reload": "^3.3.0", - "sanitizer": "~0.1.3", - "simplesets": "~1.2.0", - "socket.io": "^1.7.4", + "simplesets": "^1.2.0", + "socket.io": "^4.8.1", "typeface-inter": "^3.18.1", - "yargs": "~2.3.0" + "yargs": "^18.0.0" }, "devDependencies": { + "@eslint/compat": "^1.2.9", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.28.0", + "@stylistic/eslint-plugin": "^3.1.0", "eslint": "^9.28.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.31.0", - "globals": "^16.2.0", - "prettier": "^3.5.3", - "forever": "^0.15.3", - "nodemon": "^2.0.22" + "eslint-config-airbnb-extended": "^1.0.11", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-import-x": "^4.15.1", + "eslint-plugin-n": "^17.19.0", + "eslint-plugin-prettier": "^5.4.1", + "prettier": "^3.5.3" } } diff --git a/server.js b/server.js index 35aaffe..21f3813 100644 --- a/server.js +++ b/server.js @@ -1,879 +1,437 @@ -const http = require('http') -const express = require('express') -const compression = require('compression') -const sanitizer = require('sanitizer') -const socketIO = require('socket.io') -const reload = require('reload') -const conf = require('./config.js').server -const { headerBarUrl, logoUrl } = require('./config.js') +import fs from 'node:fs' +import path from 'node:path' +import http from 'node:http' +import { fileURLToPath } from 'node:url' +import express from 'express' +import compression from 'compression' +import { JSDOM } from 'jsdom'; +import DOMPurify from 'dompurify'; +import { Server as SocketIOServer } from 'socket.io' +import { server as serverConfig, headerBarUrl, logoUrl, database } from './config.js' +import * as roomsManager from './lib/rooms.js' // Assuming rooms.js uses ES module exports -const app = express() -const router = express.Router() +// Database - This will be initialized later. Needs to export `db` as an ES module. +// Example: export let db; export function initializeDb(callback) { db = new TheActualDb(callback); } +// For now, assuming it exports an object with a `db` property that gets assigned. +import * as dbModule from './lib/data/redis.js' -app.use(compression()) -app.use(conf.baseurl, router) -router.use(express.static(`${__dirname}/node_modules`)) -router.use(express.static(`${__dirname}/client`)) +// ESM equivalent of __dirname and __filename +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) -const server = http.createServer(app) -const io = socketIO(server, { // Use the renamed socketIO require - path: conf.baseurl === '/' ? '' : `${conf.baseurl}/socket.io`, - cookie: false -}) - -/** ************ - LOCAL INCLUDES -************* */ -const rooms = require('./lib/rooms.js') -let data = require('./lib/data.js').db - -/** ************ - GLOBALS -************* */ -// Map of sids to user_names -const sids_to_user_names = [] - -// Reload code here -reload(app) - .then((reloadReturned) => { - // reloadReturned is documented in the returns API in the README - - // Reload started, start web server - server.listen(conf.port, () => { - console.log(`Web server available on http://127.0.0.1:${conf.port}`) - }) - }) - .catch((err) => { - console.error( - 'Reload could not start, could not start server/sample app', - err - ) - }) - -/** ************ - SETUP Socket.IO -************* */ - -/** ************ - ROUTES -************* */ -router.get('/', (req, res) => { - // console.log(req.header('host')); - url = req.header('host') + req.baseUrl - const { connected } = io.sockets - clientsCount = Object.keys(connected).length - res.render('home.jade', { - url, - headerBarUrl, - logoUrl, - connected: clientsCount, - home: true - }) -}) - -router.get('/demo', (req, res) => { - url = req.header('host') + req.baseUrl - res.render('index.jade', { - pageTitle: 'Memo - demo', - headerBarUrl, - logoUrl, - url, - demo: true - }) -}) - -router.get('/:id', (req, res) => { - url = req.header('host') + req.baseUrl - res.render('index.jade', { - pageTitle: `Memo - ${req.params.id}`, - headerBarUrl, - logoUrl, - url - }) -}) - -router.get('/stats', (req, res) => { - console.log('TODO: stats') -}) - -/** ************ - SOCKET.I0 -************* */ -// sanitizes text -function scrub(text) { - if (typeof text != 'undefined' && text !== null) { - // clip the string if it is too long - if (text.length > 65535) { - text = text.substr(0, 65535) - } - - return sanitizer.sanitize(text) +// Helper for consistent logging +const log = (level, ...args) => { + const timestamp = new Date().toISOString() + if (level === 'error') { + console.error(`[${timestamp}] ERROR:`, ...args) + } else if (level === 'warn') { + console.warn(`[${timestamp}] WARN:`, ...args) + } else { + console.log(`[${timestamp}] INFO:`, ...args) } - return null } -io.sockets.on('connection', (client) => { - client.on('message', (message) => { - // console.log(message.action + " -- " + sys.inspect(message.data) ); - - let clean_data = {} - let clean_message = {} - let message_out = {} - - if (!message.action) return - - switch (message.action) { - case 'initializeMe': - initClient(client) - break - - case 'joinRoom': - joinRoom(client, message.data, (clients) => { - client.json.send({ action: 'roomAccept', data: '' }) - }) - - break - - case 'editBoardMetas': - clean_data = {} - // TODO: test if prop is in ['title', opacity, 'imageUrl'] - clean_data.id = message.data.id - clean_data.prop = message.data.prop - clean_data.value = scrub(message.data.value) - - // send update to database - getRoom(client, (room) => { - db.editBoardMetas(room, clean_data.id, clean_data.prop, clean_data.value) - }) - - message_out = { - action: 'editBoardMetas', - data: clean_data - } - - broadcastToRoom(client, message_out) - - break - - case 'moveCard': - // report to all other browsers - message_out = { - action: message.action, - data: { - id: scrub(message.data.id), - position: { - left: scrub(message.data.position.left), - top: scrub(message.data.position.top) - } - } - } - - broadcastToRoom(client, message_out) - - // console.log("-----" + message.data.id); - // console.log(JSON.stringify(message.data)); - - getRoom(client, (room) => { - db.cardSetXY( - room, - message.data.id, - message.data.position.left, - message.data.position.top - ) - }) - - break - - case 'createCard': - data = message.data - clean_data = {} - clean_data.text = scrub(data.text) - clean_data.id = scrub(data.id) - clean_data.x = scrub(data.x) - clean_data.y = scrub(data.y) - clean_data.rot = scrub(data.rot) - clean_data.colour = scrub(data.colour) - - getRoom(client, (room) => { - createCard( - room, - clean_data.id, - clean_data.text, - clean_data.x, - clean_data.y, - clean_data.rot, - clean_data.colour - ) - }) - - message_out = { - action: 'createCard', - data: clean_data - } - - // report to all other browsers - broadcastToRoom(client, message_out) - break - - case 'editCard': - clean_data = {} - clean_data.value = scrub(message.data.value) - clean_data.id = scrub(message.data.id) - - // send update to database - getRoom(client, (room) => { - db.cardEdit(room, clean_data.id, clean_data.value) - }) - - message_out = { - action: 'editCard', - data: clean_data - } - - broadcastToRoom(client, message_out) - - break - - case 'deleteCard': - clean_message = { - action: 'deleteCard', - data: { id: scrub(message.data.id) } - } - - getRoom(client, (room) => { - db.deleteCard(room, clean_message.data.id) - }) - - // report to all other browsers - broadcastToRoom(client, clean_message) - - break - - case 'createColumn': - clean_message = { data: scrub(message.data) } - - getRoom(client, (room) => { - db.createColumn(room, clean_message.data, () => {}) - }) - - broadcastToRoom(client, clean_message) - - break - - case 'deleteColumn': - getRoom(client, (room) => { - db.deleteColumn(room) - }) - broadcastToRoom(client, { action: 'deleteColumn' }) - - break - - case 'updateColumns': - var columns = message.data - - if (!(columns instanceof Array)) break - - var clean_columns = [] - - for (const i in columns) { - clean_columns[i] = scrub(columns[i]) - } - getRoom(client, (room) => { - db.setColumns(room, clean_columns) - }) - - broadcastToRoom(client, { - action: 'updateColumns', - data: clean_columns - }) - - break - - case 'changeTheme': - clean_message = {} - clean_message.data = scrub(message.data) - - getRoom(client, (room) => { - db.setTheme(room, clean_message.data) - }) - - clean_message.action = 'changeTheme' - - broadcastToRoom(client, clean_message) - break - - case 'setUserName': - clean_message = {} - - clean_message.data = scrub(message.data) - - setUserName(client, clean_message.data) - - var msg = {} - msg.action = 'nameChangeAnnounce' - msg.data = { sid: client.id, user_name: clean_message.data } - broadcastToRoom(client, msg) - break - - case 'addSticker': - var cardId = scrub(message.data.cardId) - var stickerId = scrub(message.data.stickerId) - - getRoom(client, (room) => { - db.addSticker(room, cardId, stickerId) - }) - - broadcastToRoom(client, { - action: 'addSticker', - data: { cardId, stickerId } - }) - break - - case 'setBoardSize': - var size = {} - size.width = scrub(message.data.width) - size.height = scrub(message.data.height) - - getRoom(client, (room) => { - db.setBoardSize(room, size) - }) - - broadcastToRoom(client, { action: 'setBoardSize', data: size }) - break - - case 'exportTxt': - exportBoard('txt', client, message.data) - break - - case 'exportCsv': - exportBoard('csv', client, message.data) - break - - case 'exportJson': - exportJson(client, message.data) - break - - case 'importJson': - importJson(client, message.data) - break - - case 'createRevision': - createRevision(client, message.data) - break - - case 'deleteRevision': - deleteRevision(client, message.data) - break - - case 'exportRevision': - exportRevision(client, message.data) - break - - default: - // console.log('unknown action'); - break - } - }) - - client.on('disconnect', () => { - leaveRoom(client) - }) - - // tell all others that someone has connected - // client.broadcast('someone has connected'); +// --- Global Error Handlers --- +process.on('uncaughtException', (err, origin) => { + const message = `UNCAUGHT EXCEPTION: ${err.stack || err}\nException origin: ${origin}` + log('error', message) + try { + fs.writeFileSync(path.join(__dirname, 'crash_uncaught.log'), `${message}\nPID: ${process.pid}\n`) + } catch (e) { + log('error', 'Failed to write crash_uncaught.log:', e) + } + process.exit(1) }) -/** ************ - FUNCTIONS -************* */ -function initClient(client) { - // console.log ('initClient Started'); - getRoom(client, (room) => { - db.getAllCards(room, (cards) => { - client.json.send({ - action: 'initCards', - data: cards - }) +process.on('unhandledRejection', (reason, promise) => { + const reasonStack = reason instanceof Error && reason.stack ? reason.stack : reason + const message = `UNHANDLED REJECTION: ${reasonStack}\nAt promise: ${JSON.stringify(promise)}` + log('error', message) + try { + fs.writeFileSync(path.join(__dirname, 'crash_unhandled.log'), `${message}\nPID: ${process.pid}\n`) + } catch (e) { + log('error', 'Failed to write crash_unhandled.log:', e) + } + process.exit(1) +}) + +let dbInstance // Will hold the initialized DB instance + +// --- Globals (Minimize these if possible) --- +const sidsToUsernames = new Map() // Using a Map is cleaner for sids_to_user_names + +async function main() { + try { + log('info', 'Inside main function.') + + const app = express() + const router = express.Router() + + app.use(compression()) + + app.set('views', path.join(__dirname, 'views')) + app.set('view engine', 'pug') + app.use(serverConfig.baseurl, router) + + router.use(express.static(path.join(__dirname, 'node_modules'))) + router.use(express.static(path.join(__dirname, 'client'))) + + const httpServer = http.createServer(app) + const io = new SocketIOServer(httpServer, { + path: serverConfig.baseurl === '/' ? '/socket.io' : `${serverConfig.baseurl}/socket.io`, + cookie: false + }) +const window = new JSDOM('').window; +const purify = DOMPurify(window); + // --- Database Initialization --- + // This assumes your db module exports a class or function that can be instantiated + // and takes a callback for when it's ready. + // Modify this according to how your actual db module works. + log('info', `Initializing database type: ${database.type}`) + dbInstance = new dbModule.db(() => { // This `db` should be the actual constructor/class from your module + log('info', 'Database initialized.') + cleanAndInitializeDemoRoom() + startServer() }) - db.getAllColumns(room, (columns) => { - client.json.send({ - action: 'initColumns', - data: columns - }) - }) + function startServer() { + app.use((err, req, res, next) => { + log('error', `EXPRESS GLOBAL ERROR HANDLER triggered for ${req.originalUrl}:`, err.stack || err) + if (!res.headersSent) { + res.status(500).send('Something broke on the server!') + } else { + next(err) + } + }) - db.getRevisions(room, (revisions) => { - client.json.send({ - action: 'initRevisions', - data: revisions !== null ? Object.keys(revisions) : [] - }) - }) + httpServer.listen(serverConfig.port, () => { + log('info', `Web server available on http://127.0.0.1:${serverConfig.port}`) + log('info', `Base URL: http://127.0.0.1:${serverConfig.port}${serverConfig.baseurl}`) + }) + } - db.getTheme(room, (theme) => { - if (theme === null) theme = 'bigcards' - - client.json.send({ - action: 'changeTheme', - data: theme - }) - }) - - db.getBoardSize(room, (size) => { - if (size !== null) { - client.json.send({ - action: 'setBoardSize', - data: size + // --- HTTP Routes (defined on the router) --- + router.get('/', (req, res) => { + try { + log('info', `Route / requested by ${req.ip}`) + const fullUrl = `${req.protocol}://${req.get('host')}${req.baseUrl}` + const connectedSockets = io.sockets.sockets + const clientsCount = connectedSockets.size + log('info', `Socket.IO 1.7.4 clientsCount: ${clientsCount}`) + log('info', { + url: fullUrl, + headerBarUrl, + logoUrl, + connected: clientsCount, + home: true }) + res.render('home', { + url: fullUrl, + headerBarUrl, + logoUrl, + connected: clientsCount, + home: true + }) + } catch (renderError) { + log('error', 'Error rendering / route:', renderError) + if (!res.headersSent) { + res.status(500).send('Error rendering page.') + } } }) - roommates_clients = rooms.room_clients(room) - roommates = [] - - let j = 0 - for (const i in roommates_clients) { - if (roommates_clients[i].id != client.id) { - roommates[j] = { - sid: roommates_clients[i].id, - user_name: sids_to_user_names[roommates_clients[i].id] + router.get('/demo', (req, res) => { + try { + log('info', `Route /demo requested by ${req.ip}`) + const fullUrl = `${req.protocol}://${req.get('host')}${req.baseUrl}` + res.render('index', { // Assumes index.jade + pageTitle: 'Memo - demo', + headerBarUrl, + logoUrl, + url: fullUrl, + demo: true + }) + } catch (renderError) { + log('error', 'Error rendering /demo route:', renderError) + if (!res.headersSent) { + res.status(500).send('Error rendering page.') } - j++ } - } - - // console.log('initialusers: ' + roommates); - client.json.send({ - action: 'initialUsers', - data: roommates }) - }) -} -function joinRoom(client, room, successFunction) { - const msg = {} - msg.action = 'join-announce' - msg.data = { sid: client.id, user_name: client.user_name } + router.get('/:id', (req, res) => { + try { + const { id } = req.params + log('info', `Route /:id (${id}) requested by ${req.ip}`) + const fullUrl = `${req.protocol}://${req.get('host')}${req.baseUrl}` + res.render('index', { // Assumes index.jade + pageTitle: `Memo - ${id}`, + headerBarUrl, + logoUrl, + url: fullUrl + }) + } catch (renderError) { + log('error', `Error rendering /:id (${req.params.id}) route:`, renderError) + if (!res.headersSent) { + res.status(500).send('Error rendering page.') + } + } + }) - rooms.add_to_room_and_announce(client, room, msg) - successFunction() -} + router.get('/stats', (req, res) => { + log('info', 'TODO: /stats route hit') + res.status(501).send('Stats page not implemented yet.') + }) -function leaveRoom(client) { - // console.log (client.id + ' just left'); - const msg = {} - msg.action = 'leave-announce' - msg.data = { sid: client.id } - rooms.remove_from_all_rooms_and_announce(client, msg) + // --- Socket.IO Event Handlers --- + io.on('connection', (client) => { + log('info', `Socket connected: ${client.id}`) - delete sids_to_user_names[client.id] -} - -function broadcastToRoom(client, message) { - rooms.broadcast_to_roommates(client, message) -} - -// ----------------CARD FUNCTIONS -function createCard(room, id, text, x, y, rot, colour) { - const card = { - id, - colour, - rot, - x, - y, - text, - sticker: null - } - - db.createCard(room, id, card) -} - -function roundRand(max) { - return Math.floor(Math.random() * max) -} - -// ------------ROOM STUFF -// Get Room name for the given Session ID -function getRoom(client, callback) { - room = rooms.get_room(client) - // console.log( 'client: ' + client.id + " is in " + room); - callback(room) -} - -function setUserName(client, name) { - client.user_name = name - sids_to_user_names[client.id] = name - // console.log('sids to user names: '); - console.dir(sids_to_user_names) -} - -function cleanAndInitializeDemoRoom() { - // DUMMY DATA - db.clearRoom('/demo', () => { - db.createColumn('/demo', 'Pas commencé') - db.createColumn('/demo', 'Commencé') - db.createColumn('/demo', 'En test') - db.createColumn('/demo', 'Validation') - db.createColumn('/demo', 'Terminé') - - createCard( - '/demo', - 'card1', - "Salut, c'est fun", - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'yellow' - ) - createCard( - '/demo', - 'card2', - "Salut, c'est une nouvelle histoire.", - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'white' - ) - createCard( - '/demo', - 'card3', - '.', - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'blue' - ) - createCard( - '/demo', - 'card4', - '.', - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'green' - ) - - createCard( - '/demo', - 'card5', - "Salut, c'est fun", - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'yellow' - ) - createCard( - '/demo', - 'card6', - "Salut, c'est un nouveau mémo.", - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'yellow' - ) - createCard( - '/demo', - 'card7', - '.', - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'blue' - ) - createCard( - '/demo', - 'card8', - '.', - roundRand(600), - roundRand(300), - Math.random() * 10 - 5, - 'green' - ) - }) -} - -// Export board in txt or csv -function exportBoard(format, client, data) { - const result = [] - getRoom(client, (room) => { - db.getAllCards(room, (cards) => { - db.getAllColumns(room, (columns) => { - const text = [] - const cols = {} - if (columns.length > 0) { - for (var i = 0; i < columns.length; i++) { - cols[columns[i]] = [] - for (var j = 0; j < cards.length; j++) { - if (i === 0) { - if (cards[j].x < (i + 1) * data) { - cols[columns[i]].push(cards[j]) - } - } else if (i + 1 === columns.length) { - if (cards[j].x >= i * data) { - cols[columns[i]].push(cards[j]) - } - } else if ( - cards[j].x >= i * data - && cards[j].x < (i + 1) * data - ) { - cols[columns[i]].push(cards[j]) - } - } - cols[columns[i]].sort((a, b) => { - if (a.y === b.y) { - return a.x - b.x - } - return a.y - b.y - }) + client.on('message', async(message) => { // Made async if db ops become async + try { + // log('info', `Socket message from ${client.id}: Action - ${message.action}`); + if (!message || typeof message.action !== 'string') { + log('warn', `Invalid message format from ${client.id}:`, message) + return } - if (format === 'txt') { - for (var i = 0; i < columns.length; i++) { - if (i === 0) { - text.push(`# ${columns[i]}`) + + // It's better to break this switch into separate functions for clarity + // For now, just ensuring basic safety and async potential + // All db operations should ideally be promisified and awaited + + let responseAction; let responseData; let + broadcastData + const currentRoom = roomsManager.get_room(client) // Assuming this is synchronous + + switch (message.action) { + case 'initializeMe': + await initClient(client, currentRoom) // Make initClient async + break + + case 'joinRoom': + // roomName should be in message.data + const roomToJoin = scrub(message.data) // Assuming message.data is the room name + if (roomToJoin) { + await joinRoom(client, roomToJoin) // Make joinRoom async + client.emit('message', { action: 'roomAccept', data: { room: roomToJoin } }) } else { - text.push(`\n# ${columns[i]}`) + log('warn', 'JoinRoom: Room name not provided or invalid.') } - for (var j = 0; j < cols[columns[i]].length; j++) { - text.push(`- ${cols[columns[i]][j].text}`) - } - } - } else if (format === 'csv') { - let max = 0 - let line = [] - const patt_vuln = new RegExp('^[=+-@]') - for (var i = 0; i < columns.length; i++) { - if (cols[columns[i]].length > max) { - max = cols[columns[i]].length - } - var val = columns[i].replace(/"/g, '""') - if (patt_vuln.test(val)) { - // prevent CSV Formula Injection - var val = `'${val}` - } - line.push(`"${val}"`) - } - text.push(line.join(',')) - for (var j = 0; j < max; j++) { - line = [] - for (var i = 0; i < columns.length; i++) { - var val = cols[columns[i]][j] !== undefined - ? cols[columns[i]][j].text.replace(/"/g, '""') - : '' - if (patt_vuln.test(val)) { - // prevent CSV Formula Injection - var val = `'${val}` - } - line.push(`"${val}"`) - } - text.push(line.join(',')) - } - } - } else { - for (var j = 0; j < cards.length; j++) { - if (format === 'txt') { - text.push(`- ${cards[j].text}`) - } else if (format === 'csv') { - text.push(`"${cards[j].text.replace(/"/g, '""')}"\n`) - } - } - } - let result - if (format === 'txt' || format === 'csv') { - result = text.join('\n') - } else if (format === 'json') { - result = JSON.stringify(cols) - } - client.json.send({ - action: 'export', - data: { - filename: `${room.replace('/', '')}.${format}`, - text: result - } - }) - }) - }) - }) -} + break -// Export board in json, suitable for import -function exportJson(client, data) { - let result = [] - getRoom(client, (room) => { - db.getAllCards(room, (cards) => { - db.getAllColumns(room, (columns) => { - db.getTheme(room, (theme) => { - db.getBoardSize(room, (size) => { - if (theme === null) theme = 'bigcards' - if (size === null) { size = { width: data.width, height: data.height } } - result = JSON.stringify({ - cards, - columns, - theme, - size - }) - client.json.send({ - action: 'export', - data: { - filename: `${room.replace('/', '')}.json`, - text: result + case 'editBoardMetas': + const { id: boardId, prop, value: boardValue } = message.data || {} + if (!boardId || !prop || typeof boardValue === 'undefined') break + const cleanBoardValue = scrub(boardValue) + dbInstance.editBoardMetas(currentRoom, boardId, prop, cleanBoardValue) // Assuming sync for now + broadcastData = { id: boardId, prop, value: cleanBoardValue } + broadcastToRoom(client, currentRoom, { action: 'editBoardMetas', data: broadcastData }) + break + + case 'moveCard': + const { id: cardIdMove, position } = message.data || {} + if (!cardIdMove || !position || typeof position.left === 'undefined' || typeof position.top === 'undefined') break + const cleanPos = { left: Number(scrub(position.left)), top: Number(scrub(position.top)) } + dbInstance.cardSetXY(currentRoom, cardIdMove, cleanPos.left, cleanPos.top) // Assuming sync + broadcastData = { id: scrub(cardIdMove), position: cleanPos } + broadcastToRoom(client, currentRoom, { action: 'moveCard', data: broadcastData }) + break + + case 'createCard': + const cardData = message.data || {} + // Add proper validation for all fields + const newCard = { + text: scrub(cardData.text), + id: scrub(cardData.id), + x: Number(scrub(cardData.x)), + y: Number(scrub(cardData.y)), + rot: Number(scrub(cardData.rot)), + colour: scrub(cardData.colour), + sticker: null // from original createCard function } - }) + if (!newCard.id) { log('warn', 'CreateCard: ID is missing.'); break } + dbInstance.createCard(currentRoom, newCard.id, newCard) // Assuming sync + broadcastToRoom(client, currentRoom, { action: 'createCard', data: newCard }) + break + + // ... (Continue refactoring other cases similarly) + // Ensure all data is scrubbed, validated, and db operations are clear. + // Use `await` if db operations become async. + + case 'editCard': + const { id: cardIdEdit, value: cardValueEdit } = message.data || {} + if (!cardIdEdit || typeof cardValueEdit === 'undefined') break + const cleanCardValue = scrub(cardValueEdit) + dbInstance.cardEdit(currentRoom, cardIdEdit, cleanCardValue) // Assuming sync + broadcastData = { id: cardIdEdit, value: cleanCardValue } + broadcastToRoom(client, currentRoom, { action: 'editCard', data: broadcastData }) + break + + case 'deleteCard': + const { id: cardIdDelete } = message.data || {} + if (!cardIdDelete) break + const cleanCardIdDelete = scrub(cardIdDelete) + dbInstance.deleteCard(currentRoom, cleanCardIdDelete) // Assuming sync + broadcastToRoom(client, currentRoom, { action: 'deleteCard', data: { id: cleanCardIdDelete } }) + break + + // Add other cases here, applying similar logic: + // - Validate input from message.data + // - Scrub data + // - Call dbInstance methods (await if they become async) + // - broadcastToRoom with structured action and data + + case 'setUserName': + const newUsername = scrub(message.data) + if (newUsername) { + setUserName(client, newUsername) + broadcastToRoom(client, currentRoom, { + action: 'nameChangeAnnounce', + data: { sid: client.id, user_name: newUsername } + }) + } + break + + // ... other cases like 'createColumn', 'addSticker', etc. + + default: + log('info', `Unknown socket action from ${client.id}: ${message.action}`) + break + } + } catch (socketError) { + log('error', `Error in socket message handler (client: ${client.id}, action: ${message?.action}):`, socketError) + // Optionally emit an error back to the client + client.emit('message', { action: 'serverError', data: { message: 'An internal server error occurred.' } }) + } + }) + + client.on('disconnect', (reason) => { + log('info', `Socket disconnected: ${client.id}, Reason: ${reason}`) + leaveRoom(client) + }) + }) // end io.on('connection') + + // --- Helper Functions (Socket & Business Logic) --- + // (Refactored with async/await where db calls are made, assuming db calls will be promisified) + + async function initClient(client, room) { + log('info', `Initializing client ${client.id} for room ${room}`) + try { + // These db calls should ideally return promises + const cards = await new Promise((resolve, reject) => dbInstance.getAllCards(room, resolve)) + client.emit('message', { action: 'initCards', data: cards || [] }) + + const columns = await new Promise((resolve, reject) => dbInstance.getAllColumns(room, resolve)) + client.emit('message', { action: 'initColumns', data: columns || [] }) + + const revisionsData = await new Promise((resolve, reject) => dbInstance.getRevisions(room, resolve)) + client.emit('message', { action: 'initRevisions', data: revisionsData ? Object.keys(revisionsData) : [] }) + + let theme = await new Promise((resolve, reject) => dbInstance.getTheme(room, resolve)) + theme = theme === null ? 'bigcards' : theme + client.emit('message', { action: 'changeTheme', data: theme }) + + const boardSize = await new Promise((resolve, reject) => dbInstance.getBoardSize(room, resolve)) + if (boardSize) { + client.emit('message', { action: 'setBoardSize', data: boardSize }) + } + + const roommateClients = roomsManager.room_clients(room) || [] + const roommates = roommateClients + .filter((rc) => rc.id !== client.id) + .map((rc) => ({ sid: rc.id, user_name: sidsToUsernames.get(rc.id) || 'Anonymous' })) + client.emit('message', { action: 'initialUsers', data: roommates }) + } catch (error) { + log('error', `Error initializing client ${client.id}:`, error) + client.emit('message', { action: 'initError', data: { message: 'Failed to initialize client data.' } }) + } + } + + async function joinRoom(client, roomName) { // roomName is the string name + log('info', `Client ${client.id} attempting to join room: ${roomName}`) + const announceMsg = { action: 'join-announce', data: { sid: client.id, user_name: sidsToUsernames.get(client.id) || 'Anonymous' } } + roomsManager.add_to_room_and_announce(client, roomName, announceMsg) // Assuming this updates client's room internally + // No explicit successFunction needed if client.emit is handled after this call + } + + function leaveRoom(client) { + const currentRoom = roomsManager.get_room(client) + if (currentRoom) { + log('info', `Client ${client.id} leaving room: ${currentRoom}`) + const announceMsg = { action: 'leave-announce', data: { sid: client.id } } + roomsManager.remove_from_all_rooms_and_announce(client, announceMsg) // This should handle removal from its current room + } + sidsToUsernames.delete(client.id) + } + + function broadcastToRoom(client, room, message) { // Pass explicit room + // Filter clients in the specific room, excluding the sender client + const targetClients = (roomsManager.room_clients(room) || []) + .filter((rc) => rc.id !== client.id) + targetClients.forEach((rc) => rc.emit('message', message)) + } + + function scrub(text) { + if (text === null || typeof text === 'undefined') return null + let strText = String(text) + if (strText.length > 65535) { + strText = strText.substring(0, 65535) + } + return sanitizer.sanitize(strText) // Ensure sanitizer is effective and secure + } + + function setUserName(client, name) { + const cleanName = scrub(name) || 'Anonymous' + client.user_name = cleanName // Storing on client object if roomsManager uses it + sidsToUsernames.set(client.id, cleanName) + log('info', `Username for ${client.id} set to: ${cleanName}`) + } + + function roundRand(max) { + return Math.floor(Math.random() * max) + } + + function cleanAndInitializeDemoRoom() { + const demoRoom = '/demo' + log('info', `Initializing demo room: ${demoRoom}`) + dbInstance.clearRoom(demoRoom, () => { // Assuming clearRoom is async via callback + dbInstance.createColumn(demoRoom, 'Pas commencé') + dbInstance.createColumn(demoRoom, 'Commencé') + // ... (add other columns and cards for demo) + log('info', 'Demo room columns and cards created.') + + // Example card creations: + const demoCards = [ + { id: 'card1', text: "Salut, c'est fun", colour: 'yellow' }, + { id: 'card2', text: "Salut, c'est une nouvelle histoire.", colour: 'white' } + ] + demoCards.forEach((card) => { + dbInstance.createCard(demoRoom, card.id, { + id: card.id, + colour: card.colour, + rot: Math.random() * 10 - 5, + x: roundRand(600), + y: roundRand(300), + text: card.text, + sticker: null }) }) }) - }) - }) + } + + // ... (Refactor exportBoard, exportJson, importJson, revision functions similarly) + // - Use async/await if db calls become promisified. + // - Ensure data is scrubbed. + // - Use client.emit for sending responses. + } catch (startupError) { + log('error', 'FATAL STARTUP ERROR in main:', startupError.stack || startupError) + process.exit(1) + } } -// Import board from json -function importJson(client, data) { - getRoom(client, (room) => { - db.clearRoom(room, () => { - db.getAllCards(room, (cards) => { - for (var i = 0; i < cards.length; i++) { - db.deleteCard(room, cards[i].id) - } - - cards = data.cards - const cards2 = [] - for (var i = 0; i < cards.length; i++) { - const card = cards[i] - if ( - card.id !== undefined - && card.colour !== undefined - && card.rot !== undefined - && card.x !== undefined - && card.y !== undefined - && card.text !== undefined - && card.sticker !== undefined - ) { - const c = { - id: card.id, - colour: card.colour, - rot: card.rot, - x: card.x, - y: card.y, - text: scrub(card.text), - sticker: card.sticker - } - db.createCard(room, c.id, c) - cards2.push(c) - } - } - const msg = { action: 'initCards', data: cards2 } - broadcastToRoom(client, msg) - client.json.send(msg) - }) - - db.getAllColumns(room, (columns) => { - for (var i = 0; i < columns.length; i++) { - db.deleteColumn(room) - } - - columns = data.columns - const columns2 = [] - for (var i = 0; i < columns.length; i++) { - const column = scrub(columns[i]) - if (typeof column === 'string') { - db.createColumn(room, column) - columns2.push(column) - } - } - msg = { action: 'initColumns', data: columns2 } - broadcastToRoom(client, msg) - client.json.send(msg) - }) - - let { size } = data - if (size.width !== undefined && size.height !== undefined) { - size = { width: scrub(size.width), height: scrub(size.height) } - db.setBoardSize(room, size) - msg = { action: 'setBoardSize', data: size } - broadcastToRoom(client, msg) - client.json.send(msg) - } - - data.theme = scrub(data.theme) - if (data.theme === 'smallcards' || data.theme === 'bigcards') { - db.setTheme(room, data.theme) - msg = { action: 'changeTheme', data: data.theme } - broadcastToRoom(client, msg) - client.json.send(msg) - } - }) - }) -} -// - -function createRevision(client, data) { - let result = [] - getRoom(client, (room) => { - db.getAllCards(room, (cards) => { - db.getAllColumns(room, (columns) => { - db.getTheme(room, (theme) => { - db.getBoardSize(room, (size) => { - if (theme === null) theme = 'bigcards' - if (size === null) { size = { width: data.width, height: data.height } } - result = { - cards, - columns, - theme, - size - } - const timestamp = Date.now() - db.getRevisions(room, (revisions) => { - if (revisions === null) revisions = {} - revisions[`${timestamp}`] = result - db.setRevisions(room, revisions) - msg = { action: 'addRevision', data: timestamp } - broadcastToRoom(client, msg) - client.json.send(msg) - }) - }) - }) - }) - }) - }) -} - -function deleteRevision(client, timestamp) { - getRoom(client, (room) => { - db.getRevisions(room, (revisions) => { - if (revisions !== null && revisions[`${timestamp}`] !== undefined) { - delete revisions[`${timestamp}`] - db.setRevisions(room, revisions) - } - msg = { action: 'deleteRevision', data: timestamp } - broadcastToRoom(client, msg) - client.json.send(msg) - }) - }) -} - -function exportRevision(client, timestamp) { - getRoom(client, (room) => { - db.getRevisions(room, (revisions) => { - if (revisions !== null && revisions[`${timestamp}`] !== undefined) { - client.json.send({ - action: 'export', - data: { - filename: `${room.replace('/', '')}-${timestamp}.json`, - text: JSON.stringify(revisions[`${timestamp}`]) - } - }) - } else { - client.json.send({ - action: 'message', - data: `Unable to find revision ${timestamp}.` - }) - } - }) - }) -} -/** ************ - SETUP DATABASE ON FIRST RUN -************* */ -// (runs only once on startup) -var db = new data(() => { - cleanAndInitializeDemoRoom() +log('info', 'Calling main function...') +main().catch((mainError) => { + log('error', 'FATAL ERROR from main promise:', mainError.stack || mainError) + process.exit(1) }) +log('info', 'Main function called. Script will continue if server is listening.') diff --git a/shell.nix b/shell.nix index 71ab401..655d339 100644 --- a/shell.nix +++ b/shell.nix @@ -5,6 +5,7 @@ with pkgs; mkShell { buildInputs = [ + node-gyp redis bun ]; diff --git a/views/home.jade b/views/home.pug similarity index 100% rename from views/home.jade rename to views/home.pug diff --git a/views/index.jade b/views/index.pug similarity index 100% rename from views/index.jade rename to views/index.pug diff --git a/views/layout.jade b/views/layout.pug similarity index 99% rename from views/layout.jade rename to views/layout.pug index 5a10b16..9c1978a 100644 --- a/views/layout.jade +++ b/views/layout.pug @@ -98,7 +98,6 @@ html(lang="fr") div.clearfix footer.container block footer - script(src="/reload/reload.js") script(src="lib/jquery.min.js") script(src="lib/jquery-ui.min.js") script(src="lib/jquery.ui.touch-punch.min.js")