From f23418203fb046ee30ec649858a37f684319dfb8 Mon Sep 17 00:00:00 2001 From: daniRincon Date: Thu, 24 Oct 2024 19:32:36 -0500 Subject: [PATCH 1/2] codigo modificado --- README.md | 89 +- package-lock.json | 375 + package.json | 2 + server/node_modules/.bin/mime | 16 + server/node_modules/.bin/mime.cmd | 17 + server/node_modules/.bin/mime.ps1 | 28 + server/node_modules/.bin/node-gyp-build | 16 + .../node_modules/.bin/node-gyp-build-optional | 16 + .../.bin/node-gyp-build-optional.cmd | 17 + .../.bin/node-gyp-build-optional.ps1 | 28 + server/node_modules/.bin/node-gyp-build-test | 16 + .../node_modules/.bin/node-gyp-build-test.cmd | 17 + .../node_modules/.bin/node-gyp-build-test.ps1 | 28 + server/node_modules/.bin/node-gyp-build.cmd | 17 + server/node_modules/.bin/node-gyp-build.ps1 | 28 + server/node_modules/.package-lock.json | 1252 +++ .../@serialport/binding-mock/.releaserc | 6 + .../@serialport/binding-mock/LICENSE | 21 + .../@serialport/binding-mock/README.md | 9 + .../binding-mock/dist/index-esm.mjs | 271 + .../@serialport/binding-mock/dist/index.d.ts | 73 + .../@serialport/binding-mock/dist/index.js | 281 + .../binding-mock/node_modules/debug/LICENSE | 20 + .../binding-mock/node_modules/debug/README.md | 481 + .../node_modules/debug/package.json | 60 + .../node_modules/debug/src/browser.js | 271 + .../node_modules/debug/src/common.js | 274 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/node.js | 263 + .../binding-mock/node_modules/ms/index.js | 162 + .../binding-mock/node_modules/ms/license.md | 21 + .../binding-mock/node_modules/ms/package.json | 38 + .../binding-mock/node_modules/ms/readme.md | 59 + .../@serialport/binding-mock/package.json | 58 + .../@serialport/bindings-cpp/LICENSE | 21 + .../@serialport/bindings-cpp/README.md | 95 + .../@serialport/bindings-cpp/binding.gyp | 80 + .../@serialport/bindings-cpp/dist/darwin.d.ts | 39 + .../@serialport/bindings-cpp/dist/darwin.js | 148 + .../@serialport/bindings-cpp/dist/errors.d.ts | 7 + .../@serialport/bindings-cpp/dist/errors.js | 10 + .../@serialport/bindings-cpp/dist/index.d.ts | 13 + .../@serialport/bindings-cpp/dist/index.js | 48 + .../bindings-cpp/dist/linux-list.d.ts | 4 + .../bindings-cpp/dist/linux-list.js | 115 + .../@serialport/bindings-cpp/dist/linux.d.ts | 46 + .../@serialport/bindings-cpp/dist/linux.js | 150 + .../bindings-cpp/dist/load-bindings.d.ts | 11 + .../bindings-cpp/dist/load-bindings.js | 22 + .../@serialport/bindings-cpp/dist/poller.d.ts | 40 + .../@serialport/bindings-cpp/dist/poller.js | 104 + .../bindings-cpp/dist/unix-read.d.ts | 18 + .../bindings-cpp/dist/unix-read.js | 55 + .../bindings-cpp/dist/unix-write.d.ts | 14 + .../bindings-cpp/dist/unix-write.js | 56 + .../bindings-cpp/dist/win32-sn-parser.d.ts | 1 + .../bindings-cpp/dist/win32-sn-parser.js | 17 + .../@serialport/bindings-cpp/dist/win32.d.ts | 35 + .../@serialport/bindings-cpp/dist/win32.js | 162 + .../@serialport/parser-delimiter/LICENSE | 21 + .../@serialport/parser-delimiter/README.md | 3 + .../parser-delimiter/dist/index.d.ts | 23 + .../parser-delimiter/dist/index.js | 40 + .../@serialport/parser-delimiter/package.json | 25 + .../@serialport/parser-readline/LICENSE | 21 + .../@serialport/parser-readline/README.md | 3 + .../parser-readline/dist/index.d.ts | 19 + .../@serialport/parser-readline/dist/index.js | 22 + .../@serialport/parser-readline/package.json | 28 + .../bindings-cpp/node_modules/debug/LICENSE | 20 + .../bindings-cpp/node_modules/debug/README.md | 481 + .../node_modules/debug/package.json | 59 + .../node_modules/debug/src/browser.js | 269 + .../node_modules/debug/src/common.js | 274 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/node.js | 263 + .../bindings-cpp/node_modules/ms/index.js | 162 + .../bindings-cpp/node_modules/ms/license.md | 21 + .../bindings-cpp/node_modules/ms/package.json | 37 + .../bindings-cpp/node_modules/ms/readme.md | 60 + .../@serialport/bindings-cpp/package.json | 113 + .../android-arm/node.napi.armv7.node | Bin 0 -> 93432 bytes .../android-arm64/node.napi.armv8.node | Bin 0 -> 132552 bytes .../prebuilds/darwin-x64+arm64/node.napi.node | Bin 0 -> 289056 bytes .../prebuilds/linux-arm/node.napi.armv6.node | Bin 0 -> 117012 bytes .../prebuilds/linux-arm/node.napi.armv7.node | Bin 0 -> 117024 bytes .../linux-arm64/node.napi.armv8.node | Bin 0 -> 146744 bytes .../prebuilds/linux-x64/node.napi.glibc.node | Bin 0 -> 154928 bytes .../prebuilds/linux-x64/node.napi.musl.node | Bin 0 -> 153776 bytes .../prebuilds/win32-ia32/node.napi.node | Bin 0 -> 179200 bytes .../prebuilds/win32-x64/node.napi.node | Bin 0 -> 229376 bytes .../bindings-cpp/src/darwin_list.cpp | 317 + .../bindings-cpp/src/darwin_list.h | 68 + .../@serialport/bindings-cpp/src/poller.cpp | 166 + .../@serialport/bindings-cpp/src/poller.h | 35 + .../bindings-cpp/src/serialport.cpp | 342 + .../@serialport/bindings-cpp/src/serialport.h | 202 + .../bindings-cpp/src/serialport_linux.cpp | 76 + .../bindings-cpp/src/serialport_linux.h | 10 + .../bindings-cpp/src/serialport_unix.cpp | 482 + .../bindings-cpp/src/serialport_unix.h | 7 + .../bindings-cpp/src/serialport_win.cpp | 958 ++ .../bindings-cpp/src/serialport_win.h | 93 + .../bindings-interface/CODE_OF_CONDUCT.md | 10 + .../@serialport/bindings-interface/LICENSE | 21 + .../@serialport/bindings-interface/README.md | 7 + .../bindings-interface/dist/index-esm.mjs | 1 + .../bindings-interface/dist/index.d.ts | 151 + .../bindings-interface/dist/index.js | 2 + .../bindings-interface/package.json | 46 + .../@serialport/parser-byte-length/LICENSE | 21 + .../@serialport/parser-byte-length/README.md | 3 + .../parser-byte-length/dist/index.d.ts | 20 + .../parser-byte-length/dist/index.js | 46 + .../parser-byte-length/package.json | 25 + .../@serialport/parser-cctalk/LICENSE | 21 + .../@serialport/parser-cctalk/README.md | 3 + .../@serialport/parser-cctalk/dist/index.d.ts | 17 + .../@serialport/parser-cctalk/dist/index.js | 50 + .../@serialport/parser-cctalk/package.json | 25 + .../@serialport/parser-delimiter/LICENSE | 21 + .../@serialport/parser-delimiter/README.md | 3 + .../parser-delimiter/dist/index.d.ts | 23 + .../parser-delimiter/dist/index.js | 43 + .../@serialport/parser-delimiter/package.json | 25 + .../parser-inter-byte-timeout/LICENSE | 21 + .../parser-inter-byte-timeout/README.md | 3 + .../parser-inter-byte-timeout/dist/index.d.ts | 23 + .../parser-inter-byte-timeout/dist/index.js | 61 + .../parser-inter-byte-timeout/package.json | 25 + .../@serialport/parser-packet-length/LICENSE | 21 + .../parser-packet-length/README.md | 3 + .../parser-packet-length/dist/index.d.ts | 42 + .../parser-packet-length/dist/index.js | 61 + .../parser-packet-length/package.json | 24 + .../@serialport/parser-readline/LICENSE | 21 + .../@serialport/parser-readline/README.md | 3 + .../parser-readline/dist/index.d.ts | 19 + .../@serialport/parser-readline/dist/index.js | 22 + .../@serialport/parser-readline/package.json | 28 + .../@serialport/parser-ready/LICENSE | 21 + .../@serialport/parser-ready/README.md | 3 + .../@serialport/parser-ready/dist/index.d.ts | 19 + .../@serialport/parser-ready/dist/index.js | 53 + .../@serialport/parser-ready/package.json | 25 + .../@serialport/parser-regex/LICENSE | 21 + .../@serialport/parser-regex/README.md | 3 + .../@serialport/parser-regex/dist/index.d.ts | 21 + .../@serialport/parser-regex/dist/index.js | 43 + .../@serialport/parser-regex/package.json | 25 + .../@serialport/parser-slip-encoder/LICENSE | 21 + .../@serialport/parser-slip-encoder/README.md | 3 + .../parser-slip-encoder/dist/decoder.d.ts | 39 + .../parser-slip-encoder/dist/decoder.js | 83 + .../parser-slip-encoder/dist/encoder.d.ts | 38 + .../parser-slip-encoder/dist/encoder.js | 63 + .../parser-slip-encoder/dist/index.d.ts | 2 + .../parser-slip-encoder/dist/index.js | 18 + .../parser-slip-encoder/package.json | 25 + .../@serialport/parser-spacepacket/LICENSE | 21 + .../@serialport/parser-spacepacket/README.md | 3 + .../parser-spacepacket/dist/index.d.ts | 50 + .../parser-spacepacket/dist/index.js | 124 + .../parser-spacepacket/dist/utils.d.ts | 28 + .../parser-spacepacket/dist/utils.js | 44 + .../parser-spacepacket/package.json | 25 + .../node_modules/@serialport/stream/LICENSE | 21 + .../node_modules/@serialport/stream/README.md | 16 + .../@serialport/stream/dist/index.d.ts | 179 + .../@serialport/stream/dist/index.js | 380 + .../stream/node_modules/debug/LICENSE | 20 + .../stream/node_modules/debug/README.md | 481 + .../stream/node_modules/debug/package.json | 59 + .../stream/node_modules/debug/src/browser.js | 269 + .../stream/node_modules/debug/src/common.js | 274 + .../stream/node_modules/debug/src/index.js | 10 + .../stream/node_modules/debug/src/node.js | 263 + .../stream/node_modules/ms/index.js | 162 + .../stream/node_modules/ms/license.md | 21 + .../stream/node_modules/ms/package.json | 37 + .../stream/node_modules/ms/readme.md | 60 + .../@serialport/stream/package.json | 30 + .../@socket.io/component-emitter/LICENSE | 24 + .../@socket.io/component-emitter/Readme.md | 79 + .../component-emitter/lib/cjs/index.d.ts | 179 + .../component-emitter/lib/cjs/index.js | 176 + .../component-emitter/lib/cjs/package.json | 4 + .../component-emitter/lib/esm/index.d.ts | 179 + .../component-emitter/lib/esm/index.js | 169 + .../component-emitter/lib/esm/package.json | 4 + .../@socket.io/component-emitter/package.json | 28 + server/node_modules/@types/cookie/LICENSE | 21 + server/node_modules/@types/cookie/README.md | 16 + server/node_modules/@types/cookie/index.d.ts | 135 + .../node_modules/@types/cookie/package.json | 30 + server/node_modules/@types/cors/LICENSE | 21 + server/node_modules/@types/cors/README.md | 75 + server/node_modules/@types/cors/index.d.ts | 56 + server/node_modules/@types/cors/package.json | 32 + server/node_modules/@types/node/LICENSE | 21 + server/node_modules/@types/node/README.md | 15 + server/node_modules/@types/node/assert.d.ts | 1040 ++ .../@types/node/assert/strict.d.ts | 8 + .../node_modules/@types/node/async_hooks.d.ts | 541 ++ .../@types/node/buffer.buffer.d.ts | 385 + server/node_modules/@types/node/buffer.d.ts | 1933 ++++ .../@types/node/child_process.d.ts | 1549 +++ server/node_modules/@types/node/cluster.d.ts | 579 ++ .../@types/node/compatibility/disposable.d.ts | 16 + .../@types/node/compatibility/index.d.ts | 9 + .../@types/node/compatibility/indexable.d.ts | 23 + .../@types/node/compatibility/iterators.d.ts | 21 + server/node_modules/@types/node/console.d.ts | 452 + .../node_modules/@types/node/constants.d.ts | 19 + server/node_modules/@types/node/crypto.d.ts | 4451 +++++++++ server/node_modules/@types/node/dgram.d.ts | 596 ++ .../@types/node/diagnostics_channel.d.ts | 554 ++ server/node_modules/@types/node/dns.d.ts | 865 ++ .../@types/node/dns/promises.d.ts | 476 + .../node_modules/@types/node/dom-events.d.ts | 124 + server/node_modules/@types/node/domain.d.ts | 170 + server/node_modules/@types/node/events.d.ts | 931 ++ server/node_modules/@types/node/fs.d.ts | 4390 +++++++++ .../node_modules/@types/node/fs/promises.d.ts | 1264 +++ server/node_modules/@types/node/globals.d.ts | 566 ++ .../@types/node/globals.typedarray.d.ts | 21 + server/node_modules/@types/node/http.d.ts | 1921 ++++ server/node_modules/@types/node/http2.d.ts | 2555 +++++ server/node_modules/@types/node/https.d.ts | 544 ++ server/node_modules/@types/node/index.d.ts | 92 + .../node_modules/@types/node/inspector.d.ts | 3966 ++++++++ server/node_modules/@types/node/module.d.ts | 301 + server/node_modules/@types/node/net.d.ts | 1001 ++ server/node_modules/@types/node/os.d.ts | 495 + server/node_modules/@types/node/package.json | 224 + server/node_modules/@types/node/path.d.ts | 200 + .../node_modules/@types/node/perf_hooks.d.ts | 941 ++ server/node_modules/@types/node/process.d.ts | 1912 ++++ server/node_modules/@types/node/punycode.d.ts | 117 + .../node_modules/@types/node/querystring.d.ts | 153 + server/node_modules/@types/node/readline.d.ts | 540 ++ .../@types/node/readline/promises.d.ts | 150 + server/node_modules/@types/node/repl.d.ts | 430 + server/node_modules/@types/node/sea.d.ts | 153 + server/node_modules/@types/node/sqlite.d.ts | 213 + server/node_modules/@types/node/stream.d.ts | 1726 ++++ .../@types/node/stream/consumers.d.ts | 12 + .../@types/node/stream/promises.d.ts | 83 + .../node_modules/@types/node/stream/web.d.ts | 609 ++ .../@types/node/string_decoder.d.ts | 67 + server/node_modules/@types/node/test.d.ts | 2098 ++++ server/node_modules/@types/node/timers.d.ts | 240 + .../@types/node/timers/promises.d.ts | 97 + server/node_modules/@types/node/tls.d.ts | 1220 +++ .../@types/node/trace_events.d.ts | 197 + .../@types/node/ts5.6/buffer.buffer.d.ts | 385 + .../@types/node/ts5.6/globals.typedarray.d.ts | 19 + .../node_modules/@types/node/ts5.6/index.d.ts | 92 + server/node_modules/@types/node/tty.d.ts | 208 + server/node_modules/@types/node/url.d.ts | 972 ++ server/node_modules/@types/node/util.d.ts | 2301 +++++ server/node_modules/@types/node/v8.d.ts | 808 ++ server/node_modules/@types/node/vm.d.ts | 922 ++ server/node_modules/@types/node/wasi.d.ts | 181 + .../@types/node/worker_threads.d.ts | 712 ++ server/node_modules/@types/node/zlib.d.ts | 539 ++ server/node_modules/accepts/HISTORY.md | 243 + server/node_modules/accepts/LICENSE | 23 + server/node_modules/accepts/README.md | 140 + server/node_modules/accepts/index.js | 238 + server/node_modules/accepts/package.json | 47 + server/node_modules/array-flatten/LICENSE | 21 + server/node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + server/node_modules/base64id/CHANGELOG.md | 16 + server/node_modules/base64id/LICENSE | 22 + server/node_modules/base64id/README.md | 18 + server/node_modules/base64id/lib/base64id.js | 103 + server/node_modules/base64id/package.json | 13 + server/node_modules/body-parser/HISTORY.md | 672 ++ server/node_modules/body-parser/LICENSE | 23 + server/node_modules/body-parser/README.md | 476 + server/node_modules/body-parser/SECURITY.md | 25 + server/node_modules/body-parser/index.js | 156 + server/node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 247 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 307 + server/node_modules/body-parser/package.json | 56 + server/node_modules/bytes/History.md | 97 + server/node_modules/bytes/LICENSE | 23 + server/node_modules/bytes/Readme.md | 152 + server/node_modules/bytes/index.js | 170 + server/node_modules/bytes/package.json | 42 + server/node_modules/call-bind/.eslintignore | 1 + server/node_modules/call-bind/.eslintrc | 16 + .../call-bind/.github/FUNDING.yml | 12 + server/node_modules/call-bind/.nycrc | 9 + server/node_modules/call-bind/CHANGELOG.md | 93 + server/node_modules/call-bind/LICENSE | 21 + server/node_modules/call-bind/README.md | 64 + server/node_modules/call-bind/callBound.js | 15 + server/node_modules/call-bind/index.js | 35 + server/node_modules/call-bind/package.json | 95 + .../node_modules/call-bind/test/callBound.js | 54 + server/node_modules/call-bind/test/index.js | 80 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + server/node_modules/content-type/HISTORY.md | 29 + server/node_modules/content-type/LICENSE | 22 + server/node_modules/content-type/README.md | 94 + server/node_modules/content-type/index.js | 225 + server/node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + server/node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + server/node_modules/cookie/LICENSE | 24 + server/node_modules/cookie/README.md | 317 + server/node_modules/cookie/SECURITY.md | 25 + server/node_modules/cookie/index.js | 334 + server/node_modules/cookie/package.json | 44 + server/node_modules/cors/CONTRIBUTING.md | 33 + server/node_modules/cors/HISTORY.md | 58 + server/node_modules/cors/LICENSE | 22 + server/node_modules/cors/README.md | 243 + server/node_modules/cors/lib/index.js | 238 + server/node_modules/cors/package.json | 41 + server/node_modules/debug/.coveralls.yml | 1 + server/node_modules/debug/.eslintrc | 11 + server/node_modules/debug/.npmignore | 9 + server/node_modules/debug/.travis.yml | 14 + server/node_modules/debug/CHANGELOG.md | 362 + server/node_modules/debug/LICENSE | 19 + server/node_modules/debug/Makefile | 50 + server/node_modules/debug/README.md | 312 + server/node_modules/debug/component.json | 19 + server/node_modules/debug/karma.conf.js | 70 + server/node_modules/debug/node.js | 1 + server/node_modules/debug/package.json | 49 + server/node_modules/debug/src/browser.js | 185 + server/node_modules/debug/src/debug.js | 202 + server/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + server/node_modules/debug/src/node.js | 248 + .../define-data-property/.eslintrc | 24 + .../define-data-property/.github/FUNDING.yml | 12 + .../node_modules/define-data-property/.nycrc | 13 + .../define-data-property/CHANGELOG.md | 70 + .../node_modules/define-data-property/LICENSE | 21 + .../define-data-property/README.md | 67 + .../define-data-property/index.d.ts | 12 + .../define-data-property/index.js | 56 + .../define-data-property/package.json | 106 + .../define-data-property/test/index.js | 392 + .../define-data-property/tsconfig.json | 59 + server/node_modules/depd/History.md | 103 + server/node_modules/depd/LICENSE | 22 + server/node_modules/depd/Readme.md | 280 + server/node_modules/depd/index.js | 538 ++ server/node_modules/depd/lib/browser/index.js | 77 + server/node_modules/depd/package.json | 45 + server/node_modules/destroy/LICENSE | 23 + server/node_modules/destroy/README.md | 63 + server/node_modules/destroy/index.js | 209 + server/node_modules/destroy/package.json | 48 + server/node_modules/ee-first/LICENSE | 22 + server/node_modules/ee-first/README.md | 80 + server/node_modules/ee-first/index.js | 95 + server/node_modules/ee-first/package.json | 29 + server/node_modules/encodeurl/LICENSE | 22 + server/node_modules/encodeurl/README.md | 109 + server/node_modules/encodeurl/index.js | 60 + server/node_modules/encodeurl/package.json | 40 + server/node_modules/engine.io-parser/LICENSE | 22 + .../node_modules/engine.io-parser/Readme.md | 158 + .../engine.io-parser/build/cjs/commons.d.ts | 14 + .../engine.io-parser/build/cjs/commons.js | 19 + .../build/cjs/contrib/base64-arraybuffer.d.ts | 2 + .../build/cjs/contrib/base64-arraybuffer.js | 48 + .../build/cjs/decodePacket.browser.d.ts | 2 + .../build/cjs/decodePacket.browser.js | 66 + .../build/cjs/decodePacket.d.ts | 2 + .../build/cjs/decodePacket.js | 59 + .../build/cjs/encodePacket.browser.d.ts | 4 + .../build/cjs/encodePacket.browser.js | 72 + .../build/cjs/encodePacket.d.ts | 3 + .../build/cjs/encodePacket.js | 38 + .../engine.io-parser/build/cjs/index.d.ts | 9 + .../engine.io-parser/build/cjs/index.js | 164 + .../engine.io-parser/build/cjs/package.json | 8 + .../engine.io-parser/build/esm/commons.d.ts | 14 + .../engine.io-parser/build/esm/commons.js | 14 + .../build/esm/contrib/base64-arraybuffer.d.ts | 2 + .../build/esm/contrib/base64-arraybuffer.js | 43 + .../build/esm/decodePacket.browser.d.ts | 2 + .../build/esm/decodePacket.browser.js | 62 + .../build/esm/decodePacket.d.ts | 2 + .../build/esm/decodePacket.js | 55 + .../build/esm/encodePacket.browser.d.ts | 4 + .../build/esm/encodePacket.browser.js | 68 + .../build/esm/encodePacket.d.ts | 3 + .../build/esm/encodePacket.js | 33 + .../engine.io-parser/build/esm/index.d.ts | 9 + .../engine.io-parser/build/esm/index.js | 156 + .../engine.io-parser/build/esm/package.json | 8 + .../engine.io-parser/package.json | 46 + server/node_modules/engine.io/LICENSE | 19 + server/node_modules/engine.io/README.md | 603 ++ .../engine.io/build/engine.io.d.ts | 26 + .../node_modules/engine.io/build/engine.io.js | 54 + .../engine.io/build/parser-v3/index.d.ts | 94 + .../engine.io/build/parser-v3/index.js | 424 + .../engine.io/build/parser-v3/utf8.d.ts | 14 + .../engine.io/build/parser-v3/utf8.js | 187 + .../node_modules/engine.io/build/server.d.ts | 267 + server/node_modules/engine.io/build/server.js | 786 ++ .../node_modules/engine.io/build/socket.d.ts | 180 + server/node_modules/engine.io/build/socket.js | 460 + .../engine.io/build/transport.d.ts | 124 + .../node_modules/engine.io/build/transport.js | 117 + .../engine.io/build/transports-uws/index.d.ts | 7 + .../engine.io/build/transports-uws/index.js | 8 + .../build/transports-uws/polling.d.ts | 99 + .../engine.io/build/transports-uws/polling.js | 364 + .../build/transports-uws/websocket.d.ts | 32 + .../build/transports-uws/websocket.js | 73 + .../engine.io/build/transports/index.d.ts | 16 + .../engine.io/build/transports/index.js | 23 + .../build/transports/polling-jsonp.d.ts | 12 + .../build/transports/polling-jsonp.js | 41 + .../engine.io/build/transports/polling.d.ts | 87 + .../engine.io/build/transports/polling.js | 332 + .../engine.io/build/transports/websocket.d.ts | 32 + .../engine.io/build/transports/websocket.js | 94 + .../build/transports/webtransport.d.ts | 12 + .../build/transports/webtransport.js | 63 + .../node_modules/engine.io/build/userver.d.ts | 42 + .../node_modules/engine.io/build/userver.js | 279 + .../engine.io/node_modules/cookie/LICENSE | 24 + .../engine.io/node_modules/cookie/README.md | 317 + .../engine.io/node_modules/cookie/SECURITY.md | 25 + .../engine.io/node_modules/cookie/index.js | 335 + .../node_modules/cookie/package.json | 44 + .../engine.io/node_modules/debug/LICENSE | 20 + .../engine.io/node_modules/debug/README.md | 481 + .../engine.io/node_modules/debug/package.json | 60 + .../node_modules/debug/src/browser.js | 271 + .../node_modules/debug/src/common.js | 274 + .../engine.io/node_modules/debug/src/index.js | 10 + .../engine.io/node_modules/debug/src/node.js | 263 + .../engine.io/node_modules/ms/index.js | 162 + .../engine.io/node_modules/ms/license.md | 21 + .../engine.io/node_modules/ms/package.json | 38 + .../engine.io/node_modules/ms/readme.md | 59 + server/node_modules/engine.io/package.json | 71 + server/node_modules/engine.io/wrapper.mjs | 10 + .../node_modules/es-define-property/.eslintrc | 13 + .../es-define-property/.github/FUNDING.yml | 12 + server/node_modules/es-define-property/.nycrc | 9 + .../es-define-property/CHANGELOG.md | 15 + .../node_modules/es-define-property/LICENSE | 21 + .../node_modules/es-define-property/README.md | 49 + .../es-define-property/index.d.ts | 3 + .../node_modules/es-define-property/index.js | 16 + .../es-define-property/package.json | 81 + .../es-define-property/test/index.js | 55 + .../es-define-property/tsconfig.json | 50 + server/node_modules/es-errors/.eslintrc | 5 + .../es-errors/.github/FUNDING.yml | 12 + server/node_modules/es-errors/CHANGELOG.md | 40 + server/node_modules/es-errors/LICENSE | 21 + server/node_modules/es-errors/README.md | 55 + server/node_modules/es-errors/eval.d.ts | 3 + server/node_modules/es-errors/eval.js | 4 + server/node_modules/es-errors/index.d.ts | 3 + server/node_modules/es-errors/index.js | 4 + server/node_modules/es-errors/package.json | 80 + server/node_modules/es-errors/range.d.ts | 3 + server/node_modules/es-errors/range.js | 4 + server/node_modules/es-errors/ref.d.ts | 3 + server/node_modules/es-errors/ref.js | 4 + server/node_modules/es-errors/syntax.d.ts | 3 + server/node_modules/es-errors/syntax.js | 4 + server/node_modules/es-errors/test/index.js | 19 + server/node_modules/es-errors/tsconfig.json | 49 + server/node_modules/es-errors/type.d.ts | 3 + server/node_modules/es-errors/type.js | 4 + server/node_modules/es-errors/uri.d.ts | 3 + server/node_modules/es-errors/uri.js | 4 + server/node_modules/escape-html/LICENSE | 24 + server/node_modules/escape-html/Readme.md | 43 + server/node_modules/escape-html/index.js | 78 + server/node_modules/escape-html/package.json | 24 + server/node_modules/etag/HISTORY.md | 83 + server/node_modules/etag/LICENSE | 22 + server/node_modules/etag/README.md | 159 + server/node_modules/etag/index.js | 131 + server/node_modules/etag/package.json | 47 + server/node_modules/express/History.md | 3647 +++++++ server/node_modules/express/LICENSE | 24 + server/node_modules/express/Readme.md | 260 + server/node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ server/node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + server/node_modules/express/lib/request.js | 525 + server/node_modules/express/lib/response.js | 1179 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 230 + server/node_modules/express/lib/utils.js | 303 + server/node_modules/express/lib/view.js | 182 + server/node_modules/express/package.json | 98 + server/node_modules/finalhandler/HISTORY.md | 210 + server/node_modules/finalhandler/LICENSE | 22 + server/node_modules/finalhandler/README.md | 147 + server/node_modules/finalhandler/SECURITY.md | 25 + server/node_modules/finalhandler/index.js | 341 + server/node_modules/finalhandler/package.json | 47 + server/node_modules/forwarded/HISTORY.md | 21 + server/node_modules/forwarded/LICENSE | 22 + server/node_modules/forwarded/README.md | 57 + server/node_modules/forwarded/index.js | 90 + server/node_modules/forwarded/package.json | 45 + server/node_modules/fresh/HISTORY.md | 70 + server/node_modules/fresh/LICENSE | 23 + server/node_modules/fresh/README.md | 119 + server/node_modules/fresh/index.js | 137 + server/node_modules/fresh/package.json | 46 + server/node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + server/node_modules/function-bind/.nycrc | 13 + .../node_modules/function-bind/CHANGELOG.md | 136 + server/node_modules/function-bind/LICENSE | 20 + server/node_modules/function-bind/README.md | 46 + .../function-bind/implementation.js | 84 + server/node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 87 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + server/node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + server/node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 143 + server/node_modules/get-intrinsic/LICENSE | 21 + server/node_modules/get-intrinsic/README.md | 71 + server/node_modules/get-intrinsic/index.js | 359 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + server/node_modules/gopd/.eslintrc | 16 + server/node_modules/gopd/.github/FUNDING.yml | 12 + server/node_modules/gopd/CHANGELOG.md | 25 + server/node_modules/gopd/LICENSE | 21 + server/node_modules/gopd/README.md | 40 + server/node_modules/gopd/index.js | 16 + server/node_modules/gopd/package.json | 71 + server/node_modules/gopd/test/index.js | 35 + .../has-property-descriptors/.eslintrc | 13 + .../.github/FUNDING.yml | 12 + .../has-property-descriptors/.nycrc | 9 + .../has-property-descriptors/CHANGELOG.md | 35 + .../has-property-descriptors/LICENSE | 21 + .../has-property-descriptors/README.md | 43 + .../has-property-descriptors/index.js | 22 + .../has-property-descriptors/package.json | 77 + .../has-property-descriptors/test/index.js | 57 + server/node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + server/node_modules/has-proto/CHANGELOG.md | 38 + server/node_modules/has-proto/LICENSE | 21 + server/node_modules/has-proto/README.md | 38 + server/node_modules/has-proto/index.d.ts | 3 + server/node_modules/has-proto/index.js | 15 + server/node_modules/has-proto/package.json | 78 + server/node_modules/has-proto/test/index.js | 19 + server/node_modules/has-proto/tsconfig.json | 49 + server/node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + server/node_modules/has-symbols/.nycrc | 9 + server/node_modules/has-symbols/CHANGELOG.md | 75 + server/node_modules/has-symbols/LICENSE | 21 + server/node_modules/has-symbols/README.md | 46 + server/node_modules/has-symbols/index.js | 13 + server/node_modules/has-symbols/package.json | 101 + server/node_modules/has-symbols/shams.js | 42 + server/node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + server/node_modules/has-symbols/test/tests.js | 56 + server/node_modules/hasown/.eslintrc | 5 + .../node_modules/hasown/.github/FUNDING.yml | 12 + server/node_modules/hasown/.nycrc | 13 + server/node_modules/hasown/CHANGELOG.md | 40 + server/node_modules/hasown/LICENSE | 21 + server/node_modules/hasown/README.md | 40 + server/node_modules/hasown/index.d.ts | 3 + server/node_modules/hasown/index.js | 8 + server/node_modules/hasown/package.json | 92 + server/node_modules/hasown/tsconfig.json | 6 + server/node_modules/http-errors/HISTORY.md | 180 + server/node_modules/http-errors/LICENSE | 23 + server/node_modules/http-errors/README.md | 169 + server/node_modules/http-errors/index.js | 289 + server/node_modules/http-errors/package.json | 50 + server/node_modules/iconv-lite/Changelog.md | 162 + server/node_modules/iconv-lite/LICENSE | 21 + server/node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + server/node_modules/iconv-lite/lib/index.d.ts | 24 + server/node_modules/iconv-lite/lib/index.js | 153 + server/node_modules/iconv-lite/lib/streams.js | 121 + server/node_modules/iconv-lite/package.json | 46 + server/node_modules/inherits/LICENSE | 16 + server/node_modules/inherits/README.md | 42 + server/node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + server/node_modules/inherits/package.json | 29 + server/node_modules/ipaddr.js/LICENSE | 19 + server/node_modules/ipaddr.js/README.md | 233 + server/node_modules/ipaddr.js/ipaddr.min.js | 1 + server/node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + server/node_modules/ipaddr.js/package.json | 35 + server/node_modules/media-typer/HISTORY.md | 22 + server/node_modules/media-typer/LICENSE | 22 + server/node_modules/media-typer/README.md | 81 + server/node_modules/media-typer/index.js | 270 + server/node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + server/node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 49 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 39 + server/node_modules/methods/HISTORY.md | 29 + server/node_modules/methods/LICENSE | 24 + server/node_modules/methods/README.md | 51 + server/node_modules/methods/index.js | 69 + server/node_modules/methods/package.json | 36 + server/node_modules/mime-db/HISTORY.md | 507 + server/node_modules/mime-db/LICENSE | 23 + server/node_modules/mime-db/README.md | 100 + server/node_modules/mime-db/db.json | 8519 +++++++++++++++++ server/node_modules/mime-db/index.js | 12 + server/node_modules/mime-db/package.json | 60 + server/node_modules/mime-types/HISTORY.md | 397 + server/node_modules/mime-types/LICENSE | 23 + server/node_modules/mime-types/README.md | 113 + server/node_modules/mime-types/index.js | 188 + server/node_modules/mime-types/package.json | 44 + server/node_modules/mime/.npmignore | 0 server/node_modules/mime/CHANGELOG.md | 164 + server/node_modules/mime/LICENSE | 21 + server/node_modules/mime/README.md | 90 + server/node_modules/mime/cli.js | 8 + server/node_modules/mime/mime.js | 108 + server/node_modules/mime/package.json | 44 + server/node_modules/mime/src/build.js | 53 + server/node_modules/mime/src/test.js | 60 + server/node_modules/mime/types.json | 1 + server/node_modules/ms/index.js | 152 + server/node_modules/ms/license.md | 21 + server/node_modules/ms/package.json | 37 + server/node_modules/ms/readme.md | 51 + server/node_modules/negotiator/HISTORY.md | 108 + server/node_modules/negotiator/LICENSE | 24 + server/node_modules/negotiator/README.md | 203 + server/node_modules/negotiator/index.js | 82 + server/node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + server/node_modules/negotiator/package.json | 42 + server/node_modules/node-addon-api/LICENSE.md | 13 + server/node_modules/node-addon-api/README.md | 318 + .../node_modules/node-addon-api/common.gypi | 21 + .../node_modules/node-addon-api/except.gypi | 25 + server/node_modules/node-addon-api/index.js | 11 + .../node-addon-api/napi-inl.deprecated.h | 186 + server/node_modules/node-addon-api/napi-inl.h | 6604 +++++++++++++ server/node_modules/node-addon-api/napi.h | 3191 ++++++ .../node_modules/node-addon-api/node_api.gyp | 9 + .../node_modules/node-addon-api/noexcept.gypi | 26 + server/node_modules/node-addon-api/nothing.c | 0 .../node-addon-api/package-support.json | 21 + .../node_modules/node-addon-api/package.json | 472 + .../node-addon-api/tools/README.md | 73 + .../node-addon-api/tools/check-napi.js | 99 + .../node-addon-api/tools/clang-format.js | 71 + .../node-addon-api/tools/conversion.js | 301 + .../node-addon-api/tools/eslint-format.js | 79 + server/node_modules/node-gyp-build/LICENSE | 21 + server/node_modules/node-gyp-build/README.md | 58 + server/node_modules/node-gyp-build/bin.js | 77 + .../node_modules/node-gyp-build/build-test.js | 19 + server/node_modules/node-gyp-build/index.js | 5 + .../node-gyp-build/node-gyp-build.js | 207 + .../node_modules/node-gyp-build/optional.js | 7 + .../node_modules/node-gyp-build/package.json | 29 + server/node_modules/object-assign/index.js | 90 + server/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 42 + server/node_modules/object-assign/readme.md | 61 + server/node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + server/node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 404 + server/node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + server/node_modules/object-inspect/index.js | 527 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 104 + .../object-inspect/readme.markdown | 84 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + server/node_modules/object-inspect/test/fn.js | 76 + .../object-inspect/test/global.js | 17 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + server/node_modules/on-finished/HISTORY.md | 98 + server/node_modules/on-finished/LICENSE | 23 + server/node_modules/on-finished/README.md | 162 + server/node_modules/on-finished/index.js | 234 + server/node_modules/on-finished/package.json | 39 + server/node_modules/parseurl/HISTORY.md | 58 + server/node_modules/parseurl/LICENSE | 24 + server/node_modules/parseurl/README.md | 133 + server/node_modules/parseurl/index.js | 158 + server/node_modules/parseurl/package.json | 40 + server/node_modules/path-to-regexp/LICENSE | 21 + server/node_modules/path-to-regexp/Readme.md | 35 + server/node_modules/path-to-regexp/index.js | 146 + .../node_modules/path-to-regexp/package.json | 30 + server/node_modules/proxy-addr/HISTORY.md | 161 + server/node_modules/proxy-addr/LICENSE | 22 + server/node_modules/proxy-addr/README.md | 139 + server/node_modules/proxy-addr/index.js | 327 + server/node_modules/proxy-addr/package.json | 47 + server/node_modules/qs/.editorconfig | 46 + server/node_modules/qs/.eslintrc | 38 + server/node_modules/qs/.github/FUNDING.yml | 12 + server/node_modules/qs/.nycrc | 13 + server/node_modules/qs/CHANGELOG.md | 600 ++ server/node_modules/qs/LICENSE.md | 29 + server/node_modules/qs/README.md | 709 ++ server/node_modules/qs/dist/qs.js | 90 + server/node_modules/qs/lib/formats.js | 23 + server/node_modules/qs/lib/index.js | 11 + server/node_modules/qs/lib/parse.js | 296 + server/node_modules/qs/lib/stringify.js | 351 + server/node_modules/qs/lib/utils.js | 265 + server/node_modules/qs/package.json | 91 + .../node_modules/qs/test/empty-keys-cases.js | 267 + server/node_modules/qs/test/parse.js | 1170 +++ server/node_modules/qs/test/stringify.js | 1298 +++ server/node_modules/qs/test/utils.js | 136 + server/node_modules/range-parser/HISTORY.md | 56 + server/node_modules/range-parser/LICENSE | 23 + server/node_modules/range-parser/README.md | 84 + server/node_modules/range-parser/index.js | 162 + server/node_modules/range-parser/package.json | 44 + server/node_modules/raw-body/HISTORY.md | 308 + server/node_modules/raw-body/LICENSE | 22 + server/node_modules/raw-body/README.md | 223 + server/node_modules/raw-body/SECURITY.md | 24 + server/node_modules/raw-body/index.d.ts | 87 + server/node_modules/raw-body/index.js | 336 + server/node_modules/raw-body/package.json | 49 + server/node_modules/safe-buffer/LICENSE | 21 + server/node_modules/safe-buffer/README.md | 584 ++ server/node_modules/safe-buffer/index.d.ts | 187 + server/node_modules/safe-buffer/index.js | 65 + server/node_modules/safe-buffer/package.json | 51 + server/node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + server/node_modules/safer-buffer/Readme.md | 156 + server/node_modules/safer-buffer/dangerous.js | 58 + server/node_modules/safer-buffer/package.json | 34 + server/node_modules/safer-buffer/safer.js | 77 + server/node_modules/safer-buffer/tests.js | 406 + server/node_modules/send/HISTORY.md | 526 + server/node_modules/send/LICENSE | 23 + server/node_modules/send/README.md | 327 + server/node_modules/send/SECURITY.md | 24 + server/node_modules/send/index.js | 1142 +++ .../send/node_modules/encodeurl/HISTORY.md | 14 + .../send/node_modules/encodeurl/LICENSE | 22 + .../send/node_modules/encodeurl/README.md | 128 + .../send/node_modules/encodeurl/index.js | 60 + .../send/node_modules/encodeurl/package.json | 40 + .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + server/node_modules/send/package.json | 62 + server/node_modules/serialport/LICENSE | 21 + server/node_modules/serialport/README.md | 88 + .../node_modules/serialport/dist/index.d.ts | 12 + server/node_modules/serialport/dist/index.js | 28 + .../serialport/dist/serialport-mock.d.ts | 8 + .../serialport/dist/serialport-mock.js | 17 + .../serialport/dist/serialport.d.ts | 8 + .../serialport/dist/serialport.js | 18 + .../serialport/node_modules/debug/LICENSE | 20 + .../serialport/node_modules/debug/README.md | 481 + .../node_modules/debug/package.json | 59 + .../node_modules/debug/src/browser.js | 269 + .../node_modules/debug/src/common.js | 274 + .../node_modules/debug/src/index.js | 10 + .../serialport/node_modules/debug/src/node.js | 263 + .../serialport/node_modules/ms/index.js | 162 + .../serialport/node_modules/ms/license.md | 21 + .../serialport/node_modules/ms/package.json | 37 + .../serialport/node_modules/ms/readme.md | 60 + server/node_modules/serialport/package.json | 78 + server/node_modules/serve-static/HISTORY.md | 487 + server/node_modules/serve-static/LICENSE | 25 + server/node_modules/serve-static/README.md | 257 + server/node_modules/serve-static/index.js | 209 + server/node_modules/serve-static/package.json | 42 + .../set-function-length/.eslintrc | 27 + .../set-function-length/.github/FUNDING.yml | 12 + .../node_modules/set-function-length/.nycrc | 13 + .../set-function-length/CHANGELOG.md | 70 + .../node_modules/set-function-length/LICENSE | 21 + .../set-function-length/README.md | 56 + .../node_modules/set-function-length/env.d.ts | 9 + .../node_modules/set-function-length/env.js | 25 + .../set-function-length/index.d.ts | 7 + .../node_modules/set-function-length/index.js | 42 + .../set-function-length/package.json | 102 + .../set-function-length/tsconfig.json | 9 + server/node_modules/setprototypeof/LICENSE | 13 + server/node_modules/setprototypeof/README.md | 31 + server/node_modules/setprototypeof/index.d.ts | 2 + server/node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.editorconfig | 9 + server/node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + server/node_modules/side-channel/.nycrc | 13 + server/node_modules/side-channel/CHANGELOG.md | 95 + server/node_modules/side-channel/LICENSE | 21 + server/node_modules/side-channel/README.md | 2 + server/node_modules/side-channel/index.d.ts | 27 + server/node_modules/side-channel/index.js | 129 + server/node_modules/side-channel/package.json | 84 + .../node_modules/side-channel/test/index.js | 83 + .../node_modules/side-channel/tsconfig.json | 50 + server/node_modules/socket.io-adapter/LICENSE | 20 + .../node_modules/socket.io-adapter/Readme.md | 23 + .../dist/cluster-adapter.d.ts | 201 + .../socket.io-adapter/dist/cluster-adapter.js | 674 ++ .../socket.io-adapter/dist/contrib/yeast.d.ts | 23 + .../socket.io-adapter/dist/contrib/yeast.js | 55 + .../dist/in-memory-adapter.d.ts | 179 + .../dist/in-memory-adapter.js | 394 + .../socket.io-adapter/dist/index.d.ts | 2 + .../socket.io-adapter/dist/index.js | 10 + .../node_modules/debug/LICENSE | 20 + .../node_modules/debug/README.md | 481 + .../node_modules/debug/package.json | 60 + .../node_modules/debug/src/browser.js | 271 + .../node_modules/debug/src/common.js | 274 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/node.js | 263 + .../node_modules/ms/index.js | 162 + .../node_modules/ms/license.md | 21 + .../node_modules/ms/package.json | 38 + .../node_modules/ms/readme.md | 59 + .../socket.io-adapter/package.json | 39 + server/node_modules/socket.io-parser/LICENSE | 20 + .../node_modules/socket.io-parser/Readme.md | 81 + .../socket.io-parser/build/cjs/binary.d.ts | 20 + .../socket.io-parser/build/cjs/binary.js | 88 + .../socket.io-parser/build/cjs/index.d.ts | 90 + .../socket.io-parser/build/cjs/index.js | 321 + .../socket.io-parser/build/cjs/is-binary.d.ts | 7 + .../socket.io-parser/build/cjs/is-binary.js | 55 + .../socket.io-parser/build/cjs/package.json | 3 + .../build/esm-debug/binary.d.ts | 20 + .../build/esm-debug/binary.js | 83 + .../build/esm-debug/index.d.ts | 90 + .../socket.io-parser/build/esm-debug/index.js | 316 + .../build/esm-debug/is-binary.d.ts | 7 + .../build/esm-debug/is-binary.js | 50 + .../build/esm-debug/package.json | 3 + .../socket.io-parser/build/esm/binary.d.ts | 20 + .../socket.io-parser/build/esm/binary.js | 83 + .../socket.io-parser/build/esm/index.d.ts | 90 + .../socket.io-parser/build/esm/index.js | 311 + .../socket.io-parser/build/esm/is-binary.d.ts | 7 + .../socket.io-parser/build/esm/is-binary.js | 50 + .../socket.io-parser/build/esm/package.json | 3 + .../node_modules/debug/LICENSE | 20 + .../node_modules/debug/README.md | 481 + .../node_modules/debug/package.json | 60 + .../node_modules/debug/src/browser.js | 271 + .../node_modules/debug/src/common.js | 274 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/node.js | 263 + .../socket.io-parser/node_modules/ms/index.js | 162 + .../node_modules/ms/license.md | 21 + .../node_modules/ms/package.json | 38 + .../node_modules/ms/readme.md | 59 + .../socket.io-parser/package.json | 58 + server/node_modules/socket.io/LICENSE | 22 + server/node_modules/socket.io/Readme.md | 273 + .../client-dist/socket.io.esm.min.js | 7 + .../client-dist/socket.io.esm.min.js.map | 1 + .../socket.io/client-dist/socket.io.js | 4907 ++++++++++ .../socket.io/client-dist/socket.io.js.map | 1 + .../socket.io/client-dist/socket.io.min.js | 7 + .../client-dist/socket.io.min.js.map | 1 + .../client-dist/socket.io.msgpack.min.js | 7 + .../client-dist/socket.io.msgpack.min.js.map | 1 + .../socket.io/dist/broadcast-operator.d.ts | 283 + .../socket.io/dist/broadcast-operator.js | 436 + .../node_modules/socket.io/dist/client.d.ts | 119 + server/node_modules/socket.io/dist/client.js | 268 + server/node_modules/socket.io/dist/index.d.ts | 593 ++ server/node_modules/socket.io/dist/index.js | 804 ++ .../socket.io/dist/namespace.d.ts | 432 + .../node_modules/socket.io/dist/namespace.js | 581 ++ .../socket.io/dist/parent-namespace.d.ts | 30 + .../socket.io/dist/parent-namespace.js | 88 + .../socket.io/dist/socket-types.d.ts | 56 + .../socket.io/dist/socket-types.js | 11 + .../node_modules/socket.io/dist/socket.d.ts | 613 ++ server/node_modules/socket.io/dist/socket.js | 977 ++ .../socket.io/dist/typed-events.d.ts | 203 + .../socket.io/dist/typed-events.js | 81 + server/node_modules/socket.io/dist/uws.d.ts | 3 + server/node_modules/socket.io/dist/uws.js | 136 + .../socket.io/node_modules/debug/LICENSE | 20 + .../socket.io/node_modules/debug/README.md | 481 + .../socket.io/node_modules/debug/package.json | 60 + .../node_modules/debug/src/browser.js | 271 + .../node_modules/debug/src/common.js | 274 + .../socket.io/node_modules/debug/src/index.js | 10 + .../socket.io/node_modules/debug/src/node.js | 263 + .../socket.io/node_modules/ms/index.js | 162 + .../socket.io/node_modules/ms/license.md | 21 + .../socket.io/node_modules/ms/package.json | 38 + .../socket.io/node_modules/ms/readme.md | 59 + server/node_modules/socket.io/package.json | 85 + server/node_modules/socket.io/wrapper.mjs | 3 + server/node_modules/statuses/HISTORY.md | 82 + server/node_modules/statuses/LICENSE | 23 + server/node_modules/statuses/README.md | 136 + server/node_modules/statuses/codes.json | 65 + server/node_modules/statuses/index.js | 146 + server/node_modules/statuses/package.json | 49 + server/node_modules/toidentifier/HISTORY.md | 9 + server/node_modules/toidentifier/LICENSE | 21 + server/node_modules/toidentifier/README.md | 61 + server/node_modules/toidentifier/index.js | 32 + server/node_modules/toidentifier/package.json | 38 + server/node_modules/type-is/HISTORY.md | 259 + server/node_modules/type-is/LICENSE | 23 + server/node_modules/type-is/README.md | 170 + server/node_modules/type-is/index.js | 266 + server/node_modules/type-is/package.json | 45 + server/node_modules/undici-types/LICENSE | 21 + server/node_modules/undici-types/README.md | 6 + server/node_modules/undici-types/agent.d.ts | 31 + server/node_modules/undici-types/api.d.ts | 43 + .../undici-types/balanced-pool.d.ts | 29 + server/node_modules/undici-types/cache.d.ts | 36 + server/node_modules/undici-types/client.d.ts | 108 + .../node_modules/undici-types/connector.d.ts | 34 + .../undici-types/content-type.d.ts | 21 + server/node_modules/undici-types/cookies.d.ts | 28 + .../undici-types/diagnostics-channel.d.ts | 66 + .../node_modules/undici-types/dispatcher.d.ts | 255 + .../undici-types/env-http-proxy-agent.d.ts | 21 + server/node_modules/undici-types/errors.d.ts | 149 + .../undici-types/eventsource.d.ts | 63 + server/node_modules/undici-types/fetch.d.ts | 209 + server/node_modules/undici-types/file.d.ts | 39 + .../node_modules/undici-types/filereader.d.ts | 54 + .../node_modules/undici-types/formdata.d.ts | 108 + .../undici-types/global-dispatcher.d.ts | 9 + .../undici-types/global-origin.d.ts | 7 + .../node_modules/undici-types/handlers.d.ts | 15 + server/node_modules/undici-types/header.d.ts | 4 + server/node_modules/undici-types/index.d.ts | 71 + .../undici-types/interceptors.d.ts | 15 + .../node_modules/undici-types/mock-agent.d.ts | 50 + .../undici-types/mock-client.d.ts | 25 + .../undici-types/mock-errors.d.ts | 12 + .../undici-types/mock-interceptor.d.ts | 93 + .../node_modules/undici-types/mock-pool.d.ts | 25 + server/node_modules/undici-types/package.json | 55 + server/node_modules/undici-types/patch.d.ts | 71 + .../node_modules/undici-types/pool-stats.d.ts | 19 + server/node_modules/undici-types/pool.d.ts | 39 + .../undici-types/proxy-agent.d.ts | 28 + .../node_modules/undici-types/readable.d.ts | 60 + .../undici-types/retry-agent.d.ts | 8 + .../undici-types/retry-handler.d.ts | 116 + server/node_modules/undici-types/util.d.ts | 18 + server/node_modules/undici-types/webidl.d.ts | 222 + .../node_modules/undici-types/websocket.d.ts | 152 + server/node_modules/unpipe/HISTORY.md | 4 + server/node_modules/unpipe/LICENSE | 22 + server/node_modules/unpipe/README.md | 43 + server/node_modules/unpipe/index.js | 69 + server/node_modules/unpipe/package.json | 27 + server/node_modules/utils-merge/.npmignore | 9 + server/node_modules/utils-merge/LICENSE | 20 + server/node_modules/utils-merge/README.md | 34 + server/node_modules/utils-merge/index.js | 23 + server/node_modules/utils-merge/package.json | 40 + server/node_modules/vary/HISTORY.md | 39 + server/node_modules/vary/LICENSE | 22 + server/node_modules/vary/README.md | 101 + server/node_modules/vary/index.js | 149 + server/node_modules/vary/package.json | 43 + server/node_modules/ws/LICENSE | 20 + server/node_modules/ws/README.md | 548 ++ server/node_modules/ws/browser.js | 8 + server/node_modules/ws/index.js | 13 + server/node_modules/ws/lib/buffer-util.js | 131 + server/node_modules/ws/lib/constants.js | 12 + server/node_modules/ws/lib/event-target.js | 292 + server/node_modules/ws/lib/extension.js | 203 + server/node_modules/ws/lib/limiter.js | 55 + .../node_modules/ws/lib/permessage-deflate.js | 514 + server/node_modules/ws/lib/receiver.js | 704 ++ server/node_modules/ws/lib/sender.js | 497 + server/node_modules/ws/lib/stream.js | 159 + server/node_modules/ws/lib/subprotocol.js | 62 + server/node_modules/ws/lib/validation.js | 130 + .../node_modules/ws/lib/websocket-server.js | 540 ++ server/node_modules/ws/lib/websocket.js | 1338 +++ server/node_modules/ws/package.json | 69 + server/node_modules/ws/wrapper.mjs | 8 + server/package-lock.json | 1263 +++ server/package.json | 18 + server/serial.js | 39 + server/server.js | 55 + src/App.css | 19 +- src/App.js | 105 +- 1089 files changed, 181824 insertions(+), 110 deletions(-) create mode 100644 server/node_modules/.bin/mime create mode 100644 server/node_modules/.bin/mime.cmd create mode 100644 server/node_modules/.bin/mime.ps1 create mode 100644 server/node_modules/.bin/node-gyp-build create mode 100644 server/node_modules/.bin/node-gyp-build-optional create mode 100644 server/node_modules/.bin/node-gyp-build-optional.cmd create mode 100644 server/node_modules/.bin/node-gyp-build-optional.ps1 create mode 100644 server/node_modules/.bin/node-gyp-build-test create mode 100644 server/node_modules/.bin/node-gyp-build-test.cmd create mode 100644 server/node_modules/.bin/node-gyp-build-test.ps1 create mode 100644 server/node_modules/.bin/node-gyp-build.cmd create mode 100644 server/node_modules/.bin/node-gyp-build.ps1 create mode 100644 server/node_modules/.package-lock.json create mode 100644 server/node_modules/@serialport/binding-mock/.releaserc create mode 100644 server/node_modules/@serialport/binding-mock/LICENSE create mode 100644 server/node_modules/@serialport/binding-mock/README.md create mode 100644 server/node_modules/@serialport/binding-mock/dist/index-esm.mjs create mode 100644 server/node_modules/@serialport/binding-mock/dist/index.d.ts create mode 100644 server/node_modules/@serialport/binding-mock/dist/index.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/LICENSE create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/README.md create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/package.json create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/src/browser.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/src/common.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/src/index.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/debug/src/node.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/ms/index.js create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/ms/license.md create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/ms/package.json create mode 100644 server/node_modules/@serialport/binding-mock/node_modules/ms/readme.md create mode 100644 server/node_modules/@serialport/binding-mock/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/LICENSE create mode 100644 server/node_modules/@serialport/bindings-cpp/README.md create mode 100644 server/node_modules/@serialport/bindings-cpp/binding.gyp create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/darwin.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/darwin.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/errors.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/errors.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/index.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/index.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/linux-list.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/linux-list.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/linux.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/linux.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/load-bindings.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/load-bindings.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/poller.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/poller.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/unix-read.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/unix-read.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/unix-write.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/unix-write.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.js create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/win32.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/dist/win32.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/LICENSE create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/README.md create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/LICENSE create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/README.md create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.d.ts create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/LICENSE create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/README.md create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/browser.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/common.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/index.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/node.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/ms/index.js create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/ms/license.md create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/ms/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/node_modules/ms/readme.md create mode 100644 server/node_modules/@serialport/bindings-cpp/package.json create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/android-arm/node.napi.armv7.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/android-arm64/node.napi.armv8.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/darwin-x64+arm64/node.napi.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm/node.napi.armv6.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm/node.napi.armv7.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm64/node.napi.armv8.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/linux-x64/node.napi.glibc.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/linux-x64/node.napi.musl.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/win32-ia32/node.napi.node create mode 100644 server/node_modules/@serialport/bindings-cpp/prebuilds/win32-x64/node.napi.node create mode 100644 server/node_modules/@serialport/bindings-cpp/src/darwin_list.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/darwin_list.h create mode 100644 server/node_modules/@serialport/bindings-cpp/src/poller.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/poller.h create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport.h create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_linux.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_linux.h create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_unix.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_unix.h create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_win.cpp create mode 100644 server/node_modules/@serialport/bindings-cpp/src/serialport_win.h create mode 100644 server/node_modules/@serialport/bindings-interface/CODE_OF_CONDUCT.md create mode 100644 server/node_modules/@serialport/bindings-interface/LICENSE create mode 100644 server/node_modules/@serialport/bindings-interface/README.md create mode 100644 server/node_modules/@serialport/bindings-interface/dist/index-esm.mjs create mode 100644 server/node_modules/@serialport/bindings-interface/dist/index.d.ts create mode 100644 server/node_modules/@serialport/bindings-interface/dist/index.js create mode 100644 server/node_modules/@serialport/bindings-interface/package.json create mode 100644 server/node_modules/@serialport/parser-byte-length/LICENSE create mode 100644 server/node_modules/@serialport/parser-byte-length/README.md create mode 100644 server/node_modules/@serialport/parser-byte-length/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-byte-length/dist/index.js create mode 100644 server/node_modules/@serialport/parser-byte-length/package.json create mode 100644 server/node_modules/@serialport/parser-cctalk/LICENSE create mode 100644 server/node_modules/@serialport/parser-cctalk/README.md create mode 100644 server/node_modules/@serialport/parser-cctalk/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-cctalk/dist/index.js create mode 100644 server/node_modules/@serialport/parser-cctalk/package.json create mode 100644 server/node_modules/@serialport/parser-delimiter/LICENSE create mode 100644 server/node_modules/@serialport/parser-delimiter/README.md create mode 100644 server/node_modules/@serialport/parser-delimiter/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-delimiter/dist/index.js create mode 100644 server/node_modules/@serialport/parser-delimiter/package.json create mode 100644 server/node_modules/@serialport/parser-inter-byte-timeout/LICENSE create mode 100644 server/node_modules/@serialport/parser-inter-byte-timeout/README.md create mode 100644 server/node_modules/@serialport/parser-inter-byte-timeout/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-inter-byte-timeout/dist/index.js create mode 100644 server/node_modules/@serialport/parser-inter-byte-timeout/package.json create mode 100644 server/node_modules/@serialport/parser-packet-length/LICENSE create mode 100644 server/node_modules/@serialport/parser-packet-length/README.md create mode 100644 server/node_modules/@serialport/parser-packet-length/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-packet-length/dist/index.js create mode 100644 server/node_modules/@serialport/parser-packet-length/package.json create mode 100644 server/node_modules/@serialport/parser-readline/LICENSE create mode 100644 server/node_modules/@serialport/parser-readline/README.md create mode 100644 server/node_modules/@serialport/parser-readline/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-readline/dist/index.js create mode 100644 server/node_modules/@serialport/parser-readline/package.json create mode 100644 server/node_modules/@serialport/parser-ready/LICENSE create mode 100644 server/node_modules/@serialport/parser-ready/README.md create mode 100644 server/node_modules/@serialport/parser-ready/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-ready/dist/index.js create mode 100644 server/node_modules/@serialport/parser-ready/package.json create mode 100644 server/node_modules/@serialport/parser-regex/LICENSE create mode 100644 server/node_modules/@serialport/parser-regex/README.md create mode 100644 server/node_modules/@serialport/parser-regex/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-regex/dist/index.js create mode 100644 server/node_modules/@serialport/parser-regex/package.json create mode 100644 server/node_modules/@serialport/parser-slip-encoder/LICENSE create mode 100644 server/node_modules/@serialport/parser-slip-encoder/README.md create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/decoder.d.ts create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/decoder.js create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/encoder.d.ts create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/encoder.js create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-slip-encoder/dist/index.js create mode 100644 server/node_modules/@serialport/parser-slip-encoder/package.json create mode 100644 server/node_modules/@serialport/parser-spacepacket/LICENSE create mode 100644 server/node_modules/@serialport/parser-spacepacket/README.md create mode 100644 server/node_modules/@serialport/parser-spacepacket/dist/index.d.ts create mode 100644 server/node_modules/@serialport/parser-spacepacket/dist/index.js create mode 100644 server/node_modules/@serialport/parser-spacepacket/dist/utils.d.ts create mode 100644 server/node_modules/@serialport/parser-spacepacket/dist/utils.js create mode 100644 server/node_modules/@serialport/parser-spacepacket/package.json create mode 100644 server/node_modules/@serialport/stream/LICENSE create mode 100644 server/node_modules/@serialport/stream/README.md create mode 100644 server/node_modules/@serialport/stream/dist/index.d.ts create mode 100644 server/node_modules/@serialport/stream/dist/index.js create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/LICENSE create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/README.md create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/package.json create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/src/browser.js create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/src/common.js create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/src/index.js create mode 100644 server/node_modules/@serialport/stream/node_modules/debug/src/node.js create mode 100644 server/node_modules/@serialport/stream/node_modules/ms/index.js create mode 100644 server/node_modules/@serialport/stream/node_modules/ms/license.md create mode 100644 server/node_modules/@serialport/stream/node_modules/ms/package.json create mode 100644 server/node_modules/@serialport/stream/node_modules/ms/readme.md create mode 100644 server/node_modules/@serialport/stream/package.json create mode 100644 server/node_modules/@socket.io/component-emitter/LICENSE create mode 100644 server/node_modules/@socket.io/component-emitter/Readme.md create mode 100644 server/node_modules/@socket.io/component-emitter/lib/cjs/index.d.ts create mode 100644 server/node_modules/@socket.io/component-emitter/lib/cjs/index.js create mode 100644 server/node_modules/@socket.io/component-emitter/lib/cjs/package.json create mode 100644 server/node_modules/@socket.io/component-emitter/lib/esm/index.d.ts create mode 100644 server/node_modules/@socket.io/component-emitter/lib/esm/index.js create mode 100644 server/node_modules/@socket.io/component-emitter/lib/esm/package.json create mode 100644 server/node_modules/@socket.io/component-emitter/package.json create mode 100644 server/node_modules/@types/cookie/LICENSE create mode 100644 server/node_modules/@types/cookie/README.md create mode 100644 server/node_modules/@types/cookie/index.d.ts create mode 100644 server/node_modules/@types/cookie/package.json create mode 100644 server/node_modules/@types/cors/LICENSE create mode 100644 server/node_modules/@types/cors/README.md create mode 100644 server/node_modules/@types/cors/index.d.ts create mode 100644 server/node_modules/@types/cors/package.json create mode 100644 server/node_modules/@types/node/LICENSE create mode 100644 server/node_modules/@types/node/README.md create mode 100644 server/node_modules/@types/node/assert.d.ts create mode 100644 server/node_modules/@types/node/assert/strict.d.ts create mode 100644 server/node_modules/@types/node/async_hooks.d.ts create mode 100644 server/node_modules/@types/node/buffer.buffer.d.ts create mode 100644 server/node_modules/@types/node/buffer.d.ts create mode 100644 server/node_modules/@types/node/child_process.d.ts create mode 100644 server/node_modules/@types/node/cluster.d.ts create mode 100644 server/node_modules/@types/node/compatibility/disposable.d.ts create mode 100644 server/node_modules/@types/node/compatibility/index.d.ts create mode 100644 server/node_modules/@types/node/compatibility/indexable.d.ts create mode 100644 server/node_modules/@types/node/compatibility/iterators.d.ts create mode 100644 server/node_modules/@types/node/console.d.ts create mode 100644 server/node_modules/@types/node/constants.d.ts create mode 100644 server/node_modules/@types/node/crypto.d.ts create mode 100644 server/node_modules/@types/node/dgram.d.ts create mode 100644 server/node_modules/@types/node/diagnostics_channel.d.ts create mode 100644 server/node_modules/@types/node/dns.d.ts create mode 100644 server/node_modules/@types/node/dns/promises.d.ts create mode 100644 server/node_modules/@types/node/dom-events.d.ts create mode 100644 server/node_modules/@types/node/domain.d.ts create mode 100644 server/node_modules/@types/node/events.d.ts create mode 100644 server/node_modules/@types/node/fs.d.ts create mode 100644 server/node_modules/@types/node/fs/promises.d.ts create mode 100644 server/node_modules/@types/node/globals.d.ts create mode 100644 server/node_modules/@types/node/globals.typedarray.d.ts create mode 100644 server/node_modules/@types/node/http.d.ts create mode 100644 server/node_modules/@types/node/http2.d.ts create mode 100644 server/node_modules/@types/node/https.d.ts create mode 100644 server/node_modules/@types/node/index.d.ts create mode 100644 server/node_modules/@types/node/inspector.d.ts create mode 100644 server/node_modules/@types/node/module.d.ts create mode 100644 server/node_modules/@types/node/net.d.ts create mode 100644 server/node_modules/@types/node/os.d.ts create mode 100644 server/node_modules/@types/node/package.json create mode 100644 server/node_modules/@types/node/path.d.ts create mode 100644 server/node_modules/@types/node/perf_hooks.d.ts create mode 100644 server/node_modules/@types/node/process.d.ts create mode 100644 server/node_modules/@types/node/punycode.d.ts create mode 100644 server/node_modules/@types/node/querystring.d.ts create mode 100644 server/node_modules/@types/node/readline.d.ts create mode 100644 server/node_modules/@types/node/readline/promises.d.ts create mode 100644 server/node_modules/@types/node/repl.d.ts create mode 100644 server/node_modules/@types/node/sea.d.ts create mode 100644 server/node_modules/@types/node/sqlite.d.ts create mode 100644 server/node_modules/@types/node/stream.d.ts create mode 100644 server/node_modules/@types/node/stream/consumers.d.ts create mode 100644 server/node_modules/@types/node/stream/promises.d.ts create mode 100644 server/node_modules/@types/node/stream/web.d.ts create mode 100644 server/node_modules/@types/node/string_decoder.d.ts create mode 100644 server/node_modules/@types/node/test.d.ts create mode 100644 server/node_modules/@types/node/timers.d.ts create mode 100644 server/node_modules/@types/node/timers/promises.d.ts create mode 100644 server/node_modules/@types/node/tls.d.ts create mode 100644 server/node_modules/@types/node/trace_events.d.ts create mode 100644 server/node_modules/@types/node/ts5.6/buffer.buffer.d.ts create mode 100644 server/node_modules/@types/node/ts5.6/globals.typedarray.d.ts create mode 100644 server/node_modules/@types/node/ts5.6/index.d.ts create mode 100644 server/node_modules/@types/node/tty.d.ts create mode 100644 server/node_modules/@types/node/url.d.ts create mode 100644 server/node_modules/@types/node/util.d.ts create mode 100644 server/node_modules/@types/node/v8.d.ts create mode 100644 server/node_modules/@types/node/vm.d.ts create mode 100644 server/node_modules/@types/node/wasi.d.ts create mode 100644 server/node_modules/@types/node/worker_threads.d.ts create mode 100644 server/node_modules/@types/node/zlib.d.ts create mode 100644 server/node_modules/accepts/HISTORY.md create mode 100644 server/node_modules/accepts/LICENSE create mode 100644 server/node_modules/accepts/README.md create mode 100644 server/node_modules/accepts/index.js create mode 100644 server/node_modules/accepts/package.json create mode 100644 server/node_modules/array-flatten/LICENSE create mode 100644 server/node_modules/array-flatten/README.md create mode 100644 server/node_modules/array-flatten/array-flatten.js create mode 100644 server/node_modules/array-flatten/package.json create mode 100644 server/node_modules/base64id/CHANGELOG.md create mode 100644 server/node_modules/base64id/LICENSE create mode 100644 server/node_modules/base64id/README.md create mode 100644 server/node_modules/base64id/lib/base64id.js create mode 100644 server/node_modules/base64id/package.json create mode 100644 server/node_modules/body-parser/HISTORY.md create mode 100644 server/node_modules/body-parser/LICENSE create mode 100644 server/node_modules/body-parser/README.md create mode 100644 server/node_modules/body-parser/SECURITY.md create mode 100644 server/node_modules/body-parser/index.js create mode 100644 server/node_modules/body-parser/lib/read.js create mode 100644 server/node_modules/body-parser/lib/types/json.js create mode 100644 server/node_modules/body-parser/lib/types/raw.js create mode 100644 server/node_modules/body-parser/lib/types/text.js create mode 100644 server/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 server/node_modules/body-parser/package.json create mode 100644 server/node_modules/bytes/History.md create mode 100644 server/node_modules/bytes/LICENSE create mode 100644 server/node_modules/bytes/Readme.md create mode 100644 server/node_modules/bytes/index.js create mode 100644 server/node_modules/bytes/package.json create mode 100644 server/node_modules/call-bind/.eslintignore create mode 100644 server/node_modules/call-bind/.eslintrc create mode 100644 server/node_modules/call-bind/.github/FUNDING.yml create mode 100644 server/node_modules/call-bind/.nycrc create mode 100644 server/node_modules/call-bind/CHANGELOG.md create mode 100644 server/node_modules/call-bind/LICENSE create mode 100644 server/node_modules/call-bind/README.md create mode 100644 server/node_modules/call-bind/callBound.js create mode 100644 server/node_modules/call-bind/index.js create mode 100644 server/node_modules/call-bind/package.json create mode 100644 server/node_modules/call-bind/test/callBound.js create mode 100644 server/node_modules/call-bind/test/index.js create mode 100644 server/node_modules/content-disposition/HISTORY.md create mode 100644 server/node_modules/content-disposition/LICENSE create mode 100644 server/node_modules/content-disposition/README.md create mode 100644 server/node_modules/content-disposition/index.js create mode 100644 server/node_modules/content-disposition/package.json create mode 100644 server/node_modules/content-type/HISTORY.md create mode 100644 server/node_modules/content-type/LICENSE create mode 100644 server/node_modules/content-type/README.md create mode 100644 server/node_modules/content-type/index.js create mode 100644 server/node_modules/content-type/package.json create mode 100644 server/node_modules/cookie-signature/.npmignore create mode 100644 server/node_modules/cookie-signature/History.md create mode 100644 server/node_modules/cookie-signature/Readme.md create mode 100644 server/node_modules/cookie-signature/index.js create mode 100644 server/node_modules/cookie-signature/package.json create mode 100644 server/node_modules/cookie/LICENSE create mode 100644 server/node_modules/cookie/README.md create mode 100644 server/node_modules/cookie/SECURITY.md create mode 100644 server/node_modules/cookie/index.js create mode 100644 server/node_modules/cookie/package.json create mode 100644 server/node_modules/cors/CONTRIBUTING.md create mode 100644 server/node_modules/cors/HISTORY.md create mode 100644 server/node_modules/cors/LICENSE create mode 100644 server/node_modules/cors/README.md create mode 100644 server/node_modules/cors/lib/index.js create mode 100644 server/node_modules/cors/package.json create mode 100644 server/node_modules/debug/.coveralls.yml create mode 100644 server/node_modules/debug/.eslintrc create mode 100644 server/node_modules/debug/.npmignore create mode 100644 server/node_modules/debug/.travis.yml create mode 100644 server/node_modules/debug/CHANGELOG.md create mode 100644 server/node_modules/debug/LICENSE create mode 100644 server/node_modules/debug/Makefile create mode 100644 server/node_modules/debug/README.md create mode 100644 server/node_modules/debug/component.json create mode 100644 server/node_modules/debug/karma.conf.js create mode 100644 server/node_modules/debug/node.js create mode 100644 server/node_modules/debug/package.json create mode 100644 server/node_modules/debug/src/browser.js create mode 100644 server/node_modules/debug/src/debug.js create mode 100644 server/node_modules/debug/src/index.js create mode 100644 server/node_modules/debug/src/inspector-log.js create mode 100644 server/node_modules/debug/src/node.js create mode 100644 server/node_modules/define-data-property/.eslintrc create mode 100644 server/node_modules/define-data-property/.github/FUNDING.yml create mode 100644 server/node_modules/define-data-property/.nycrc create mode 100644 server/node_modules/define-data-property/CHANGELOG.md create mode 100644 server/node_modules/define-data-property/LICENSE create mode 100644 server/node_modules/define-data-property/README.md create mode 100644 server/node_modules/define-data-property/index.d.ts create mode 100644 server/node_modules/define-data-property/index.js create mode 100644 server/node_modules/define-data-property/package.json create mode 100644 server/node_modules/define-data-property/test/index.js create mode 100644 server/node_modules/define-data-property/tsconfig.json create mode 100644 server/node_modules/depd/History.md create mode 100644 server/node_modules/depd/LICENSE create mode 100644 server/node_modules/depd/Readme.md create mode 100644 server/node_modules/depd/index.js create mode 100644 server/node_modules/depd/lib/browser/index.js create mode 100644 server/node_modules/depd/package.json create mode 100644 server/node_modules/destroy/LICENSE create mode 100644 server/node_modules/destroy/README.md create mode 100644 server/node_modules/destroy/index.js create mode 100644 server/node_modules/destroy/package.json create mode 100644 server/node_modules/ee-first/LICENSE create mode 100644 server/node_modules/ee-first/README.md create mode 100644 server/node_modules/ee-first/index.js create mode 100644 server/node_modules/ee-first/package.json create mode 100644 server/node_modules/encodeurl/LICENSE create mode 100644 server/node_modules/encodeurl/README.md create mode 100644 server/node_modules/encodeurl/index.js create mode 100644 server/node_modules/encodeurl/package.json create mode 100644 server/node_modules/engine.io-parser/LICENSE create mode 100644 server/node_modules/engine.io-parser/Readme.md create mode 100644 server/node_modules/engine.io-parser/build/cjs/commons.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/commons.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/decodePacket.browser.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/decodePacket.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/decodePacket.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/encodePacket.browser.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/encodePacket.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/encodePacket.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/index.d.ts create mode 100644 server/node_modules/engine.io-parser/build/cjs/index.js create mode 100644 server/node_modules/engine.io-parser/build/cjs/package.json create mode 100644 server/node_modules/engine.io-parser/build/esm/commons.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/commons.js create mode 100644 server/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js create mode 100644 server/node_modules/engine.io-parser/build/esm/decodePacket.browser.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/decodePacket.browser.js create mode 100644 server/node_modules/engine.io-parser/build/esm/decodePacket.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/decodePacket.js create mode 100644 server/node_modules/engine.io-parser/build/esm/encodePacket.browser.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/encodePacket.browser.js create mode 100644 server/node_modules/engine.io-parser/build/esm/encodePacket.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/encodePacket.js create mode 100644 server/node_modules/engine.io-parser/build/esm/index.d.ts create mode 100644 server/node_modules/engine.io-parser/build/esm/index.js create mode 100644 server/node_modules/engine.io-parser/build/esm/package.json create mode 100644 server/node_modules/engine.io-parser/package.json create mode 100644 server/node_modules/engine.io/LICENSE create mode 100644 server/node_modules/engine.io/README.md create mode 100644 server/node_modules/engine.io/build/engine.io.d.ts create mode 100644 server/node_modules/engine.io/build/engine.io.js create mode 100644 server/node_modules/engine.io/build/parser-v3/index.d.ts create mode 100644 server/node_modules/engine.io/build/parser-v3/index.js create mode 100644 server/node_modules/engine.io/build/parser-v3/utf8.d.ts create mode 100644 server/node_modules/engine.io/build/parser-v3/utf8.js create mode 100644 server/node_modules/engine.io/build/server.d.ts create mode 100644 server/node_modules/engine.io/build/server.js create mode 100644 server/node_modules/engine.io/build/socket.d.ts create mode 100644 server/node_modules/engine.io/build/socket.js create mode 100644 server/node_modules/engine.io/build/transport.d.ts create mode 100644 server/node_modules/engine.io/build/transport.js create mode 100644 server/node_modules/engine.io/build/transports-uws/index.d.ts create mode 100644 server/node_modules/engine.io/build/transports-uws/index.js create mode 100644 server/node_modules/engine.io/build/transports-uws/polling.d.ts create mode 100644 server/node_modules/engine.io/build/transports-uws/polling.js create mode 100644 server/node_modules/engine.io/build/transports-uws/websocket.d.ts create mode 100644 server/node_modules/engine.io/build/transports-uws/websocket.js create mode 100644 server/node_modules/engine.io/build/transports/index.d.ts create mode 100644 server/node_modules/engine.io/build/transports/index.js create mode 100644 server/node_modules/engine.io/build/transports/polling-jsonp.d.ts create mode 100644 server/node_modules/engine.io/build/transports/polling-jsonp.js create mode 100644 server/node_modules/engine.io/build/transports/polling.d.ts create mode 100644 server/node_modules/engine.io/build/transports/polling.js create mode 100644 server/node_modules/engine.io/build/transports/websocket.d.ts create mode 100644 server/node_modules/engine.io/build/transports/websocket.js create mode 100644 server/node_modules/engine.io/build/transports/webtransport.d.ts create mode 100644 server/node_modules/engine.io/build/transports/webtransport.js create mode 100644 server/node_modules/engine.io/build/userver.d.ts create mode 100644 server/node_modules/engine.io/build/userver.js create mode 100644 server/node_modules/engine.io/node_modules/cookie/LICENSE create mode 100644 server/node_modules/engine.io/node_modules/cookie/README.md create mode 100644 server/node_modules/engine.io/node_modules/cookie/SECURITY.md create mode 100644 server/node_modules/engine.io/node_modules/cookie/index.js create mode 100644 server/node_modules/engine.io/node_modules/cookie/package.json create mode 100644 server/node_modules/engine.io/node_modules/debug/LICENSE create mode 100644 server/node_modules/engine.io/node_modules/debug/README.md create mode 100644 server/node_modules/engine.io/node_modules/debug/package.json create mode 100644 server/node_modules/engine.io/node_modules/debug/src/browser.js create mode 100644 server/node_modules/engine.io/node_modules/debug/src/common.js create mode 100644 server/node_modules/engine.io/node_modules/debug/src/index.js create mode 100644 server/node_modules/engine.io/node_modules/debug/src/node.js create mode 100644 server/node_modules/engine.io/node_modules/ms/index.js create mode 100644 server/node_modules/engine.io/node_modules/ms/license.md create mode 100644 server/node_modules/engine.io/node_modules/ms/package.json create mode 100644 server/node_modules/engine.io/node_modules/ms/readme.md create mode 100644 server/node_modules/engine.io/package.json create mode 100644 server/node_modules/engine.io/wrapper.mjs create mode 100644 server/node_modules/es-define-property/.eslintrc create mode 100644 server/node_modules/es-define-property/.github/FUNDING.yml create mode 100644 server/node_modules/es-define-property/.nycrc create mode 100644 server/node_modules/es-define-property/CHANGELOG.md create mode 100644 server/node_modules/es-define-property/LICENSE create mode 100644 server/node_modules/es-define-property/README.md create mode 100644 server/node_modules/es-define-property/index.d.ts create mode 100644 server/node_modules/es-define-property/index.js create mode 100644 server/node_modules/es-define-property/package.json create mode 100644 server/node_modules/es-define-property/test/index.js create mode 100644 server/node_modules/es-define-property/tsconfig.json create mode 100644 server/node_modules/es-errors/.eslintrc create mode 100644 server/node_modules/es-errors/.github/FUNDING.yml create mode 100644 server/node_modules/es-errors/CHANGELOG.md create mode 100644 server/node_modules/es-errors/LICENSE create mode 100644 server/node_modules/es-errors/README.md create mode 100644 server/node_modules/es-errors/eval.d.ts create mode 100644 server/node_modules/es-errors/eval.js create mode 100644 server/node_modules/es-errors/index.d.ts create mode 100644 server/node_modules/es-errors/index.js create mode 100644 server/node_modules/es-errors/package.json create mode 100644 server/node_modules/es-errors/range.d.ts create mode 100644 server/node_modules/es-errors/range.js create mode 100644 server/node_modules/es-errors/ref.d.ts create mode 100644 server/node_modules/es-errors/ref.js create mode 100644 server/node_modules/es-errors/syntax.d.ts create mode 100644 server/node_modules/es-errors/syntax.js create mode 100644 server/node_modules/es-errors/test/index.js create mode 100644 server/node_modules/es-errors/tsconfig.json create mode 100644 server/node_modules/es-errors/type.d.ts create mode 100644 server/node_modules/es-errors/type.js create mode 100644 server/node_modules/es-errors/uri.d.ts create mode 100644 server/node_modules/es-errors/uri.js create mode 100644 server/node_modules/escape-html/LICENSE create mode 100644 server/node_modules/escape-html/Readme.md create mode 100644 server/node_modules/escape-html/index.js create mode 100644 server/node_modules/escape-html/package.json create mode 100644 server/node_modules/etag/HISTORY.md create mode 100644 server/node_modules/etag/LICENSE create mode 100644 server/node_modules/etag/README.md create mode 100644 server/node_modules/etag/index.js create mode 100644 server/node_modules/etag/package.json create mode 100644 server/node_modules/express/History.md create mode 100644 server/node_modules/express/LICENSE create mode 100644 server/node_modules/express/Readme.md create mode 100644 server/node_modules/express/index.js create mode 100644 server/node_modules/express/lib/application.js create mode 100644 server/node_modules/express/lib/express.js create mode 100644 server/node_modules/express/lib/middleware/init.js create mode 100644 server/node_modules/express/lib/middleware/query.js create mode 100644 server/node_modules/express/lib/request.js create mode 100644 server/node_modules/express/lib/response.js create mode 100644 server/node_modules/express/lib/router/index.js create mode 100644 server/node_modules/express/lib/router/layer.js create mode 100644 server/node_modules/express/lib/router/route.js create mode 100644 server/node_modules/express/lib/utils.js create mode 100644 server/node_modules/express/lib/view.js create mode 100644 server/node_modules/express/package.json create mode 100644 server/node_modules/finalhandler/HISTORY.md create mode 100644 server/node_modules/finalhandler/LICENSE create mode 100644 server/node_modules/finalhandler/README.md create mode 100644 server/node_modules/finalhandler/SECURITY.md create mode 100644 server/node_modules/finalhandler/index.js create mode 100644 server/node_modules/finalhandler/package.json create mode 100644 server/node_modules/forwarded/HISTORY.md create mode 100644 server/node_modules/forwarded/LICENSE create mode 100644 server/node_modules/forwarded/README.md create mode 100644 server/node_modules/forwarded/index.js create mode 100644 server/node_modules/forwarded/package.json create mode 100644 server/node_modules/fresh/HISTORY.md create mode 100644 server/node_modules/fresh/LICENSE create mode 100644 server/node_modules/fresh/README.md create mode 100644 server/node_modules/fresh/index.js create mode 100644 server/node_modules/fresh/package.json create mode 100644 server/node_modules/function-bind/.eslintrc create mode 100644 server/node_modules/function-bind/.github/FUNDING.yml create mode 100644 server/node_modules/function-bind/.github/SECURITY.md create mode 100644 server/node_modules/function-bind/.nycrc create mode 100644 server/node_modules/function-bind/CHANGELOG.md create mode 100644 server/node_modules/function-bind/LICENSE create mode 100644 server/node_modules/function-bind/README.md create mode 100644 server/node_modules/function-bind/implementation.js create mode 100644 server/node_modules/function-bind/index.js create mode 100644 server/node_modules/function-bind/package.json create mode 100644 server/node_modules/function-bind/test/.eslintrc create mode 100644 server/node_modules/function-bind/test/index.js create mode 100644 server/node_modules/get-intrinsic/.eslintrc create mode 100644 server/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 server/node_modules/get-intrinsic/.nycrc create mode 100644 server/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 server/node_modules/get-intrinsic/LICENSE create mode 100644 server/node_modules/get-intrinsic/README.md create mode 100644 server/node_modules/get-intrinsic/index.js create mode 100644 server/node_modules/get-intrinsic/package.json create mode 100644 server/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 server/node_modules/gopd/.eslintrc create mode 100644 server/node_modules/gopd/.github/FUNDING.yml create mode 100644 server/node_modules/gopd/CHANGELOG.md create mode 100644 server/node_modules/gopd/LICENSE create mode 100644 server/node_modules/gopd/README.md create mode 100644 server/node_modules/gopd/index.js create mode 100644 server/node_modules/gopd/package.json create mode 100644 server/node_modules/gopd/test/index.js create mode 100644 server/node_modules/has-property-descriptors/.eslintrc create mode 100644 server/node_modules/has-property-descriptors/.github/FUNDING.yml create mode 100644 server/node_modules/has-property-descriptors/.nycrc create mode 100644 server/node_modules/has-property-descriptors/CHANGELOG.md create mode 100644 server/node_modules/has-property-descriptors/LICENSE create mode 100644 server/node_modules/has-property-descriptors/README.md create mode 100644 server/node_modules/has-property-descriptors/index.js create mode 100644 server/node_modules/has-property-descriptors/package.json create mode 100644 server/node_modules/has-property-descriptors/test/index.js create mode 100644 server/node_modules/has-proto/.eslintrc create mode 100644 server/node_modules/has-proto/.github/FUNDING.yml create mode 100644 server/node_modules/has-proto/CHANGELOG.md create mode 100644 server/node_modules/has-proto/LICENSE create mode 100644 server/node_modules/has-proto/README.md create mode 100644 server/node_modules/has-proto/index.d.ts create mode 100644 server/node_modules/has-proto/index.js create mode 100644 server/node_modules/has-proto/package.json create mode 100644 server/node_modules/has-proto/test/index.js create mode 100644 server/node_modules/has-proto/tsconfig.json create mode 100644 server/node_modules/has-symbols/.eslintrc create mode 100644 server/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 server/node_modules/has-symbols/.nycrc create mode 100644 server/node_modules/has-symbols/CHANGELOG.md create mode 100644 server/node_modules/has-symbols/LICENSE create mode 100644 server/node_modules/has-symbols/README.md create mode 100644 server/node_modules/has-symbols/index.js create mode 100644 server/node_modules/has-symbols/package.json create mode 100644 server/node_modules/has-symbols/shams.js create mode 100644 server/node_modules/has-symbols/test/index.js create mode 100644 server/node_modules/has-symbols/test/shams/core-js.js create mode 100644 server/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 server/node_modules/has-symbols/test/tests.js create mode 100644 server/node_modules/hasown/.eslintrc create mode 100644 server/node_modules/hasown/.github/FUNDING.yml create mode 100644 server/node_modules/hasown/.nycrc create mode 100644 server/node_modules/hasown/CHANGELOG.md create mode 100644 server/node_modules/hasown/LICENSE create mode 100644 server/node_modules/hasown/README.md create mode 100644 server/node_modules/hasown/index.d.ts create mode 100644 server/node_modules/hasown/index.js create mode 100644 server/node_modules/hasown/package.json create mode 100644 server/node_modules/hasown/tsconfig.json create mode 100644 server/node_modules/http-errors/HISTORY.md create mode 100644 server/node_modules/http-errors/LICENSE create mode 100644 server/node_modules/http-errors/README.md create mode 100644 server/node_modules/http-errors/index.js create mode 100644 server/node_modules/http-errors/package.json create mode 100644 server/node_modules/iconv-lite/Changelog.md create mode 100644 server/node_modules/iconv-lite/LICENSE create mode 100644 server/node_modules/iconv-lite/README.md create mode 100644 server/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 server/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 server/node_modules/iconv-lite/encodings/index.js create mode 100644 server/node_modules/iconv-lite/encodings/internal.js create mode 100644 server/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 server/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 server/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 server/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 server/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 server/node_modules/iconv-lite/encodings/utf16.js create mode 100644 server/node_modules/iconv-lite/encodings/utf7.js create mode 100644 server/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 server/node_modules/iconv-lite/lib/extend-node.js create mode 100644 server/node_modules/iconv-lite/lib/index.d.ts create mode 100644 server/node_modules/iconv-lite/lib/index.js create mode 100644 server/node_modules/iconv-lite/lib/streams.js create mode 100644 server/node_modules/iconv-lite/package.json create mode 100644 server/node_modules/inherits/LICENSE create mode 100644 server/node_modules/inherits/README.md create mode 100644 server/node_modules/inherits/inherits.js create mode 100644 server/node_modules/inherits/inherits_browser.js create mode 100644 server/node_modules/inherits/package.json create mode 100644 server/node_modules/ipaddr.js/LICENSE create mode 100644 server/node_modules/ipaddr.js/README.md create mode 100644 server/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 server/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 server/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 server/node_modules/ipaddr.js/package.json create mode 100644 server/node_modules/media-typer/HISTORY.md create mode 100644 server/node_modules/media-typer/LICENSE create mode 100644 server/node_modules/media-typer/README.md create mode 100644 server/node_modules/media-typer/index.js create mode 100644 server/node_modules/media-typer/package.json create mode 100644 server/node_modules/merge-descriptors/HISTORY.md create mode 100644 server/node_modules/merge-descriptors/LICENSE create mode 100644 server/node_modules/merge-descriptors/README.md create mode 100644 server/node_modules/merge-descriptors/index.js create mode 100644 server/node_modules/merge-descriptors/package.json create mode 100644 server/node_modules/methods/HISTORY.md create mode 100644 server/node_modules/methods/LICENSE create mode 100644 server/node_modules/methods/README.md create mode 100644 server/node_modules/methods/index.js create mode 100644 server/node_modules/methods/package.json create mode 100644 server/node_modules/mime-db/HISTORY.md create mode 100644 server/node_modules/mime-db/LICENSE create mode 100644 server/node_modules/mime-db/README.md create mode 100644 server/node_modules/mime-db/db.json create mode 100644 server/node_modules/mime-db/index.js create mode 100644 server/node_modules/mime-db/package.json create mode 100644 server/node_modules/mime-types/HISTORY.md create mode 100644 server/node_modules/mime-types/LICENSE create mode 100644 server/node_modules/mime-types/README.md create mode 100644 server/node_modules/mime-types/index.js create mode 100644 server/node_modules/mime-types/package.json create mode 100644 server/node_modules/mime/.npmignore create mode 100644 server/node_modules/mime/CHANGELOG.md create mode 100644 server/node_modules/mime/LICENSE create mode 100644 server/node_modules/mime/README.md create mode 100644 server/node_modules/mime/cli.js create mode 100644 server/node_modules/mime/mime.js create mode 100644 server/node_modules/mime/package.json create mode 100644 server/node_modules/mime/src/build.js create mode 100644 server/node_modules/mime/src/test.js create mode 100644 server/node_modules/mime/types.json create mode 100644 server/node_modules/ms/index.js create mode 100644 server/node_modules/ms/license.md create mode 100644 server/node_modules/ms/package.json create mode 100644 server/node_modules/ms/readme.md create mode 100644 server/node_modules/negotiator/HISTORY.md create mode 100644 server/node_modules/negotiator/LICENSE create mode 100644 server/node_modules/negotiator/README.md create mode 100644 server/node_modules/negotiator/index.js create mode 100644 server/node_modules/negotiator/lib/charset.js create mode 100644 server/node_modules/negotiator/lib/encoding.js create mode 100644 server/node_modules/negotiator/lib/language.js create mode 100644 server/node_modules/negotiator/lib/mediaType.js create mode 100644 server/node_modules/negotiator/package.json create mode 100644 server/node_modules/node-addon-api/LICENSE.md create mode 100644 server/node_modules/node-addon-api/README.md create mode 100644 server/node_modules/node-addon-api/common.gypi create mode 100644 server/node_modules/node-addon-api/except.gypi create mode 100644 server/node_modules/node-addon-api/index.js create mode 100644 server/node_modules/node-addon-api/napi-inl.deprecated.h create mode 100644 server/node_modules/node-addon-api/napi-inl.h create mode 100644 server/node_modules/node-addon-api/napi.h create mode 100644 server/node_modules/node-addon-api/node_api.gyp create mode 100644 server/node_modules/node-addon-api/noexcept.gypi create mode 100644 server/node_modules/node-addon-api/nothing.c create mode 100644 server/node_modules/node-addon-api/package-support.json create mode 100644 server/node_modules/node-addon-api/package.json create mode 100644 server/node_modules/node-addon-api/tools/README.md create mode 100644 server/node_modules/node-addon-api/tools/check-napi.js create mode 100644 server/node_modules/node-addon-api/tools/clang-format.js create mode 100644 server/node_modules/node-addon-api/tools/conversion.js create mode 100644 server/node_modules/node-addon-api/tools/eslint-format.js create mode 100644 server/node_modules/node-gyp-build/LICENSE create mode 100644 server/node_modules/node-gyp-build/README.md create mode 100644 server/node_modules/node-gyp-build/bin.js create mode 100644 server/node_modules/node-gyp-build/build-test.js create mode 100644 server/node_modules/node-gyp-build/index.js create mode 100644 server/node_modules/node-gyp-build/node-gyp-build.js create mode 100644 server/node_modules/node-gyp-build/optional.js create mode 100644 server/node_modules/node-gyp-build/package.json create mode 100644 server/node_modules/object-assign/index.js create mode 100644 server/node_modules/object-assign/license create mode 100644 server/node_modules/object-assign/package.json create mode 100644 server/node_modules/object-assign/readme.md create mode 100644 server/node_modules/object-inspect/.eslintrc create mode 100644 server/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 server/node_modules/object-inspect/.nycrc create mode 100644 server/node_modules/object-inspect/CHANGELOG.md create mode 100644 server/node_modules/object-inspect/LICENSE create mode 100644 server/node_modules/object-inspect/example/all.js create mode 100644 server/node_modules/object-inspect/example/circular.js create mode 100644 server/node_modules/object-inspect/example/fn.js create mode 100644 server/node_modules/object-inspect/example/inspect.js create mode 100644 server/node_modules/object-inspect/index.js create mode 100644 server/node_modules/object-inspect/package-support.json create mode 100644 server/node_modules/object-inspect/package.json create mode 100644 server/node_modules/object-inspect/readme.markdown create mode 100644 server/node_modules/object-inspect/test-core-js.js create mode 100644 server/node_modules/object-inspect/test/bigint.js create mode 100644 server/node_modules/object-inspect/test/browser/dom.js create mode 100644 server/node_modules/object-inspect/test/circular.js create mode 100644 server/node_modules/object-inspect/test/deep.js create mode 100644 server/node_modules/object-inspect/test/element.js create mode 100644 server/node_modules/object-inspect/test/err.js create mode 100644 server/node_modules/object-inspect/test/fakes.js create mode 100644 server/node_modules/object-inspect/test/fn.js create mode 100644 server/node_modules/object-inspect/test/global.js create mode 100644 server/node_modules/object-inspect/test/has.js create mode 100644 server/node_modules/object-inspect/test/holes.js create mode 100644 server/node_modules/object-inspect/test/indent-option.js create mode 100644 server/node_modules/object-inspect/test/inspect.js create mode 100644 server/node_modules/object-inspect/test/lowbyte.js create mode 100644 server/node_modules/object-inspect/test/number.js create mode 100644 server/node_modules/object-inspect/test/quoteStyle.js create mode 100644 server/node_modules/object-inspect/test/toStringTag.js create mode 100644 server/node_modules/object-inspect/test/undef.js create mode 100644 server/node_modules/object-inspect/test/values.js create mode 100644 server/node_modules/object-inspect/util.inspect.js create mode 100644 server/node_modules/on-finished/HISTORY.md create mode 100644 server/node_modules/on-finished/LICENSE create mode 100644 server/node_modules/on-finished/README.md create mode 100644 server/node_modules/on-finished/index.js create mode 100644 server/node_modules/on-finished/package.json create mode 100644 server/node_modules/parseurl/HISTORY.md create mode 100644 server/node_modules/parseurl/LICENSE create mode 100644 server/node_modules/parseurl/README.md create mode 100644 server/node_modules/parseurl/index.js create mode 100644 server/node_modules/parseurl/package.json create mode 100644 server/node_modules/path-to-regexp/LICENSE create mode 100644 server/node_modules/path-to-regexp/Readme.md create mode 100644 server/node_modules/path-to-regexp/index.js create mode 100644 server/node_modules/path-to-regexp/package.json create mode 100644 server/node_modules/proxy-addr/HISTORY.md create mode 100644 server/node_modules/proxy-addr/LICENSE create mode 100644 server/node_modules/proxy-addr/README.md create mode 100644 server/node_modules/proxy-addr/index.js create mode 100644 server/node_modules/proxy-addr/package.json create mode 100644 server/node_modules/qs/.editorconfig create mode 100644 server/node_modules/qs/.eslintrc create mode 100644 server/node_modules/qs/.github/FUNDING.yml create mode 100644 server/node_modules/qs/.nycrc create mode 100644 server/node_modules/qs/CHANGELOG.md create mode 100644 server/node_modules/qs/LICENSE.md create mode 100644 server/node_modules/qs/README.md create mode 100644 server/node_modules/qs/dist/qs.js create mode 100644 server/node_modules/qs/lib/formats.js create mode 100644 server/node_modules/qs/lib/index.js create mode 100644 server/node_modules/qs/lib/parse.js create mode 100644 server/node_modules/qs/lib/stringify.js create mode 100644 server/node_modules/qs/lib/utils.js create mode 100644 server/node_modules/qs/package.json create mode 100644 server/node_modules/qs/test/empty-keys-cases.js create mode 100644 server/node_modules/qs/test/parse.js create mode 100644 server/node_modules/qs/test/stringify.js create mode 100644 server/node_modules/qs/test/utils.js create mode 100644 server/node_modules/range-parser/HISTORY.md create mode 100644 server/node_modules/range-parser/LICENSE create mode 100644 server/node_modules/range-parser/README.md create mode 100644 server/node_modules/range-parser/index.js create mode 100644 server/node_modules/range-parser/package.json create mode 100644 server/node_modules/raw-body/HISTORY.md create mode 100644 server/node_modules/raw-body/LICENSE create mode 100644 server/node_modules/raw-body/README.md create mode 100644 server/node_modules/raw-body/SECURITY.md create mode 100644 server/node_modules/raw-body/index.d.ts create mode 100644 server/node_modules/raw-body/index.js create mode 100644 server/node_modules/raw-body/package.json create mode 100644 server/node_modules/safe-buffer/LICENSE create mode 100644 server/node_modules/safe-buffer/README.md create mode 100644 server/node_modules/safe-buffer/index.d.ts create mode 100644 server/node_modules/safe-buffer/index.js create mode 100644 server/node_modules/safe-buffer/package.json create mode 100644 server/node_modules/safer-buffer/LICENSE create mode 100644 server/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 server/node_modules/safer-buffer/Readme.md create mode 100644 server/node_modules/safer-buffer/dangerous.js create mode 100644 server/node_modules/safer-buffer/package.json create mode 100644 server/node_modules/safer-buffer/safer.js create mode 100644 server/node_modules/safer-buffer/tests.js create mode 100644 server/node_modules/send/HISTORY.md create mode 100644 server/node_modules/send/LICENSE create mode 100644 server/node_modules/send/README.md create mode 100644 server/node_modules/send/SECURITY.md create mode 100644 server/node_modules/send/index.js create mode 100644 server/node_modules/send/node_modules/encodeurl/HISTORY.md create mode 100644 server/node_modules/send/node_modules/encodeurl/LICENSE create mode 100644 server/node_modules/send/node_modules/encodeurl/README.md create mode 100644 server/node_modules/send/node_modules/encodeurl/index.js create mode 100644 server/node_modules/send/node_modules/encodeurl/package.json create mode 100644 server/node_modules/send/node_modules/ms/index.js create mode 100644 server/node_modules/send/node_modules/ms/license.md create mode 100644 server/node_modules/send/node_modules/ms/package.json create mode 100644 server/node_modules/send/node_modules/ms/readme.md create mode 100644 server/node_modules/send/package.json create mode 100644 server/node_modules/serialport/LICENSE create mode 100644 server/node_modules/serialport/README.md create mode 100644 server/node_modules/serialport/dist/index.d.ts create mode 100644 server/node_modules/serialport/dist/index.js create mode 100644 server/node_modules/serialport/dist/serialport-mock.d.ts create mode 100644 server/node_modules/serialport/dist/serialport-mock.js create mode 100644 server/node_modules/serialport/dist/serialport.d.ts create mode 100644 server/node_modules/serialport/dist/serialport.js create mode 100644 server/node_modules/serialport/node_modules/debug/LICENSE create mode 100644 server/node_modules/serialport/node_modules/debug/README.md create mode 100644 server/node_modules/serialport/node_modules/debug/package.json create mode 100644 server/node_modules/serialport/node_modules/debug/src/browser.js create mode 100644 server/node_modules/serialport/node_modules/debug/src/common.js create mode 100644 server/node_modules/serialport/node_modules/debug/src/index.js create mode 100644 server/node_modules/serialport/node_modules/debug/src/node.js create mode 100644 server/node_modules/serialport/node_modules/ms/index.js create mode 100644 server/node_modules/serialport/node_modules/ms/license.md create mode 100644 server/node_modules/serialport/node_modules/ms/package.json create mode 100644 server/node_modules/serialport/node_modules/ms/readme.md create mode 100644 server/node_modules/serialport/package.json create mode 100644 server/node_modules/serve-static/HISTORY.md create mode 100644 server/node_modules/serve-static/LICENSE create mode 100644 server/node_modules/serve-static/README.md create mode 100644 server/node_modules/serve-static/index.js create mode 100644 server/node_modules/serve-static/package.json create mode 100644 server/node_modules/set-function-length/.eslintrc create mode 100644 server/node_modules/set-function-length/.github/FUNDING.yml create mode 100644 server/node_modules/set-function-length/.nycrc create mode 100644 server/node_modules/set-function-length/CHANGELOG.md create mode 100644 server/node_modules/set-function-length/LICENSE create mode 100644 server/node_modules/set-function-length/README.md create mode 100644 server/node_modules/set-function-length/env.d.ts create mode 100644 server/node_modules/set-function-length/env.js create mode 100644 server/node_modules/set-function-length/index.d.ts create mode 100644 server/node_modules/set-function-length/index.js create mode 100644 server/node_modules/set-function-length/package.json create mode 100644 server/node_modules/set-function-length/tsconfig.json create mode 100644 server/node_modules/setprototypeof/LICENSE create mode 100644 server/node_modules/setprototypeof/README.md create mode 100644 server/node_modules/setprototypeof/index.d.ts create mode 100644 server/node_modules/setprototypeof/index.js create mode 100644 server/node_modules/setprototypeof/package.json create mode 100644 server/node_modules/setprototypeof/test/index.js create mode 100644 server/node_modules/side-channel/.editorconfig create mode 100644 server/node_modules/side-channel/.eslintrc create mode 100644 server/node_modules/side-channel/.github/FUNDING.yml create mode 100644 server/node_modules/side-channel/.nycrc create mode 100644 server/node_modules/side-channel/CHANGELOG.md create mode 100644 server/node_modules/side-channel/LICENSE create mode 100644 server/node_modules/side-channel/README.md create mode 100644 server/node_modules/side-channel/index.d.ts create mode 100644 server/node_modules/side-channel/index.js create mode 100644 server/node_modules/side-channel/package.json create mode 100644 server/node_modules/side-channel/test/index.js create mode 100644 server/node_modules/side-channel/tsconfig.json create mode 100644 server/node_modules/socket.io-adapter/LICENSE create mode 100644 server/node_modules/socket.io-adapter/Readme.md create mode 100644 server/node_modules/socket.io-adapter/dist/cluster-adapter.d.ts create mode 100644 server/node_modules/socket.io-adapter/dist/cluster-adapter.js create mode 100644 server/node_modules/socket.io-adapter/dist/contrib/yeast.d.ts create mode 100644 server/node_modules/socket.io-adapter/dist/contrib/yeast.js create mode 100644 server/node_modules/socket.io-adapter/dist/in-memory-adapter.d.ts create mode 100644 server/node_modules/socket.io-adapter/dist/in-memory-adapter.js create mode 100644 server/node_modules/socket.io-adapter/dist/index.d.ts create mode 100644 server/node_modules/socket.io-adapter/dist/index.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/LICENSE create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/README.md create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/package.json create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/src/browser.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/src/common.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/src/index.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/debug/src/node.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/ms/index.js create mode 100644 server/node_modules/socket.io-adapter/node_modules/ms/license.md create mode 100644 server/node_modules/socket.io-adapter/node_modules/ms/package.json create mode 100644 server/node_modules/socket.io-adapter/node_modules/ms/readme.md create mode 100644 server/node_modules/socket.io-adapter/package.json create mode 100644 server/node_modules/socket.io-parser/LICENSE create mode 100644 server/node_modules/socket.io-parser/Readme.md create mode 100644 server/node_modules/socket.io-parser/build/cjs/binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/cjs/binary.js create mode 100644 server/node_modules/socket.io-parser/build/cjs/index.d.ts create mode 100644 server/node_modules/socket.io-parser/build/cjs/index.js create mode 100644 server/node_modules/socket.io-parser/build/cjs/is-binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/cjs/is-binary.js create mode 100644 server/node_modules/socket.io-parser/build/cjs/package.json create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/binary.js create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/index.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/index.js create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/is-binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/is-binary.js create mode 100644 server/node_modules/socket.io-parser/build/esm-debug/package.json create mode 100644 server/node_modules/socket.io-parser/build/esm/binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm/binary.js create mode 100644 server/node_modules/socket.io-parser/build/esm/index.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm/index.js create mode 100644 server/node_modules/socket.io-parser/build/esm/is-binary.d.ts create mode 100644 server/node_modules/socket.io-parser/build/esm/is-binary.js create mode 100644 server/node_modules/socket.io-parser/build/esm/package.json create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/LICENSE create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/README.md create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/package.json create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/src/browser.js create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/src/common.js create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/src/index.js create mode 100644 server/node_modules/socket.io-parser/node_modules/debug/src/node.js create mode 100644 server/node_modules/socket.io-parser/node_modules/ms/index.js create mode 100644 server/node_modules/socket.io-parser/node_modules/ms/license.md create mode 100644 server/node_modules/socket.io-parser/node_modules/ms/package.json create mode 100644 server/node_modules/socket.io-parser/node_modules/ms/readme.md create mode 100644 server/node_modules/socket.io-parser/package.json create mode 100644 server/node_modules/socket.io/LICENSE create mode 100644 server/node_modules/socket.io/Readme.md create mode 100644 server/node_modules/socket.io/client-dist/socket.io.esm.min.js create mode 100644 server/node_modules/socket.io/client-dist/socket.io.esm.min.js.map create mode 100644 server/node_modules/socket.io/client-dist/socket.io.js create mode 100644 server/node_modules/socket.io/client-dist/socket.io.js.map create mode 100644 server/node_modules/socket.io/client-dist/socket.io.min.js create mode 100644 server/node_modules/socket.io/client-dist/socket.io.min.js.map create mode 100644 server/node_modules/socket.io/client-dist/socket.io.msgpack.min.js create mode 100644 server/node_modules/socket.io/client-dist/socket.io.msgpack.min.js.map create mode 100644 server/node_modules/socket.io/dist/broadcast-operator.d.ts create mode 100644 server/node_modules/socket.io/dist/broadcast-operator.js create mode 100644 server/node_modules/socket.io/dist/client.d.ts create mode 100644 server/node_modules/socket.io/dist/client.js create mode 100644 server/node_modules/socket.io/dist/index.d.ts create mode 100644 server/node_modules/socket.io/dist/index.js create mode 100644 server/node_modules/socket.io/dist/namespace.d.ts create mode 100644 server/node_modules/socket.io/dist/namespace.js create mode 100644 server/node_modules/socket.io/dist/parent-namespace.d.ts create mode 100644 server/node_modules/socket.io/dist/parent-namespace.js create mode 100644 server/node_modules/socket.io/dist/socket-types.d.ts create mode 100644 server/node_modules/socket.io/dist/socket-types.js create mode 100644 server/node_modules/socket.io/dist/socket.d.ts create mode 100644 server/node_modules/socket.io/dist/socket.js create mode 100644 server/node_modules/socket.io/dist/typed-events.d.ts create mode 100644 server/node_modules/socket.io/dist/typed-events.js create mode 100644 server/node_modules/socket.io/dist/uws.d.ts create mode 100644 server/node_modules/socket.io/dist/uws.js create mode 100644 server/node_modules/socket.io/node_modules/debug/LICENSE create mode 100644 server/node_modules/socket.io/node_modules/debug/README.md create mode 100644 server/node_modules/socket.io/node_modules/debug/package.json create mode 100644 server/node_modules/socket.io/node_modules/debug/src/browser.js create mode 100644 server/node_modules/socket.io/node_modules/debug/src/common.js create mode 100644 server/node_modules/socket.io/node_modules/debug/src/index.js create mode 100644 server/node_modules/socket.io/node_modules/debug/src/node.js create mode 100644 server/node_modules/socket.io/node_modules/ms/index.js create mode 100644 server/node_modules/socket.io/node_modules/ms/license.md create mode 100644 server/node_modules/socket.io/node_modules/ms/package.json create mode 100644 server/node_modules/socket.io/node_modules/ms/readme.md create mode 100644 server/node_modules/socket.io/package.json create mode 100644 server/node_modules/socket.io/wrapper.mjs create mode 100644 server/node_modules/statuses/HISTORY.md create mode 100644 server/node_modules/statuses/LICENSE create mode 100644 server/node_modules/statuses/README.md create mode 100644 server/node_modules/statuses/codes.json create mode 100644 server/node_modules/statuses/index.js create mode 100644 server/node_modules/statuses/package.json create mode 100644 server/node_modules/toidentifier/HISTORY.md create mode 100644 server/node_modules/toidentifier/LICENSE create mode 100644 server/node_modules/toidentifier/README.md create mode 100644 server/node_modules/toidentifier/index.js create mode 100644 server/node_modules/toidentifier/package.json create mode 100644 server/node_modules/type-is/HISTORY.md create mode 100644 server/node_modules/type-is/LICENSE create mode 100644 server/node_modules/type-is/README.md create mode 100644 server/node_modules/type-is/index.js create mode 100644 server/node_modules/type-is/package.json create mode 100644 server/node_modules/undici-types/LICENSE create mode 100644 server/node_modules/undici-types/README.md create mode 100644 server/node_modules/undici-types/agent.d.ts create mode 100644 server/node_modules/undici-types/api.d.ts create mode 100644 server/node_modules/undici-types/balanced-pool.d.ts create mode 100644 server/node_modules/undici-types/cache.d.ts create mode 100644 server/node_modules/undici-types/client.d.ts create mode 100644 server/node_modules/undici-types/connector.d.ts create mode 100644 server/node_modules/undici-types/content-type.d.ts create mode 100644 server/node_modules/undici-types/cookies.d.ts create mode 100644 server/node_modules/undici-types/diagnostics-channel.d.ts create mode 100644 server/node_modules/undici-types/dispatcher.d.ts create mode 100644 server/node_modules/undici-types/env-http-proxy-agent.d.ts create mode 100644 server/node_modules/undici-types/errors.d.ts create mode 100644 server/node_modules/undici-types/eventsource.d.ts create mode 100644 server/node_modules/undici-types/fetch.d.ts create mode 100644 server/node_modules/undici-types/file.d.ts create mode 100644 server/node_modules/undici-types/filereader.d.ts create mode 100644 server/node_modules/undici-types/formdata.d.ts create mode 100644 server/node_modules/undici-types/global-dispatcher.d.ts create mode 100644 server/node_modules/undici-types/global-origin.d.ts create mode 100644 server/node_modules/undici-types/handlers.d.ts create mode 100644 server/node_modules/undici-types/header.d.ts create mode 100644 server/node_modules/undici-types/index.d.ts create mode 100644 server/node_modules/undici-types/interceptors.d.ts create mode 100644 server/node_modules/undici-types/mock-agent.d.ts create mode 100644 server/node_modules/undici-types/mock-client.d.ts create mode 100644 server/node_modules/undici-types/mock-errors.d.ts create mode 100644 server/node_modules/undici-types/mock-interceptor.d.ts create mode 100644 server/node_modules/undici-types/mock-pool.d.ts create mode 100644 server/node_modules/undici-types/package.json create mode 100644 server/node_modules/undici-types/patch.d.ts create mode 100644 server/node_modules/undici-types/pool-stats.d.ts create mode 100644 server/node_modules/undici-types/pool.d.ts create mode 100644 server/node_modules/undici-types/proxy-agent.d.ts create mode 100644 server/node_modules/undici-types/readable.d.ts create mode 100644 server/node_modules/undici-types/retry-agent.d.ts create mode 100644 server/node_modules/undici-types/retry-handler.d.ts create mode 100644 server/node_modules/undici-types/util.d.ts create mode 100644 server/node_modules/undici-types/webidl.d.ts create mode 100644 server/node_modules/undici-types/websocket.d.ts create mode 100644 server/node_modules/unpipe/HISTORY.md create mode 100644 server/node_modules/unpipe/LICENSE create mode 100644 server/node_modules/unpipe/README.md create mode 100644 server/node_modules/unpipe/index.js create mode 100644 server/node_modules/unpipe/package.json create mode 100644 server/node_modules/utils-merge/.npmignore create mode 100644 server/node_modules/utils-merge/LICENSE create mode 100644 server/node_modules/utils-merge/README.md create mode 100644 server/node_modules/utils-merge/index.js create mode 100644 server/node_modules/utils-merge/package.json create mode 100644 server/node_modules/vary/HISTORY.md create mode 100644 server/node_modules/vary/LICENSE create mode 100644 server/node_modules/vary/README.md create mode 100644 server/node_modules/vary/index.js create mode 100644 server/node_modules/vary/package.json create mode 100644 server/node_modules/ws/LICENSE create mode 100644 server/node_modules/ws/README.md create mode 100644 server/node_modules/ws/browser.js create mode 100644 server/node_modules/ws/index.js create mode 100644 server/node_modules/ws/lib/buffer-util.js create mode 100644 server/node_modules/ws/lib/constants.js create mode 100644 server/node_modules/ws/lib/event-target.js create mode 100644 server/node_modules/ws/lib/extension.js create mode 100644 server/node_modules/ws/lib/limiter.js create mode 100644 server/node_modules/ws/lib/permessage-deflate.js create mode 100644 server/node_modules/ws/lib/receiver.js create mode 100644 server/node_modules/ws/lib/sender.js create mode 100644 server/node_modules/ws/lib/stream.js create mode 100644 server/node_modules/ws/lib/subprotocol.js create mode 100644 server/node_modules/ws/lib/validation.js create mode 100644 server/node_modules/ws/lib/websocket-server.js create mode 100644 server/node_modules/ws/lib/websocket.js create mode 100644 server/node_modules/ws/package.json create mode 100644 server/node_modules/ws/wrapper.mjs create mode 100644 server/package-lock.json create mode 100644 server/package.json create mode 100644 server/serial.js create mode 100644 server/server.js diff --git a/README.md b/README.md index 58beeac..cfdad76 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,19 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in your browser. - -The page will reload when you make changes.\ -You may also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can't go back!** - -If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. - -You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) - -### Analyzing the Bundle Size - -This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) - -### Making a Progressive Web App - -This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) - -### Advanced Configuration - -This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) - -### Deployment - -This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) - -### `npm run build` fails to minify - -This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) +src/ +│ +├── components/ +│ ├── App.js +│ ├── Piano.js +│ ├── Note.js +│ ├── Header.js +│ ├── GameOverScreen.js +│ ├── LevelSelector.js +│ └── Line.js +│ +├── styles/ +│ ├── App.css +│ └── Piano.css +│ +├── utils/ +│ └── socket.js +│ +└── index.js diff --git a/package-lock.json b/package-lock.json index 4292a3b..478e3bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", + "serialport": "^12.0.0", + "socket.io-client": "^4.8.0", "web-vitals": "^2.1.4" } }, @@ -3380,6 +3382,237 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==" }, + "node_modules/@serialport/binding-mock": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + "dependencies": { + "@serialport/bindings-interface": "^1.2.1", + "debug": "^4.3.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@serialport/bindings-cpp": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-12.0.1.tgz", + "integrity": "sha512-r2XOwY2dDvbW7dKqSPIk2gzsr6M6Qpe9+/Ngs94fNaNlcTRCV02PfaoDmRgcubpNVVcLATlxSxPTIDw12dbKOg==", + "hasInstallScript": true, + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "@serialport/parser-readline": "11.0.0", + "debug": "4.3.4", + "node-addon-api": "7.0.0", + "node-gyp-build": "4.6.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + "dependencies": { + "@serialport/parser-delimiter": "11.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@serialport/bindings-interface": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==", + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/@serialport/parser-byte-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-12.0.0.tgz", + "integrity": "sha512-0ei0txFAj+s6FTiCJFBJ1T2hpKkX8Md0Pu6dqMrYoirjPskDLJRgZGLqoy3/lnU1bkvHpnJO+9oJ3PB9v8rNlg==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-cctalk": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-12.0.0.tgz", + "integrity": "sha512-0PfLzO9t2X5ufKuBO34DQKLXrCCqS9xz2D0pfuaLNeTkyGUBv426zxoMf3rsMRodDOZNbFblu3Ae84MOQXjnZw==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-delimiter": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-inter-byte-timeout": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-12.0.0.tgz", + "integrity": "sha512-GnCh8K0NAESfhCuXAt+FfBRz1Cf9CzIgXfp7SdMgXwrtuUnCC/yuRTUFWRvuzhYKoAo1TL0hhUo77SFHUH1T/w==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-packet-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-12.0.0.tgz", + "integrity": "sha512-p1hiCRqvGHHLCN/8ZiPUY/G0zrxd7gtZs251n+cfNTn+87rwcdUeu9Dps3Aadx30/sOGGFL6brIRGK4l/t7MuQ==", + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@serialport/parser-readline": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + "dependencies": { + "@serialport/parser-delimiter": "12.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-ready": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-12.0.0.tgz", + "integrity": "sha512-ygDwj3O4SDpZlbrRUraoXIoIqb8sM7aMKryGjYTIF0JRnKeB1ys8+wIp0RFMdFbO62YriUDextHB5Um5cKFSWg==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-regex": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-12.0.0.tgz", + "integrity": "sha512-dCAVh4P/pZrLcPv9NJ2mvPRBg64L5jXuiRxIlyxxdZGH4WubwXVXY/kBTihQmiAMPxbT3yshSX8f2+feqWsxqA==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-slip-encoder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-12.0.0.tgz", + "integrity": "sha512-0APxDGR9YvJXTRfY+uRGhzOhTpU5akSH183RUcwzN7QXh8/1jwFsFLCu0grmAUfi+fItCkR+Xr1TcNJLR13VNA==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-spacepacket": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-12.0.0.tgz", + "integrity": "sha512-dozONxhPC/78pntuxpz/NOtVps8qIc/UZzdc/LuPvVsqCoJXiRxOg6ZtCP/W58iibJDKPZPAWPGYeZt9DJxI+Q==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-12.0.0.tgz", + "integrity": "sha512-9On64rhzuqKdOQyiYLYv2lQOh3TZU/D3+IWCR5gk0alPel2nwpp4YwDEGiUBfrQZEdQ6xww0PWkzqth4wqwX3Q==", + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "debug": "4.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/stream/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/@sinclair/typebox": { "version": "0.24.51", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", @@ -3401,6 +3634,11 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -7188,6 +7426,46 @@ "node": ">= 0.8" } }, + "node_modules/engine.io-client": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", + "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -12726,6 +13004,11 @@ "tslib": "^2.0.3" } }, + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -12734,6 +13017,16 @@ "node": ">= 6.13.0" } }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -15723,6 +16016,54 @@ "randombytes": "^2.1.0" } }, + "node_modules/serialport": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialport/-/serialport-12.0.0.tgz", + "integrity": "sha512-AmH3D9hHPFmnF/oq/rvigfiAouAKyK/TjnrkwZRYSFZxNggJxwvbAbfYrLeuvq7ktUdhuHdVdSjj852Z55R+uA==", + "dependencies": { + "@serialport/binding-mock": "10.2.2", + "@serialport/bindings-cpp": "12.0.1", + "@serialport/parser-byte-length": "12.0.0", + "@serialport/parser-cctalk": "12.0.0", + "@serialport/parser-delimiter": "12.0.0", + "@serialport/parser-inter-byte-timeout": "12.0.0", + "@serialport/parser-packet-length": "12.0.0", + "@serialport/parser-readline": "12.0.0", + "@serialport/parser-ready": "12.0.0", + "@serialport/parser-regex": "12.0.0", + "@serialport/parser-slip-encoder": "12.0.0", + "@serialport/parser-spacepacket": "12.0.0", + "@serialport/stream": "12.0.0", + "debug": "4.3.4" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/serialport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/serialport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -15904,6 +16245,32 @@ "node": ">=8" } }, + "node_modules/socket.io-client": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", + "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -18198,6 +18565,14 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", + "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 6ecb325..94e9380 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", + "serialport": "^12.0.0", + "socket.io-client": "^4.8.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/server/node_modules/.bin/mime b/server/node_modules/.bin/mime new file mode 100644 index 0000000..7751de3 --- /dev/null +++ b/server/node_modules/.bin/mime @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mime/cli.js" "$@" +else + exec node "$basedir/../mime/cli.js" "$@" +fi diff --git a/server/node_modules/.bin/mime.cmd b/server/node_modules/.bin/mime.cmd new file mode 100644 index 0000000..54491f1 --- /dev/null +++ b/server/node_modules/.bin/mime.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/server/node_modules/.bin/mime.ps1 b/server/node_modules/.bin/mime.ps1 new file mode 100644 index 0000000..2222f40 --- /dev/null +++ b/server/node_modules/.bin/mime.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mime/cli.js" $args + } else { + & "node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/server/node_modules/.bin/node-gyp-build b/server/node_modules/.bin/node-gyp-build new file mode 100644 index 0000000..b804ba9 --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../node-gyp-build/bin.js" "$@" +else + exec node "$basedir/../node-gyp-build/bin.js" "$@" +fi diff --git a/server/node_modules/.bin/node-gyp-build-optional b/server/node_modules/.bin/node-gyp-build-optional new file mode 100644 index 0000000..cb670aa --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-optional @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../node-gyp-build/optional.js" "$@" +else + exec node "$basedir/../node-gyp-build/optional.js" "$@" +fi diff --git a/server/node_modules/.bin/node-gyp-build-optional.cmd b/server/node_modules/.bin/node-gyp-build-optional.cmd new file mode 100644 index 0000000..74d85f2 --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-optional.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\node-gyp-build\optional.js" %* diff --git a/server/node_modules/.bin/node-gyp-build-optional.ps1 b/server/node_modules/.bin/node-gyp-build-optional.ps1 new file mode 100644 index 0000000..45995c3 --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-optional.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../node-gyp-build/optional.js" $args + } else { + & "$basedir/node$exe" "$basedir/../node-gyp-build/optional.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../node-gyp-build/optional.js" $args + } else { + & "node$exe" "$basedir/../node-gyp-build/optional.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/server/node_modules/.bin/node-gyp-build-test b/server/node_modules/.bin/node-gyp-build-test new file mode 100644 index 0000000..bdf6dca --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-test @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../node-gyp-build/build-test.js" "$@" +else + exec node "$basedir/../node-gyp-build/build-test.js" "$@" +fi diff --git a/server/node_modules/.bin/node-gyp-build-test.cmd b/server/node_modules/.bin/node-gyp-build-test.cmd new file mode 100644 index 0000000..182a757 --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-test.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\node-gyp-build\build-test.js" %* diff --git a/server/node_modules/.bin/node-gyp-build-test.ps1 b/server/node_modules/.bin/node-gyp-build-test.ps1 new file mode 100644 index 0000000..6cb0b9b --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build-test.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../node-gyp-build/build-test.js" $args + } else { + & "$basedir/node$exe" "$basedir/../node-gyp-build/build-test.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../node-gyp-build/build-test.js" $args + } else { + & "node$exe" "$basedir/../node-gyp-build/build-test.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/server/node_modules/.bin/node-gyp-build.cmd b/server/node_modules/.bin/node-gyp-build.cmd new file mode 100644 index 0000000..ac854a6 --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\node-gyp-build\bin.js" %* diff --git a/server/node_modules/.bin/node-gyp-build.ps1 b/server/node_modules/.bin/node-gyp-build.ps1 new file mode 100644 index 0000000..c1f9a9a --- /dev/null +++ b/server/node_modules/.bin/node-gyp-build.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../node-gyp-build/bin.js" $args + } else { + & "$basedir/node$exe" "$basedir/../node-gyp-build/bin.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../node-gyp-build/bin.js" $args + } else { + & "node$exe" "$basedir/../node-gyp-build/bin.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/server/node_modules/.package-lock.json b/server/node_modules/.package-lock.json new file mode 100644 index 0000000..ed19bc6 --- /dev/null +++ b/server/node_modules/.package-lock.json @@ -0,0 +1,1252 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@serialport/binding-mock": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + "dependencies": { + "@serialport/bindings-interface": "^1.2.1", + "debug": "^4.3.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@serialport/binding-mock/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/binding-mock/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==" + }, + "node_modules/@serialport/bindings-cpp": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-12.0.1.tgz", + "integrity": "sha512-r2XOwY2dDvbW7dKqSPIk2gzsr6M6Qpe9+/Ngs94fNaNlcTRCV02PfaoDmRgcubpNVVcLATlxSxPTIDw12dbKOg==", + "hasInstallScript": true, + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "@serialport/parser-readline": "11.0.0", + "debug": "4.3.4", + "node-addon-api": "7.0.0", + "node-gyp-build": "4.6.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + "dependencies": { + "@serialport/parser-delimiter": "11.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@serialport/bindings-interface": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==", + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/@serialport/parser-byte-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-12.0.0.tgz", + "integrity": "sha512-0ei0txFAj+s6FTiCJFBJ1T2hpKkX8Md0Pu6dqMrYoirjPskDLJRgZGLqoy3/lnU1bkvHpnJO+9oJ3PB9v8rNlg==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-cctalk": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-12.0.0.tgz", + "integrity": "sha512-0PfLzO9t2X5ufKuBO34DQKLXrCCqS9xz2D0pfuaLNeTkyGUBv426zxoMf3rsMRodDOZNbFblu3Ae84MOQXjnZw==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-delimiter": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-inter-byte-timeout": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-12.0.0.tgz", + "integrity": "sha512-GnCh8K0NAESfhCuXAt+FfBRz1Cf9CzIgXfp7SdMgXwrtuUnCC/yuRTUFWRvuzhYKoAo1TL0hhUo77SFHUH1T/w==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-packet-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-12.0.0.tgz", + "integrity": "sha512-p1hiCRqvGHHLCN/8ZiPUY/G0zrxd7gtZs251n+cfNTn+87rwcdUeu9Dps3Aadx30/sOGGFL6brIRGK4l/t7MuQ==", + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@serialport/parser-readline": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + "dependencies": { + "@serialport/parser-delimiter": "12.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-ready": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-12.0.0.tgz", + "integrity": "sha512-ygDwj3O4SDpZlbrRUraoXIoIqb8sM7aMKryGjYTIF0JRnKeB1ys8+wIp0RFMdFbO62YriUDextHB5Um5cKFSWg==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-regex": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-12.0.0.tgz", + "integrity": "sha512-dCAVh4P/pZrLcPv9NJ2mvPRBg64L5jXuiRxIlyxxdZGH4WubwXVXY/kBTihQmiAMPxbT3yshSX8f2+feqWsxqA==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-slip-encoder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-12.0.0.tgz", + "integrity": "sha512-0APxDGR9YvJXTRfY+uRGhzOhTpU5akSH183RUcwzN7QXh8/1jwFsFLCu0grmAUfi+fItCkR+Xr1TcNJLR13VNA==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-spacepacket": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-12.0.0.tgz", + "integrity": "sha512-dozONxhPC/78pntuxpz/NOtVps8qIc/UZzdc/LuPvVsqCoJXiRxOg6ZtCP/W58iibJDKPZPAWPGYeZt9DJxI+Q==", + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-12.0.0.tgz", + "integrity": "sha512-9On64rhzuqKdOQyiYLYv2lQOh3TZU/D3+IWCR5gk0alPel2nwpp4YwDEGiUBfrQZEdQ6xww0PWkzqth4wqwX3Q==", + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "debug": "4.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/stream/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.7.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.6.tgz", + "integrity": "sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "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==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "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==", + "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/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "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==", + "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==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "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/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "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==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@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" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/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==" + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "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==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "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.10", + "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" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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==", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + }, + "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==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "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/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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "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==", + "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==" + }, + "node_modules/serialport": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialport/-/serialport-12.0.0.tgz", + "integrity": "sha512-AmH3D9hHPFmnF/oq/rvigfiAouAKyK/TjnrkwZRYSFZxNggJxwvbAbfYrLeuvq7ktUdhuHdVdSjj852Z55R+uA==", + "dependencies": { + "@serialport/binding-mock": "10.2.2", + "@serialport/bindings-cpp": "12.0.1", + "@serialport/parser-byte-length": "12.0.0", + "@serialport/parser-cctalk": "12.0.0", + "@serialport/parser-delimiter": "12.0.0", + "@serialport/parser-inter-byte-timeout": "12.0.0", + "@serialport/parser-packet-length": "12.0.0", + "@serialport/parser-readline": "12.0.0", + "@serialport/parser-ready": "12.0.0", + "@serialport/parser-regex": "12.0.0", + "@serialport/parser-slip-encoder": "12.0.0", + "@serialport/parser-spacepacket": "12.0.0", + "@serialport/stream": "12.0.0", + "debug": "4.3.4" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/serialport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/serialport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "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==", + "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==", + "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/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/socket.io": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", + "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" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/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==" + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/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==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "engines": { + "node": ">=0.6" + } + }, + "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==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "engines": { + "node": ">= 0.4.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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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 + } + } + } + } +} diff --git a/server/node_modules/@serialport/binding-mock/.releaserc b/server/node_modules/@serialport/binding-mock/.releaserc new file mode 100644 index 0000000..fa2d899 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/.releaserc @@ -0,0 +1,6 @@ +{ + "branches": [ + "main", + "next" + ] +} diff --git a/server/node_modules/@serialport/binding-mock/LICENSE b/server/node_modules/@serialport/binding-mock/LICENSE new file mode 100644 index 0000000..c48c4ac --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Francis Gulotta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/server/node_modules/@serialport/binding-mock/README.md b/server/node_modules/@serialport/binding-mock/README.md new file mode 100644 index 0000000..8b63f66 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/README.md @@ -0,0 +1,9 @@ +# @serialport/binding-mock + +```ts +import { MockBinding } from '@serialport/binding-mock' +const MockBinding = new MockBinding() + +MockBinding.createPort('/dev/fakePort', { echo: true }) +await MockBinding.write(Buffer.from('data'))) +``` diff --git a/server/node_modules/@serialport/binding-mock/dist/index-esm.mjs b/server/node_modules/@serialport/binding-mock/dist/index-esm.mjs new file mode 100644 index 0000000..27f2301 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/dist/index-esm.mjs @@ -0,0 +1,271 @@ +import debugFactory from 'debug'; + +const debug = debugFactory('serialport/binding-mock'); +let ports = {}; +let serialNumber = 0; +function resolveNextTick() { + return new Promise(resolve => process.nextTick(() => resolve())); +} +class CanceledError extends Error { + constructor(message) { + super(message); + this.canceled = true; + } +} +const MockBinding = { + reset() { + ports = {}; + serialNumber = 0; + }, + // Create a mock port + createPort(path, options = {}) { + serialNumber++; + const optWithDefaults = Object.assign({ echo: false, record: false, manufacturer: 'The J5 Robotics Company', vendorId: undefined, productId: undefined, maxReadSize: 1024 }, options); + ports[path] = { + data: Buffer.alloc(0), + echo: optWithDefaults.echo, + record: optWithDefaults.record, + readyData: optWithDefaults.readyData, + maxReadSize: optWithDefaults.maxReadSize, + info: { + path, + manufacturer: optWithDefaults.manufacturer, + serialNumber: `${serialNumber}`, + pnpId: undefined, + locationId: undefined, + vendorId: optWithDefaults.vendorId, + productId: optWithDefaults.productId, + }, + }; + debug(serialNumber, 'created port', JSON.stringify({ path, opt: options })); + }, + async list() { + debug(null, 'list'); + return Object.values(ports).map(port => port.info); + }, + async open(options) { + var _a; + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + if (!options.path) { + throw new TypeError('"path" is not a valid port'); + } + if (!options.baudRate) { + throw new TypeError('"baudRate" is not a valid baudRate'); + } + const openOptions = Object.assign({ dataBits: 8, lock: true, stopBits: 1, parity: 'none', rtscts: false, xon: false, xoff: false, xany: false, hupcl: true }, options); + const { path } = openOptions; + debug(null, `open: opening path ${path}`); + const port = ports[path]; + await resolveNextTick(); + if (!port) { + throw new Error(`Port does not exist - please call MockBinding.createPort('${path}') first`); + } + const serialNumber = port.info.serialNumber; + if ((_a = port.openOpt) === null || _a === void 0 ? void 0 : _a.lock) { + debug(serialNumber, 'open: Port is locked cannot open'); + throw new Error('Port is locked cannot open'); + } + debug(serialNumber, `open: opened path ${path}`); + port.openOpt = Object.assign({}, openOptions); + return new MockPortBinding(port, openOptions); + }, +}; +/** + * Mock bindings for pretend serialport access + */ +class MockPortBinding { + constructor(port, openOptions) { + this.port = port; + this.openOptions = openOptions; + this.pendingRead = null; + this.isOpen = true; + this.lastWrite = null; + this.recording = Buffer.alloc(0); + this.writeOperation = null; // in flight promise or null + this.serialNumber = port.info.serialNumber; + if (port.readyData) { + const data = port.readyData; + process.nextTick(() => { + if (this.isOpen) { + debug(this.serialNumber, 'emitting ready data'); + this.emitData(data); + } + }); + } + } + // Emit data on a mock port + emitData(data) { + if (!this.isOpen || !this.port) { + throw new Error('Port must be open to pretend to receive data'); + } + const bufferData = Buffer.isBuffer(data) ? data : Buffer.from(data); + debug(this.serialNumber, 'emitting data - pending read:', Boolean(this.pendingRead)); + this.port.data = Buffer.concat([this.port.data, bufferData]); + if (this.pendingRead) { + process.nextTick(this.pendingRead); + this.pendingRead = null; + } + } + async close() { + debug(this.serialNumber, 'close'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + const port = this.port; + if (!port) { + throw new Error('already closed'); + } + port.openOpt = undefined; + // reset data on close + port.data = Buffer.alloc(0); + debug(this.serialNumber, 'port is closed'); + this.serialNumber = undefined; + this.isOpen = false; + if (this.pendingRead) { + this.pendingRead(new CanceledError('port is closed')); + } + } + async read(buffer, offset, length) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (typeof offset !== 'number' || isNaN(offset)) { + throw new TypeError(`"offset" is not an integer got "${isNaN(offset) ? 'NaN' : typeof offset}"`); + } + if (typeof length !== 'number' || isNaN(length)) { + throw new TypeError(`"length" is not an integer got "${isNaN(length) ? 'NaN' : typeof length}"`); + } + if (buffer.length < offset + length) { + throw new Error('buffer is too small'); + } + if (!this.isOpen) { + throw new Error('Port is not open'); + } + debug(this.serialNumber, 'read', length, 'bytes'); + await resolveNextTick(); + if (!this.isOpen || !this.port) { + throw new CanceledError('Read canceled'); + } + if (this.port.data.length <= 0) { + return new Promise((resolve, reject) => { + this.pendingRead = err => { + if (err) { + return reject(err); + } + this.read(buffer, offset, length).then(resolve, reject); + }; + }); + } + const lengthToRead = this.port.maxReadSize > length ? length : this.port.maxReadSize; + const data = this.port.data.slice(0, lengthToRead); + const bytesRead = data.copy(buffer, offset); + this.port.data = this.port.data.slice(lengthToRead); + debug(this.serialNumber, 'read', bytesRead, 'bytes'); + return { bytesRead, buffer }; + } + async write(buffer) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (!this.isOpen || !this.port) { + debug('write', 'error port is not open'); + throw new Error('Port is not open'); + } + debug(this.serialNumber, 'write', buffer.length, 'bytes'); + if (this.writeOperation) { + throw new Error('Overlapping writes are not supported and should be queued by the serialport object'); + } + this.writeOperation = (async () => { + await resolveNextTick(); + if (!this.isOpen || !this.port) { + throw new Error('Write canceled'); + } + const data = (this.lastWrite = Buffer.from(buffer)); // copy + if (this.port.record) { + this.recording = Buffer.concat([this.recording, data]); + } + if (this.port.echo) { + process.nextTick(() => { + if (this.isOpen) { + this.emitData(data); + } + }); + } + this.writeOperation = null; + debug(this.serialNumber, 'writing finished'); + })(); + return this.writeOperation; + } + async update(options) { + if (typeof options !== 'object') { + throw TypeError('"options" is not an object'); + } + if (typeof options.baudRate !== 'number') { + throw new TypeError('"options.baudRate" is not a number'); + } + debug(this.serialNumber, 'update'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + if (this.port.openOpt) { + this.port.openOpt.baudRate = options.baudRate; + } + } + async set(options) { + if (typeof options !== 'object') { + throw new TypeError('"options" is not an object'); + } + debug(this.serialNumber, 'set'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + } + async get() { + debug(this.serialNumber, 'get'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + return { + cts: true, + dsr: false, + dcd: false, + }; + } + async getBaudRate() { + var _a; + debug(this.serialNumber, 'getBaudRate'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + if (!((_a = this.port.openOpt) === null || _a === void 0 ? void 0 : _a.baudRate)) { + throw new Error('Internal Error'); + } + return { + baudRate: this.port.openOpt.baudRate, + }; + } + async flush() { + debug(this.serialNumber, 'flush'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + this.port.data = Buffer.alloc(0); + } + async drain() { + debug(this.serialNumber, 'drain'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await this.writeOperation; + await resolveNextTick(); + } +} + +export { CanceledError, MockBinding, MockPortBinding }; diff --git a/server/node_modules/@serialport/binding-mock/dist/index.d.ts b/server/node_modules/@serialport/binding-mock/dist/index.d.ts new file mode 100644 index 0000000..57841a1 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/dist/index.d.ts @@ -0,0 +1,73 @@ +/// + +import { BindingInterface } from '@serialport/bindings-interface'; +import { BindingPortInterface } from '@serialport/bindings-interface'; +import { OpenOptions } from '@serialport/bindings-interface'; +import { PortInfo } from '@serialport/bindings-interface'; +import { PortStatus } from '@serialport/bindings-interface'; +import { SetOptions } from '@serialport/bindings-interface'; +import { UpdateOptions } from '@serialport/bindings-interface'; + +export declare class CanceledError extends Error { + canceled: true; + constructor(message: string); +} + +export declare interface CreatePortOptions { + echo?: boolean; + record?: boolean; + readyData?: Buffer; + maxReadSize?: number; + manufacturer?: string; + vendorId?: string; + productId?: string; +} + +export declare const MockBinding: MockBindingInterface; + +export declare interface MockBindingInterface extends BindingInterface { + reset(): void; + createPort(path: string, opt?: CreatePortOptions): void; +} + +/** + * Mock bindings for pretend serialport access + */ +export declare class MockPortBinding implements BindingPortInterface { + readonly openOptions: Required; + readonly port: MockPortInternal; + private pendingRead; + lastWrite: null | Buffer; + recording: Buffer; + writeOperation: null | Promise; + isOpen: boolean; + serialNumber?: string; + constructor(port: MockPortInternal, openOptions: Required); + emitData(data: Buffer | string): void; + close(): Promise; + read(buffer: Buffer, offset: number, length: number): Promise<{ + buffer: Buffer; + bytesRead: number; + }>; + write(buffer: Buffer): Promise; + update(options: UpdateOptions): Promise; + set(options: SetOptions): Promise; + get(): Promise; + getBaudRate(): Promise<{ + baudRate: number; + }>; + flush(): Promise; + drain(): Promise; +} + +export declare interface MockPortInternal { + data: Buffer; + echo: boolean; + record: boolean; + info: PortInfo; + maxReadSize: number; + readyData?: Buffer; + openOpt?: OpenOptions; +} + +export { } diff --git a/server/node_modules/@serialport/binding-mock/dist/index.js b/server/node_modules/@serialport/binding-mock/dist/index.js new file mode 100644 index 0000000..1ff65cb --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/dist/index.js @@ -0,0 +1,281 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var debugFactory = require('debug'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var debugFactory__default = /*#__PURE__*/_interopDefaultLegacy(debugFactory); + +const debug = debugFactory__default["default"]('serialport/binding-mock'); +let ports = {}; +let serialNumber = 0; +function resolveNextTick() { + return new Promise(resolve => process.nextTick(() => resolve())); +} +class CanceledError extends Error { + constructor(message) { + super(message); + this.canceled = true; + } +} +const MockBinding = { + reset() { + ports = {}; + serialNumber = 0; + }, + // Create a mock port + createPort(path, options = {}) { + serialNumber++; + const optWithDefaults = Object.assign({ echo: false, record: false, manufacturer: 'The J5 Robotics Company', vendorId: undefined, productId: undefined, maxReadSize: 1024 }, options); + ports[path] = { + data: Buffer.alloc(0), + echo: optWithDefaults.echo, + record: optWithDefaults.record, + readyData: optWithDefaults.readyData, + maxReadSize: optWithDefaults.maxReadSize, + info: { + path, + manufacturer: optWithDefaults.manufacturer, + serialNumber: `${serialNumber}`, + pnpId: undefined, + locationId: undefined, + vendorId: optWithDefaults.vendorId, + productId: optWithDefaults.productId, + }, + }; + debug(serialNumber, 'created port', JSON.stringify({ path, opt: options })); + }, + async list() { + debug(null, 'list'); + return Object.values(ports).map(port => port.info); + }, + async open(options) { + var _a; + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + if (!options.path) { + throw new TypeError('"path" is not a valid port'); + } + if (!options.baudRate) { + throw new TypeError('"baudRate" is not a valid baudRate'); + } + const openOptions = Object.assign({ dataBits: 8, lock: true, stopBits: 1, parity: 'none', rtscts: false, xon: false, xoff: false, xany: false, hupcl: true }, options); + const { path } = openOptions; + debug(null, `open: opening path ${path}`); + const port = ports[path]; + await resolveNextTick(); + if (!port) { + throw new Error(`Port does not exist - please call MockBinding.createPort('${path}') first`); + } + const serialNumber = port.info.serialNumber; + if ((_a = port.openOpt) === null || _a === void 0 ? void 0 : _a.lock) { + debug(serialNumber, 'open: Port is locked cannot open'); + throw new Error('Port is locked cannot open'); + } + debug(serialNumber, `open: opened path ${path}`); + port.openOpt = Object.assign({}, openOptions); + return new MockPortBinding(port, openOptions); + }, +}; +/** + * Mock bindings for pretend serialport access + */ +class MockPortBinding { + constructor(port, openOptions) { + this.port = port; + this.openOptions = openOptions; + this.pendingRead = null; + this.isOpen = true; + this.lastWrite = null; + this.recording = Buffer.alloc(0); + this.writeOperation = null; // in flight promise or null + this.serialNumber = port.info.serialNumber; + if (port.readyData) { + const data = port.readyData; + process.nextTick(() => { + if (this.isOpen) { + debug(this.serialNumber, 'emitting ready data'); + this.emitData(data); + } + }); + } + } + // Emit data on a mock port + emitData(data) { + if (!this.isOpen || !this.port) { + throw new Error('Port must be open to pretend to receive data'); + } + const bufferData = Buffer.isBuffer(data) ? data : Buffer.from(data); + debug(this.serialNumber, 'emitting data - pending read:', Boolean(this.pendingRead)); + this.port.data = Buffer.concat([this.port.data, bufferData]); + if (this.pendingRead) { + process.nextTick(this.pendingRead); + this.pendingRead = null; + } + } + async close() { + debug(this.serialNumber, 'close'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + const port = this.port; + if (!port) { + throw new Error('already closed'); + } + port.openOpt = undefined; + // reset data on close + port.data = Buffer.alloc(0); + debug(this.serialNumber, 'port is closed'); + this.serialNumber = undefined; + this.isOpen = false; + if (this.pendingRead) { + this.pendingRead(new CanceledError('port is closed')); + } + } + async read(buffer, offset, length) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (typeof offset !== 'number' || isNaN(offset)) { + throw new TypeError(`"offset" is not an integer got "${isNaN(offset) ? 'NaN' : typeof offset}"`); + } + if (typeof length !== 'number' || isNaN(length)) { + throw new TypeError(`"length" is not an integer got "${isNaN(length) ? 'NaN' : typeof length}"`); + } + if (buffer.length < offset + length) { + throw new Error('buffer is too small'); + } + if (!this.isOpen) { + throw new Error('Port is not open'); + } + debug(this.serialNumber, 'read', length, 'bytes'); + await resolveNextTick(); + if (!this.isOpen || !this.port) { + throw new CanceledError('Read canceled'); + } + if (this.port.data.length <= 0) { + return new Promise((resolve, reject) => { + this.pendingRead = err => { + if (err) { + return reject(err); + } + this.read(buffer, offset, length).then(resolve, reject); + }; + }); + } + const lengthToRead = this.port.maxReadSize > length ? length : this.port.maxReadSize; + const data = this.port.data.slice(0, lengthToRead); + const bytesRead = data.copy(buffer, offset); + this.port.data = this.port.data.slice(lengthToRead); + debug(this.serialNumber, 'read', bytesRead, 'bytes'); + return { bytesRead, buffer }; + } + async write(buffer) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (!this.isOpen || !this.port) { + debug('write', 'error port is not open'); + throw new Error('Port is not open'); + } + debug(this.serialNumber, 'write', buffer.length, 'bytes'); + if (this.writeOperation) { + throw new Error('Overlapping writes are not supported and should be queued by the serialport object'); + } + this.writeOperation = (async () => { + await resolveNextTick(); + if (!this.isOpen || !this.port) { + throw new Error('Write canceled'); + } + const data = (this.lastWrite = Buffer.from(buffer)); // copy + if (this.port.record) { + this.recording = Buffer.concat([this.recording, data]); + } + if (this.port.echo) { + process.nextTick(() => { + if (this.isOpen) { + this.emitData(data); + } + }); + } + this.writeOperation = null; + debug(this.serialNumber, 'writing finished'); + })(); + return this.writeOperation; + } + async update(options) { + if (typeof options !== 'object') { + throw TypeError('"options" is not an object'); + } + if (typeof options.baudRate !== 'number') { + throw new TypeError('"options.baudRate" is not a number'); + } + debug(this.serialNumber, 'update'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + if (this.port.openOpt) { + this.port.openOpt.baudRate = options.baudRate; + } + } + async set(options) { + if (typeof options !== 'object') { + throw new TypeError('"options" is not an object'); + } + debug(this.serialNumber, 'set'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + } + async get() { + debug(this.serialNumber, 'get'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + return { + cts: true, + dsr: false, + dcd: false, + }; + } + async getBaudRate() { + var _a; + debug(this.serialNumber, 'getBaudRate'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + if (!((_a = this.port.openOpt) === null || _a === void 0 ? void 0 : _a.baudRate)) { + throw new Error('Internal Error'); + } + return { + baudRate: this.port.openOpt.baudRate, + }; + } + async flush() { + debug(this.serialNumber, 'flush'); + if (!this.isOpen || !this.port) { + throw new Error('Port is not open'); + } + await resolveNextTick(); + this.port.data = Buffer.alloc(0); + } + async drain() { + debug(this.serialNumber, 'drain'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await this.writeOperation; + await resolveNextTick(); + } +} + +exports.CanceledError = CanceledError; +exports.MockBinding = MockBinding; +exports.MockPortBinding = MockPortBinding; diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/LICENSE b/server/node_modules/@serialport/binding-mock/node_modules/debug/LICENSE new file mode 100644 index 0000000..1a9820e --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/README.md b/server/node_modules/@serialport/binding-mock/node_modules/debug/README.md new file mode 100644 index 0000000..9ebdfbf --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/README.md @@ -0,0 +1,481 @@ +# debug +[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + + + +A tiny JavaScript debugging utility modelled after Node.js core's debugging +technique. Works in Node.js and web browsers. + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example [_app.js_](./examples/node/app.js): + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %o', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example [_worker.js_](./examples/node/worker.js): + +```js +var a = require('debug')('worker:a') + , b = require('debug')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); +``` + +The `DEBUG` environment variable is then used to enable these based on space or +comma-delimited names. + +Here are some examples: + +screen shot 2017-08-08 at 12 53 04 pm +screen shot 2017-08-08 at 12 53 38 pm +screen shot 2017-08-08 at 12 53 25 pm + +#### Windows command prompt notes + +##### CMD + +On Windows the environment variable is set using the `set` command. + +```cmd +set DEBUG=*,-not_this +``` + +Example: + +```cmd +set DEBUG=* & node app.js +``` + +##### PowerShell (VS Code default) + +PowerShell uses different syntax to set environment variables. + +```cmd +$env:DEBUG = "*,-not_this" +``` + +Example: + +```cmd +$env:DEBUG='app';node app.js +``` + +Then, run the program to be debugged as usual. + +npm script example: +```js + "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", +``` + +## Namespace Colors + +Every debug instance has a color generated for it based on its namespace name. +This helps when visually parsing the debug output to identify which debug instance +a debug line belongs to. + +#### Node.js + +In Node.js, colors are enabled when stderr is a TTY. You also _should_ install +the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, +otherwise debug will only use a small handful of basic colors. + + + +#### Web Browser + +Colors are also enabled on "Web Inspectors" that understand the `%c` formatting +option. These are WebKit web inspectors, Firefox ([since version +31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) +and the Firebug plugin for Firefox (any version). + + + + +## Millisecond diff + +When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + + +When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: + + + + +## Conventions + +If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. + +## Wildcards + +The `*` character may be used as a wildcard. Suppose for example your library has +debuggers named "connect:bodyParser", "connect:compress", "connect:session", +instead of listing all three with +`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do +`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + +You can also exclude specific debuggers by prefixing them with a "-" character. +For example, `DEBUG=*,-connect:*` would include all debuggers except those +starting with "connect:". + +## Environment Variables + +When running through Node.js, you can set a few environment variables that will +change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + +__Note:__ The environment variables beginning with `DEBUG_` end up being +converted into an Options object that gets used with `%o`/`%O` formatters. +See the Node.js documentation for +[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) +for the complete list. + +## Formatters + +Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. +Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + + +### Custom formatters + +You can add custom formatters by extending the `debug.formatters` object. +For example, if you wanted to add support for rendering a Buffer as hex with +`%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + + +## Browser Support + +You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), +or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), +if you don't want to build it yourself. + +Debug's enable state is currently persisted by `localStorage`. +Consider the situation shown below where you have `worker:a` and `worker:b`, +and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. + + + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example [_stdout.js_](./examples/node/stdout.js): + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + +## Set dynamically + +You can also enable debug dynamically by calling the `enable()` method : + +```js +let debug = require('debug'); + +console.log(1, debug.enabled('test')); + +debug.enable('test'); +console.log(2, debug.enabled('test')); + +debug.disable(); +console.log(3, debug.enabled('test')); + +``` + +print : +``` +1 false +2 true +3 false +``` + +Usage : +`enable(namespaces)` +`namespaces` can include modes separated by a colon and wildcards. + +Note that calling `enable()` completely overrides previously set DEBUG variable : + +``` +$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' +=> false +``` + +`disable()` + +Will disable all namespaces. The functions returns the namespaces currently +enabled (and skipped). This can be useful if you want to disable debugging +temporarily without knowing what was enabled to begin with. + +For example: + +```js +let debug = require('debug'); +debug.enable('foo:*,-foo:bar'); +let namespaces = debug.disable(); +debug.enable(namespaces); +``` + +Note: There is no guarantee that the string will be identical to the initial +enable string, but semantically they will be identical. + +## Checking whether a debug target is enabled + +After you've created a debug instance, you can determine whether or not it is +enabled by checking the `enabled` property: + +```javascript +const debug = require('debug')('http'); + +if (debug.enabled) { + // do stuff... +} +``` + +You can also manually toggle this property to force the debug instance to be +enabled or disabled. + +## Usage in child processes + +Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. +For example: + +```javascript +worker = fork(WORKER_WRAP_PATH, [workerPath], { + stdio: [ + /* stdin: */ 0, + /* stdout: */ 'pipe', + /* stderr: */ 'pipe', + 'ipc', + ], + env: Object.assign({}, process.env, { + DEBUG_COLORS: 1 // without this settings, colors won't be shown + }), +}); + +worker.stderr.pipe(process.stderr, { end: false }); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + - Josh Junon + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/package.json b/server/node_modules/@serialport/binding-mock/node_modules/debug/package.json new file mode 100644 index 0000000..2f782eb --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/package.json @@ -0,0 +1,60 @@ +{ + "name": "debug", + "version": "4.3.7", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon (https://github.com/qix-)", + "contributors": [ + "TJ Holowaychuk ", + "Nathan Rajlich (http://n8.io)", + "Andrew Rhyne " + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "istanbul cover _mocha -- test.js test.node.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "^2.1.3" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "istanbul": "^0.4.5", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "sinon": "^14.0.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + } +} diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/src/browser.js b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/browser.js new file mode 100644 index 0000000..8d808e5 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/browser.js @@ -0,0 +1,271 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/src/common.js b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/common.js new file mode 100644 index 0000000..e3291b2 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/common.js @@ -0,0 +1,274 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/src/index.js b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/server/node_modules/@serialport/binding-mock/node_modules/debug/src/node.js b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/node.js new file mode 100644 index 0000000..715560a --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/server/node_modules/@serialport/binding-mock/node_modules/ms/index.js b/server/node_modules/@serialport/binding-mock/node_modules/ms/index.js new file mode 100644 index 0000000..ea734fb --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function (val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/server/node_modules/@serialport/binding-mock/node_modules/ms/license.md b/server/node_modules/@serialport/binding-mock/node_modules/ms/license.md new file mode 100644 index 0000000..fa5d39b --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/ms/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Vercel, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/server/node_modules/@serialport/binding-mock/node_modules/ms/package.json b/server/node_modules/@serialport/binding-mock/node_modules/ms/package.json new file mode 100644 index 0000000..4997189 --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/ms/package.json @@ -0,0 +1,38 @@ +{ + "name": "ms", + "version": "2.1.3", + "description": "Tiny millisecond conversion utility", + "repository": "vercel/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.18.2", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1", + "prettier": "2.0.5" + } +} diff --git a/server/node_modules/@serialport/binding-mock/node_modules/ms/readme.md b/server/node_modules/@serialport/binding-mock/node_modules/ms/readme.md new file mode 100644 index 0000000..0fc1abb --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/node_modules/ms/readme.md @@ -0,0 +1,59 @@ +# ms + +![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) + +Use this package to easily convert various time formats to milliseconds. + +## Examples + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('1y') // 31557600000 +ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 +``` + +### Convert from Milliseconds + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" +ms(ms('10 hours')) // "10h" +``` + +### Time Format Written-Out + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +## Features + +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned + +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! + +As always, you can run the tests using: `npm test` diff --git a/server/node_modules/@serialport/binding-mock/package.json b/server/node_modules/@serialport/binding-mock/package.json new file mode 100644 index 0000000..348bc0e --- /dev/null +++ b/server/node_modules/@serialport/binding-mock/package.json @@ -0,0 +1,58 @@ +{ + "name": "@serialport/binding-mock", + "version": "10.2.2", + "description": "The mock serialport bindings", + "types": "./dist/index.d.ts", + "main": "./dist/index.js", + "exports": { + "require": "./dist/index.js", + "default": "./dist/index-esm.mjs" + }, + "engines": { + "node": ">=12.0.0" + }, + "repository": "git@github.com:serialport/binding-mock.git", + "homepage": "https://github.com/serialport/binding-mock", + "scripts": { + "test": "mocha", + "lint": "tsc && eslint lib/**/*.ts", + "format": "eslint lib/**/*.ts --fix", + "clean": "rm -rf dist-ts dist", + "build": "npm run clean && tsc -p tsconfig-build.json && rollup -c && node -r esbuild-register bundle-types", + "prepublishOnly": "npm run build", + "semantic-release": "semantic-release" + }, + "keywords": [ + "serialport-binding", + "debug" + ], + "license": "MIT", + "devDependencies": { + "@microsoft/api-extractor": "7.19.4", + "@types/chai": "4.3.0", + "@types/mocha": "9.1.0", + "@types/node": "17.0.15", + "@typescript-eslint/eslint-plugin": "5.10.2", + "@typescript-eslint/parser": "5.10.2", + "chai": "4.3.6", + "esbuild": "0.14.18", + "esbuild-register": "3.3.2", + "eslint": "8.8.0", + "mocha": "9.2.0", + "rollup": "2.67.0", + "rollup-plugin-node-resolve": "5.2.0", + "semantic-release": "19.0.2", + "typescript": "4.5.5" + }, + "mocha": { + "bail": true, + "require": [ + "esbuild-register" + ], + "spec": "lib/**/*-test.ts" + }, + "dependencies": { + "@serialport/bindings-interface": "^1.2.1", + "debug": "^4.3.3" + } +} diff --git a/server/node_modules/@serialport/bindings-cpp/LICENSE b/server/node_modules/@serialport/bindings-cpp/LICENSE new file mode 100644 index 0000000..800d776 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2010 Christopher Williams. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/server/node_modules/@serialport/bindings-cpp/README.md b/server/node_modules/@serialport/bindings-cpp/README.md new file mode 100644 index 0000000..1bf126a --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/README.md @@ -0,0 +1,95 @@ +# @serialport/bindings-cpp + +[![Backers on Open Collective](https://opencollective.com/serialport/backers/badge.svg)](#backers) +[![Sponsors on Open Collective](https://opencollective.com/serialport/sponsors/badge.svg)](#sponsors) +[![codecov](https://codecov.io/gh/serialport/bindings-cpp/branch/main/graph/badge.svg?token=rsGeOmdnsV)](https://codecov.io/gh/serialport/bindings-cpp) +[![Test / Lint](https://github.com/serialport/bindings-cpp/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/serialport/bindings-cpp/actions/workflows/test.yml) + +Access serial ports with JavaScript. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them! + +> Go to https://serialport.io/ to learn more, find guides and api documentation. + +## Quick Links + +- 📚 [**Guides**](https://serialport.io/docs/) +- [**API Docs**](https://serialport.io/docs/api-serialport) +- [`@serialport/bindings-cpp`](https://www.npmjs.com/package/@serialport/bindings-cpp) +- 🐛 [Help and Bugs](https://github.com/serialport/node-serialport/issues/new/choose) All serialport issues are pointed to the main serialport repo. + +### Bindings + +The Bindings provide a low level interface to work with your serialport. It is possible to use them alone but it's usually easier to use them with an interface. + +- [`@serialport/bindings-cpp`](https://serialport.io/docs/api-bindings-cpp) bindings for Linux, Mac and Windows +- [`@serialport/binding-interface`](https://serialport.io/docs/api-bindings-interface) as an interface to use if you're making your own bindings +- [`@serialport/binding-mock`](https://serialport.io/docs/api-binding-mock) for a mock binding package for testing + +## Developing + +### Developing node serialport projects + +1. Clone this repo `git clone git@github.com:serialport/bindings-cpp.git` +1. Run `npm install` to setup local package dependencies (run this any time you depend on a package local to this repo) +1. Run `npm test` to ensure everything is working properly +1. If you have a serial loopback device (TX to RX) you can run run `TEST_PORT=/path/to/port npm test` for a more comprehensive test suite. (Defaults to 115200 baud customize with the TEST_BAUD env.) You can use an arduino with the `test/arduino-echo` sketch. + +### Developing Docs + +See https://github.com/serialport/website + +## License + +SerialPort packages are all [MIT licensed](LICENSE) and all it's dependencies are MIT licensed. + +## Code of Conduct + +SerialPort follows the [Nodebots Code of Conduct](http://nodebots.io/conduct.html). While the code is MIT licensed participation in the community has some rules to make this a good place to work and learn. + +### TLDR + +- Be respectful. +- Abusive behavior is never tolerated. +- Data published to NodeBots is hosted at the discretion of the service administrators, and may be removed. +- Don't build evil robots. +- Violations of this code may result in swift and permanent expulsion from the NodeBots community. + +## Governance and Community + +SerialPort is currently employees a [governance](https://medium.com/the-node-js-collection/healthy-open-source-967fa8be7951) with a group of maintainers, committers and contributors, all fixing bugs and adding features and improving documentation. You need not apply to work on SerialPort, all are welcome to join, build, and maintain this project. + +- A Contributor is any individual creating or commenting on an issue or pull request. By participating, this is you. +- Committers are contributors who have been given write access to the repository. They can review and merge pull requests. +- Maintainers are committers representing the required technical expertise to resolve rare disputes. + +If you have a PR that improves the project people in any or all of the above people will help you land it. + +**Maintainers** + +- [Francis Gulotta](https://twitter.com/reconbot) | [reconbot](https://github.com/reconbot) +- [Nick Hehr](https://twitter.com/hipsterbrown) | [hipsterbrown](https://github.com/hipsterbrown) + +### Contributors + +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + + +### Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/serialport#backer)] + + + +### Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/serialport#sponsor)] + + diff --git a/server/node_modules/@serialport/bindings-cpp/binding.gyp b/server/node_modules/@serialport/bindings-cpp/binding.gyp new file mode 100644 index 0000000..f944385 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/binding.gyp @@ -0,0 +1,80 @@ +{ + 'variables': { + 'openssl_fips': '' + }, + 'targets': [{ + 'target_name': 'bindings', + 'sources': [ + 'src/serialport.cpp' + ], + 'include_dirs': [" +import { BindingPortInterface } from '.'; +import { BindingInterface, OpenOptions, PortStatus, SetOptions, UpdateOptions } from '@serialport/bindings-interface'; +import { Poller } from './poller'; +export interface DarwinOpenOptions extends OpenOptions { + /** Defaults to none */ + parity?: 'none' | 'even' | 'odd'; + /** see [`man termios`](http://linux.die.net/man/3/termios) defaults to 1 */ + vmin?: number; + /** see [`man termios`](http://linux.die.net/man/3/termios) defaults to 0 */ + vtime?: number; +} +export type DarwinBindingInterface = BindingInterface; +export declare const DarwinBinding: DarwinBindingInterface; +/** + * The Darwin binding layer for OSX + */ +export declare class DarwinPortBinding implements BindingPortInterface { + readonly openOptions: Required; + readonly poller: Poller; + private writeOperation; + fd: null | number; + constructor(fd: number, options: Required); + get isOpen(): boolean; + close(): Promise; + read(buffer: Buffer, offset: number, length: number): Promise<{ + buffer: Buffer; + bytesRead: number; + }>; + write(buffer: Buffer): Promise; + update(options: UpdateOptions): Promise; + set(options: SetOptions): Promise; + get(): Promise; + getBaudRate(): Promise<{ + baudRate: number; + }>; + flush(): Promise; + drain(): Promise; +} diff --git a/server/node_modules/@serialport/bindings-cpp/dist/darwin.js b/server/node_modules/@serialport/bindings-cpp/dist/darwin.js new file mode 100644 index 0000000..ada895b --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/darwin.js @@ -0,0 +1,148 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DarwinPortBinding = exports.DarwinBinding = void 0; +const debug_1 = __importDefault(require("debug")); +const load_bindings_1 = require("./load-bindings"); +const poller_1 = require("./poller"); +const unix_read_1 = require("./unix-read"); +const unix_write_1 = require("./unix-write"); +const debug = (0, debug_1.default)('serialport/bindings-cpp'); +exports.DarwinBinding = { + list() { + debug('list'); + return (0, load_bindings_1.asyncList)(); + }, + async open(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + if (!options.path) { + throw new TypeError('"path" is not a valid port'); + } + if (!options.baudRate) { + throw new TypeError('"baudRate" is not a valid baudRate'); + } + debug('open'); + const openOptions = Object.assign({ vmin: 1, vtime: 0, dataBits: 8, lock: true, stopBits: 1, parity: 'none', rtscts: false, xon: false, xoff: false, xany: false, hupcl: true }, options); + const fd = await (0, load_bindings_1.asyncOpen)(openOptions.path, openOptions); + return new DarwinPortBinding(fd, openOptions); + }, +}; +/** + * The Darwin binding layer for OSX + */ +class DarwinPortBinding { + constructor(fd, options) { + this.fd = fd; + this.openOptions = options; + this.poller = new poller_1.Poller(fd); + this.writeOperation = null; + } + get isOpen() { + return this.fd !== null; + } + async close() { + debug('close'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + const fd = this.fd; + this.poller.stop(); + this.poller.destroy(); + this.fd = null; + await (0, load_bindings_1.asyncClose)(fd); + } + async read(buffer, offset, length) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (typeof offset !== 'number' || isNaN(offset)) { + throw new TypeError(`"offset" is not an integer got "${isNaN(offset) ? 'NaN' : typeof offset}"`); + } + if (typeof length !== 'number' || isNaN(length)) { + throw new TypeError(`"length" is not an integer got "${isNaN(length) ? 'NaN' : typeof length}"`); + } + debug('read'); + if (buffer.length < offset + length) { + throw new Error('buffer is too small'); + } + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, unix_read_1.unixRead)({ binding: this, buffer, offset, length }); + } + async write(buffer) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + debug('write', buffer.length, 'bytes'); + if (!this.isOpen) { + debug('write', 'error port is not open'); + throw new Error('Port is not open'); + } + this.writeOperation = (async () => { + if (buffer.length === 0) { + return; + } + await (0, unix_write_1.unixWrite)({ binding: this, buffer }); + this.writeOperation = null; + })(); + return this.writeOperation; + } + async update(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw TypeError('"options" is not an object'); + } + if (typeof options.baudRate !== 'number') { + throw new TypeError('"options.baudRate" is not a number'); + } + debug('update'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncUpdate)(this.fd, options); + } + async set(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + debug('set', options); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncSet)(this.fd, options); + } + async get() { + debug('get'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, load_bindings_1.asyncGet)(this.fd); + } + async getBaudRate() { + debug('getBaudRate'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + throw new Error('getBaudRate is not implemented on darwin'); + } + async flush() { + debug('flush'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncFlush)(this.fd); + } + async drain() { + debug('drain'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await this.writeOperation; + await (0, load_bindings_1.asyncDrain)(this.fd); + } +} +exports.DarwinPortBinding = DarwinPortBinding; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/errors.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/errors.d.ts new file mode 100644 index 0000000..8d21f61 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/errors.d.ts @@ -0,0 +1,7 @@ +import { BindingsErrorInterface } from '@serialport/bindings-interface'; +export declare class BindingsError extends Error implements BindingsErrorInterface { + canceled: boolean; + constructor(message: string, { canceled }?: { + canceled?: boolean | undefined; + }); +} diff --git a/server/node_modules/@serialport/bindings-cpp/dist/errors.js b/server/node_modules/@serialport/bindings-cpp/dist/errors.js new file mode 100644 index 0000000..3102828 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/errors.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BindingsError = void 0; +class BindingsError extends Error { + constructor(message, { canceled = false } = {}) { + super(message); + this.canceled = canceled; + } +} +exports.BindingsError = BindingsError; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/index.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/index.d.ts new file mode 100644 index 0000000..b1a7564 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/index.d.ts @@ -0,0 +1,13 @@ +import { DarwinBindingInterface } from './darwin'; +import { LinuxBindingInterface } from './linux'; +import { WindowsBindingInterface } from './win32'; +export * from '@serialport/bindings-interface'; +export * from './darwin'; +export * from './linux'; +export * from './win32'; +export * from './errors'; +export type AutoDetectTypes = DarwinBindingInterface | WindowsBindingInterface | LinuxBindingInterface; +/** + * This is an auto detected binding for your current platform + */ +export declare function autoDetect(): AutoDetectTypes; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/index.js b/server/node_modules/@serialport/bindings-cpp/dist/index.js new file mode 100644 index 0000000..cc9c436 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/index.js @@ -0,0 +1,48 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.autoDetect = void 0; +/* eslint-disable @typescript-eslint/no-var-requires */ +const debug_1 = __importDefault(require("debug")); +const darwin_1 = require("./darwin"); +const linux_1 = require("./linux"); +const win32_1 = require("./win32"); +const debug = (0, debug_1.default)('serialport/bindings-cpp'); +__exportStar(require("@serialport/bindings-interface"), exports); +__exportStar(require("./darwin"), exports); +__exportStar(require("./linux"), exports); +__exportStar(require("./win32"), exports); +__exportStar(require("./errors"), exports); +/** + * This is an auto detected binding for your current platform + */ +function autoDetect() { + switch (process.platform) { + case 'win32': + debug('loading WindowsBinding'); + return win32_1.WindowsBinding; + case 'darwin': + debug('loading DarwinBinding'); + return darwin_1.DarwinBinding; + default: + debug('loading LinuxBinding'); + return linux_1.LinuxBinding; + } +} +exports.autoDetect = autoDetect; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/linux-list.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/linux-list.d.ts new file mode 100644 index 0000000..0f35891 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/linux-list.d.ts @@ -0,0 +1,4 @@ +/// +import { spawn } from 'child_process'; +import { PortInfo } from '@serialport/bindings-interface'; +export declare function linuxList(spawnCmd?: typeof spawn): Promise; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/linux-list.js b/server/node_modules/@serialport/bindings-cpp/dist/linux-list.js new file mode 100644 index 0000000..4569b59 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/linux-list.js @@ -0,0 +1,115 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.linuxList = void 0; +const child_process_1 = require("child_process"); +const parser_readline_1 = require("@serialport/parser-readline"); +// get only serial port names +function checkPathOfDevice(path) { + return /(tty(S|WCH|ACM|USB|AMA|MFD|O|XRUSB)|rfcomm)/.test(path) && path; +} +function propName(name) { + return { + DEVNAME: 'path', + ID_VENDOR_ENC: 'manufacturer', + ID_SERIAL_SHORT: 'serialNumber', + ID_VENDOR_ID: 'vendorId', + ID_MODEL_ID: 'productId', + DEVLINKS: 'pnpId', + /** + * Workaround for systemd defect + * see https://github.com/serialport/bindings-cpp/issues/115 + */ + ID_USB_VENDOR_ENC: 'manufacturer', + ID_USB_SERIAL_SHORT: 'serialNumber', + ID_USB_VENDOR_ID: 'vendorId', + ID_USB_MODEL_ID: 'productId', + // End of workaround + }[name.toUpperCase()]; +} +function decodeHexEscape(str) { + return str.replace(/\\x([a-fA-F0-9]{2})/g, (a, b) => { + return String.fromCharCode(parseInt(b, 16)); + }); +} +function propVal(name, val) { + if (name === 'pnpId') { + const match = val.match(/\/by-id\/([^\s]+)/); + return (match === null || match === void 0 ? void 0 : match[1]) || undefined; + } + if (name === 'manufacturer') { + return decodeHexEscape(val); + } + if (/^0x/.test(val)) { + return val.substr(2); + } + return val; +} +function linuxList(spawnCmd = child_process_1.spawn) { + const ports = []; + const udevadm = spawnCmd('udevadm', ['info', '-e']); + const lines = udevadm.stdout.pipe(new parser_readline_1.ReadlineParser()); + let skipPort = false; + let port = { + path: '', + manufacturer: undefined, + serialNumber: undefined, + pnpId: undefined, + locationId: undefined, + vendorId: undefined, + productId: undefined, + }; + lines.on('data', (line) => { + const lineType = line.slice(0, 1); + const data = line.slice(3); + // new port entry + if (lineType === 'P') { + port = { + path: '', + manufacturer: undefined, + serialNumber: undefined, + pnpId: undefined, + locationId: undefined, + vendorId: undefined, + productId: undefined, + }; + skipPort = false; + return; + } + if (skipPort) { + return; + } + // Check dev name and save port if it matches flag to skip the rest of the data if not + if (lineType === 'N') { + if (checkPathOfDevice(data)) { + ports.push(port); + } + else { + skipPort = true; + } + return; + } + // parse data about each port + if (lineType === 'E') { + const keyValue = data.match(/^(.+)=(.*)/); + if (!keyValue) { + return; + } + const key = propName(keyValue[1]); + if (!key) { + return; + } + port[key] = propVal(key, keyValue[2]); + } + }); + return new Promise((resolve, reject) => { + udevadm.on('close', (code) => { + if (code) { + reject(new Error(`Error listing ports udevadm exited with error code: ${code}`)); + } + }); + udevadm.on('error', reject); + lines.on('error', reject); + lines.on('finish', () => resolve(ports)); + }); +} +exports.linuxList = linuxList; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/linux.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/linux.d.ts new file mode 100644 index 0000000..f11ee1b --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/linux.d.ts @@ -0,0 +1,46 @@ +/// +import { Poller } from './poller'; +import { BindingInterface, OpenOptions, PortStatus, SetOptions, UpdateOptions } from '@serialport/bindings-interface'; +import { BindingPortInterface } from '.'; +export interface LinuxOpenOptions extends OpenOptions { + /** Defaults to none */ + parity?: 'none' | 'even' | 'odd'; + /** see [`man termios`](http://linux.die.net/man/3/termios) defaults to 1 */ + vmin?: number; + /** see [`man termios`](http://linux.die.net/man/3/termios) defaults to 0 */ + vtime?: number; +} +export interface LinuxPortStatus extends PortStatus { + lowLatency: boolean; +} +export interface LinuxSetOptions extends SetOptions { + /** Low latency mode */ + lowLatency?: boolean; +} +export type LinuxBindingInterface = BindingInterface; +export declare const LinuxBinding: LinuxBindingInterface; +/** + * The linux binding layer + */ +export declare class LinuxPortBinding implements BindingPortInterface { + readonly openOptions: Required; + readonly poller: Poller; + private writeOperation; + fd: number | null; + constructor(fd: number, openOptions: Required); + get isOpen(): boolean; + close(): Promise; + read(buffer: Buffer, offset: number, length: number): Promise<{ + buffer: Buffer; + bytesRead: number; + }>; + write(buffer: Buffer): Promise; + update(options: UpdateOptions): Promise; + set(options: LinuxSetOptions): Promise; + get(): Promise; + getBaudRate(): Promise<{ + baudRate: number; + }>; + flush(): Promise; + drain(): Promise; +} diff --git a/server/node_modules/@serialport/bindings-cpp/dist/linux.js b/server/node_modules/@serialport/bindings-cpp/dist/linux.js new file mode 100644 index 0000000..5056300 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/linux.js @@ -0,0 +1,150 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LinuxPortBinding = exports.LinuxBinding = void 0; +const debug_1 = __importDefault(require("debug")); +const linux_list_1 = require("./linux-list"); +const poller_1 = require("./poller"); +const unix_read_1 = require("./unix-read"); +const unix_write_1 = require("./unix-write"); +const load_bindings_1 = require("./load-bindings"); +const debug = (0, debug_1.default)('serialport/bindings-cpp'); +exports.LinuxBinding = { + list() { + debug('list'); + return (0, linux_list_1.linuxList)(); + }, + async open(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + if (!options.path) { + throw new TypeError('"path" is not a valid port'); + } + if (!options.baudRate) { + throw new TypeError('"baudRate" is not a valid baudRate'); + } + debug('open'); + const openOptions = Object.assign({ vmin: 1, vtime: 0, dataBits: 8, lock: true, stopBits: 1, parity: 'none', rtscts: false, xon: false, xoff: false, xany: false, hupcl: true }, options); + const fd = await (0, load_bindings_1.asyncOpen)(openOptions.path, openOptions); + this.fd = fd; + return new LinuxPortBinding(fd, openOptions); + }, +}; +/** + * The linux binding layer + */ +class LinuxPortBinding { + constructor(fd, openOptions) { + this.fd = fd; + this.openOptions = openOptions; + this.poller = new poller_1.Poller(fd); + this.writeOperation = null; + } + get isOpen() { + return this.fd !== null; + } + async close() { + debug('close'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + const fd = this.fd; + this.poller.stop(); + this.poller.destroy(); + this.fd = null; + await (0, load_bindings_1.asyncClose)(fd); + } + async read(buffer, offset, length) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (typeof offset !== 'number' || isNaN(offset)) { + throw new TypeError(`"offset" is not an integer got "${isNaN(offset) ? 'NaN' : typeof offset}"`); + } + if (typeof length !== 'number' || isNaN(length)) { + throw new TypeError(`"length" is not an integer got "${isNaN(length) ? 'NaN' : typeof length}"`); + } + debug('read'); + if (buffer.length < offset + length) { + throw new Error('buffer is too small'); + } + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, unix_read_1.unixRead)({ binding: this, buffer, offset, length }); + } + async write(buffer) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + debug('write', buffer.length, 'bytes'); + if (!this.isOpen) { + debug('write', 'error port is not open'); + throw new Error('Port is not open'); + } + this.writeOperation = (async () => { + if (buffer.length === 0) { + return; + } + await (0, unix_write_1.unixWrite)({ binding: this, buffer }); + this.writeOperation = null; + })(); + return this.writeOperation; + } + async update(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw TypeError('"options" is not an object'); + } + if (typeof options.baudRate !== 'number') { + throw new TypeError('"options.baudRate" is not a number'); + } + debug('update'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncUpdate)(this.fd, options); + } + async set(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + debug('set'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncSet)(this.fd, options); + } + async get() { + debug('get'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, load_bindings_1.asyncGet)(this.fd); + } + async getBaudRate() { + debug('getBaudRate'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, load_bindings_1.asyncGetBaudRate)(this.fd); + } + async flush() { + debug('flush'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncFlush)(this.fd); + } + async drain() { + debug('drain'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await this.writeOperation; + await (0, load_bindings_1.asyncDrain)(this.fd); + } +} +exports.LinuxPortBinding = LinuxPortBinding; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.d.ts new file mode 100644 index 0000000..d5e7971 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.d.ts @@ -0,0 +1,11 @@ +export declare const asyncClose: Function; +export declare const asyncDrain: Function; +export declare const asyncFlush: Function; +export declare const asyncGet: Function; +export declare const asyncGetBaudRate: Function; +export declare const asyncList: Function; +export declare const asyncOpen: Function; +export declare const asyncSet: Function; +export declare const asyncUpdate: Function; +export declare const asyncRead: Function; +export declare const asyncWrite: Function; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.js b/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.js new file mode 100644 index 0000000..1fc911f --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/load-bindings.js @@ -0,0 +1,22 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.asyncWrite = exports.asyncRead = exports.asyncUpdate = exports.asyncSet = exports.asyncOpen = exports.asyncList = exports.asyncGetBaudRate = exports.asyncGet = exports.asyncFlush = exports.asyncDrain = exports.asyncClose = void 0; +const node_gyp_build_1 = __importDefault(require("node-gyp-build")); +const util_1 = require("util"); +const path_1 = require("path"); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const binding = (0, node_gyp_build_1.default)((0, path_1.join)(__dirname, '../')); +exports.asyncClose = binding.close ? (0, util_1.promisify)(binding.close) : async () => { throw new Error('"binding.close" Method not implemented'); }; +exports.asyncDrain = binding.drain ? (0, util_1.promisify)(binding.drain) : async () => { throw new Error('"binding.drain" Method not implemented'); }; +exports.asyncFlush = binding.flush ? (0, util_1.promisify)(binding.flush) : async () => { throw new Error('"binding.flush" Method not implemented'); }; +exports.asyncGet = binding.get ? (0, util_1.promisify)(binding.get) : async () => { throw new Error('"binding.get" Method not implemented'); }; +exports.asyncGetBaudRate = binding.getBaudRate ? (0, util_1.promisify)(binding.getBaudRate) : async () => { throw new Error('"binding.getBaudRate" Method not implemented'); }; +exports.asyncList = binding.list ? (0, util_1.promisify)(binding.list) : async () => { throw new Error('"binding.list" Method not implemented'); }; +exports.asyncOpen = binding.open ? (0, util_1.promisify)(binding.open) : async () => { throw new Error('"binding.open" Method not implemented'); }; +exports.asyncSet = binding.set ? (0, util_1.promisify)(binding.set) : async () => { throw new Error('"binding.set" Method not implemented'); }; +exports.asyncUpdate = binding.update ? (0, util_1.promisify)(binding.update) : async () => { throw new Error('"binding.update" Method not implemented'); }; +exports.asyncRead = binding.read ? (0, util_1.promisify)(binding.read) : async () => { throw new Error('"binding.read" Method not implemented'); }; +exports.asyncWrite = binding.write ? (0, util_1.promisify)(binding.write) : async () => { throw new Error('"binding.write" Method not implemented'); }; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/poller.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/poller.d.ts new file mode 100644 index 0000000..008fea2 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/poller.d.ts @@ -0,0 +1,40 @@ +/// +import { EventEmitter } from 'events'; +interface PollerClass { + new (fd: number, cb: (err: Error, flag: number) => void): PollerInstance; +} +interface PollerInstance { + poll(flag: number): void; + stop(): void; + destroy(): void; +} +export declare const EVENTS: { + UV_READABLE: number; + UV_WRITABLE: number; + UV_DISCONNECT: number; +}; +/** + * Polls unix systems for readable or writable states of a file or serialport + */ +export declare class Poller extends EventEmitter { + poller: PollerInstance; + constructor(fd: number, FDPoller?: PollerClass); + /** + * Wait for the next event to occur + * @param {string} event ('readable'|'writable'|'disconnect') + * @returns {Poller} returns itself + */ + once(event: 'readable' | 'writable' | 'disconnect', callback: (err: null | Error) => void): this; + /** + * Ask the bindings to listen for an event, it is recommend to use `.once()` for easy use + * @param {EVENTS} eventFlag polls for an event or group of events based upon a flag. + */ + poll(eventFlag?: number): void; + /** + * Stop listening for events and cancel all outstanding listening with an error + */ + stop(): void; + destroy(): void; + emitCanceled(): void; +} +export {}; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/poller.js b/server/node_modules/@serialport/bindings-cpp/dist/poller.js new file mode 100644 index 0000000..0eeafb2 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/poller.js @@ -0,0 +1,104 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Poller = exports.EVENTS = void 0; +const debug_1 = __importDefault(require("debug")); +const events_1 = require("events"); +const path_1 = require("path"); +const node_gyp_build_1 = __importDefault(require("node-gyp-build")); +const errors_1 = require("./errors"); +const { Poller: PollerBindings } = (0, node_gyp_build_1.default)((0, path_1.join)(__dirname, '../')); +const logger = (0, debug_1.default)('serialport/bindings-cpp/poller'); +exports.EVENTS = { + UV_READABLE: 0b0001, + UV_WRITABLE: 0b0010, + UV_DISCONNECT: 0b0100, +}; +function handleEvent(error, eventFlag) { + if (error) { + logger('error', error); + this.emit('readable', error); + this.emit('writable', error); + this.emit('disconnect', error); + return; + } + if (eventFlag & exports.EVENTS.UV_READABLE) { + logger('received "readable"'); + this.emit('readable', null); + } + if (eventFlag & exports.EVENTS.UV_WRITABLE) { + logger('received "writable"'); + this.emit('writable', null); + } + if (eventFlag & exports.EVENTS.UV_DISCONNECT) { + logger('received "disconnect"'); + this.emit('disconnect', null); + } +} +/** + * Polls unix systems for readable or writable states of a file or serialport + */ +class Poller extends events_1.EventEmitter { + constructor(fd, FDPoller = PollerBindings) { + logger('Creating poller'); + super(); + this.poller = new FDPoller(fd, handleEvent.bind(this)); + } + /** + * Wait for the next event to occur + * @param {string} event ('readable'|'writable'|'disconnect') + * @returns {Poller} returns itself + */ + once(event, callback) { + switch (event) { + case 'readable': + this.poll(exports.EVENTS.UV_READABLE); + break; + case 'writable': + this.poll(exports.EVENTS.UV_WRITABLE); + break; + case 'disconnect': + this.poll(exports.EVENTS.UV_DISCONNECT); + break; + } + return super.once(event, callback); + } + /** + * Ask the bindings to listen for an event, it is recommend to use `.once()` for easy use + * @param {EVENTS} eventFlag polls for an event or group of events based upon a flag. + */ + poll(eventFlag = 0) { + if (eventFlag & exports.EVENTS.UV_READABLE) { + logger('Polling for "readable"'); + } + if (eventFlag & exports.EVENTS.UV_WRITABLE) { + logger('Polling for "writable"'); + } + if (eventFlag & exports.EVENTS.UV_DISCONNECT) { + logger('Polling for "disconnect"'); + } + this.poller.poll(eventFlag); + } + /** + * Stop listening for events and cancel all outstanding listening with an error + */ + stop() { + logger('Stopping poller'); + this.poller.stop(); + this.emitCanceled(); + } + destroy() { + logger('Destroying poller'); + this.poller.destroy(); + this.emitCanceled(); + } + emitCanceled() { + const err = new errors_1.BindingsError('Canceled', { canceled: true }); + this.emit('readable', err); + this.emit('writable', err); + this.emit('disconnect', err); + } +} +exports.Poller = Poller; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/unix-read.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/unix-read.d.ts new file mode 100644 index 0000000..2a94c52 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/unix-read.d.ts @@ -0,0 +1,18 @@ +/// +/// +import { read as fsRead } from 'fs'; +import { LinuxPortBinding } from './linux'; +import { DarwinPortBinding } from './darwin'; +declare const readAsync: typeof fsRead.__promisify__; +interface UnixReadOptions { + binding: LinuxPortBinding | DarwinPortBinding; + buffer: Buffer; + offset: number; + length: number; + fsReadAsync?: typeof readAsync; +} +export declare const unixRead: ({ binding, buffer, offset, length, fsReadAsync, }: UnixReadOptions) => Promise<{ + buffer: Buffer; + bytesRead: number; +}>; +export {}; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/unix-read.js b/server/node_modules/@serialport/bindings-cpp/dist/unix-read.js new file mode 100644 index 0000000..e442812 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/unix-read.js @@ -0,0 +1,55 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unixRead = void 0; +const util_1 = require("util"); +const fs_1 = require("fs"); +const errors_1 = require("./errors"); +const debug_1 = __importDefault(require("debug")); +const logger = (0, debug_1.default)('serialport/bindings-cpp/unixRead'); +const readAsync = (0, util_1.promisify)(fs_1.read); +const readable = (binding) => { + return new Promise((resolve, reject) => { + if (!binding.poller) { + throw new Error('No poller on bindings'); + } + binding.poller.once('readable', err => (err ? reject(err) : resolve())); + }); +}; +const unixRead = async ({ binding, buffer, offset, length, fsReadAsync = readAsync, }) => { + logger('Starting read'); + if (!binding.isOpen || !binding.fd) { + throw new errors_1.BindingsError('Port is not open', { canceled: true }); + } + try { + const { bytesRead } = await fsReadAsync(binding.fd, buffer, offset, length, null); + if (bytesRead === 0) { + return (0, exports.unixRead)({ binding, buffer, offset, length, fsReadAsync }); + } + logger('Finished read', bytesRead, 'bytes'); + return { bytesRead, buffer }; + } + catch (err) { + logger('read error', err); + if (err.code === 'EAGAIN' || err.code === 'EWOULDBLOCK' || err.code === 'EINTR') { + if (!binding.isOpen) { + throw new errors_1.BindingsError('Port is not open', { canceled: true }); + } + logger('waiting for readable because of code:', err.code); + await readable(binding); + return (0, exports.unixRead)({ binding, buffer, offset, length, fsReadAsync }); + } + const disconnectError = err.code === 'EBADF' || // Bad file number means we got closed + err.code === 'ENXIO' || // No such device or address probably usb disconnect + err.code === 'UNKNOWN' || + err.errno === -1; // generic error + if (disconnectError) { + err.disconnect = true; + logger('disconnecting', err); + } + throw err; + } +}; +exports.unixRead = unixRead; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/unix-write.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/unix-write.d.ts new file mode 100644 index 0000000..34d11cf --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/unix-write.d.ts @@ -0,0 +1,14 @@ +/// +/// +import { write } from 'fs'; +import { LinuxPortBinding } from './linux'; +import { DarwinPortBinding } from './darwin'; +declare const writeAsync: typeof write.__promisify__; +interface UnixWriteOptions { + binding: LinuxPortBinding | DarwinPortBinding; + buffer: Buffer; + offset?: number; + fsWriteAsync?: typeof writeAsync; +} +export declare const unixWrite: ({ binding, buffer, offset, fsWriteAsync }: UnixWriteOptions) => Promise; +export {}; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/unix-write.js b/server/node_modules/@serialport/bindings-cpp/dist/unix-write.js new file mode 100644 index 0000000..f4b48f6 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/unix-write.js @@ -0,0 +1,56 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unixWrite = void 0; +const fs_1 = require("fs"); +const debug_1 = __importDefault(require("debug")); +const util_1 = require("util"); +const logger = (0, debug_1.default)('serialport/bindings-cpp/unixWrite'); +const writeAsync = (0, util_1.promisify)(fs_1.write); +const writable = (binding) => { + return new Promise((resolve, reject) => { + binding.poller.once('writable', err => (err ? reject(err) : resolve())); + }); +}; +const unixWrite = async ({ binding, buffer, offset = 0, fsWriteAsync = writeAsync }) => { + const bytesToWrite = buffer.length - offset; + logger('Starting write', buffer.length, 'bytes offset', offset, 'bytesToWrite', bytesToWrite); + if (!binding.isOpen || !binding.fd) { + throw new Error('Port is not open'); + } + try { + const { bytesWritten } = await fsWriteAsync(binding.fd, buffer, offset, bytesToWrite); + logger('write returned: wrote', bytesWritten, 'bytes'); + if (bytesWritten + offset < buffer.length) { + if (!binding.isOpen) { + throw new Error('Port is not open'); + } + return (0, exports.unixWrite)({ binding, buffer, offset: bytesWritten + offset, fsWriteAsync }); + } + logger('Finished writing', bytesWritten + offset, 'bytes'); + } + catch (err) { + logger('write errored', err); + if (err.code === 'EAGAIN' || err.code === 'EWOULDBLOCK' || err.code === 'EINTR') { + if (!binding.isOpen) { + throw new Error('Port is not open'); + } + logger('waiting for writable because of code:', err.code); + await writable(binding); + return (0, exports.unixWrite)({ binding, buffer, offset, fsWriteAsync }); + } + const disconnectError = err.code === 'EBADF' || // Bad file number means we got closed + err.code === 'ENXIO' || // No such device or address probably usb disconnect + err.code === 'UNKNOWN' || + err.errno === -1; // generic error + if (disconnectError) { + err.disconnect = true; + logger('disconnecting', err); + } + logger('error', err); + throw err; + } +}; +exports.unixWrite = unixWrite; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.d.ts new file mode 100644 index 0000000..4320ab7 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.d.ts @@ -0,0 +1 @@ +export declare const serialNumParser: (pnpId?: string) => string | null; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.js b/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.js new file mode 100644 index 0000000..05e67d2 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/win32-sn-parser.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serialNumParser = void 0; +const PARSERS = [/USB\\(?:.+)\\(.+)/, /FTDIBUS\\(?:.+)\+(.+?)A?\\.+/]; +const serialNumParser = (pnpId) => { + if (!pnpId) { + return null; + } + for (const parser of PARSERS) { + const sn = pnpId.match(parser); + if (sn) { + return sn[1]; + } + } + return null; +}; +exports.serialNumParser = serialNumParser; diff --git a/server/node_modules/@serialport/bindings-cpp/dist/win32.d.ts b/server/node_modules/@serialport/bindings-cpp/dist/win32.d.ts new file mode 100644 index 0000000..91d8565 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/win32.d.ts @@ -0,0 +1,35 @@ +/// +import { BindingPortInterface } from '.'; +import { BindingInterface, OpenOptions, PortStatus, SetOptions, UpdateOptions } from '@serialport/bindings-interface'; +export interface WindowsOpenOptions extends OpenOptions { + /** Device parity defaults to none */ + parity?: 'none' | 'even' | 'odd' | 'mark' | 'space'; + /** RTS mode defaults to handshake */ + rtsMode?: 'handshake' | 'enable' | 'toggle'; +} +export type WindowsBindingInterface = BindingInterface; +export declare const WindowsBinding: WindowsBindingInterface; +/** + * The Windows binding layer + */ +export declare class WindowsPortBinding implements BindingPortInterface { + fd: null | number; + writeOperation: Promise | null; + openOptions: Required; + constructor(fd: number, options: Required); + get isOpen(): boolean; + close(): Promise; + read(buffer: Buffer, offset: number, length: number): Promise<{ + buffer: Buffer; + bytesRead: number; + }>; + write(buffer: Buffer): Promise; + update(options: UpdateOptions): Promise; + set(options: SetOptions): Promise; + get(): Promise; + getBaudRate(): Promise<{ + baudRate: number; + }>; + flush(): Promise; + drain(): Promise; +} diff --git a/server/node_modules/@serialport/bindings-cpp/dist/win32.js b/server/node_modules/@serialport/bindings-cpp/dist/win32.js new file mode 100644 index 0000000..24c897a --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/dist/win32.js @@ -0,0 +1,162 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WindowsPortBinding = exports.WindowsBinding = void 0; +const debug_1 = __importDefault(require("debug")); +const _1 = require("."); +const load_bindings_1 = require("./load-bindings"); +const win32_sn_parser_1 = require("./win32-sn-parser"); +const debug = (0, debug_1.default)('serialport/bindings-cpp'); +exports.WindowsBinding = { + async list() { + const ports = await (0, load_bindings_1.asyncList)(); + // Grab the serial number from the pnp id + return ports.map(port => { + if (port.pnpId && !port.serialNumber) { + const serialNumber = (0, win32_sn_parser_1.serialNumParser)(port.pnpId); + if (serialNumber) { + return Object.assign(Object.assign({}, port), { serialNumber }); + } + } + return port; + }); + }, + async open(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + if (!options.path) { + throw new TypeError('"path" is not a valid port'); + } + if (!options.baudRate) { + throw new TypeError('"baudRate" is not a valid baudRate'); + } + debug('open'); + const openOptions = Object.assign({ dataBits: 8, lock: true, stopBits: 1, parity: 'none', rtscts: false, rtsMode: 'handshake', xon: false, xoff: false, xany: false, hupcl: true }, options); + const fd = await (0, load_bindings_1.asyncOpen)(openOptions.path, openOptions); + return new WindowsPortBinding(fd, openOptions); + }, +}; +/** + * The Windows binding layer + */ +class WindowsPortBinding { + constructor(fd, options) { + this.fd = fd; + this.openOptions = options; + this.writeOperation = null; + } + get isOpen() { + return this.fd !== null; + } + async close() { + debug('close'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + const fd = this.fd; + this.fd = null; + await (0, load_bindings_1.asyncClose)(fd); + } + async read(buffer, offset, length) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + if (typeof offset !== 'number' || isNaN(offset)) { + throw new TypeError(`"offset" is not an integer got "${isNaN(offset) ? 'NaN' : typeof offset}"`); + } + if (typeof length !== 'number' || isNaN(length)) { + throw new TypeError(`"length" is not an integer got "${isNaN(length) ? 'NaN' : typeof length}"`); + } + debug('read'); + if (buffer.length < offset + length) { + throw new Error('buffer is too small'); + } + if (!this.isOpen) { + throw new Error('Port is not open'); + } + try { + const bytesRead = await (0, load_bindings_1.asyncRead)(this.fd, buffer, offset, length); + return { bytesRead, buffer }; + } + catch (err) { + if (!this.isOpen) { + throw new _1.BindingsError(err.message, { canceled: true }); + } + throw err; + } + } + async write(buffer) { + if (!Buffer.isBuffer(buffer)) { + throw new TypeError('"buffer" is not a Buffer'); + } + debug('write', buffer.length, 'bytes'); + if (!this.isOpen) { + debug('write', 'error port is not open'); + throw new Error('Port is not open'); + } + this.writeOperation = (async () => { + if (buffer.length === 0) { + return; + } + await (0, load_bindings_1.asyncWrite)(this.fd, buffer); + this.writeOperation = null; + })(); + return this.writeOperation; + } + async update(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw TypeError('"options" is not an object'); + } + if (typeof options.baudRate !== 'number') { + throw new TypeError('"options.baudRate" is not a number'); + } + debug('update'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncUpdate)(this.fd, options); + } + async set(options) { + if (!options || typeof options !== 'object' || Array.isArray(options)) { + throw new TypeError('"options" is not an object'); + } + debug('set', options); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncSet)(this.fd, options); + } + async get() { + debug('get'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, load_bindings_1.asyncGet)(this.fd); + } + async getBaudRate() { + debug('getBaudRate'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + return (0, load_bindings_1.asyncGetBaudRate)(this.fd); + } + async flush() { + debug('flush'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await (0, load_bindings_1.asyncFlush)(this.fd); + } + async drain() { + debug('drain'); + if (!this.isOpen) { + throw new Error('Port is not open'); + } + await this.writeOperation; + await (0, load_bindings_1.asyncDrain)(this.fd); + } +} +exports.WindowsPortBinding = WindowsPortBinding; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/LICENSE b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/LICENSE new file mode 100644 index 0000000..800d776 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2010 Christopher Williams. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/README.md b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/README.md new file mode 100644 index 0000000..55437e2 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/README.md @@ -0,0 +1,3 @@ +# @serialport/parser-delimiter + +See our api docs https://serialport.io/docs/api-parser-delimiter diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.d.ts b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.d.ts new file mode 100644 index 0000000..33f361e --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.d.ts @@ -0,0 +1,23 @@ +/// +/// +import { Transform, TransformCallback, TransformOptions } from 'stream'; +export interface DelimiterOptions extends TransformOptions { + /** The delimiter on which to split incoming data. */ + delimiter: string | Buffer | number[]; + /** Should the delimiter be included at the end of data. Defaults to `false` */ + includeDelimiter?: boolean; +} +/** + * A transform stream that emits data each time a byte sequence is received. + * @extends Transform + * + * To use the `Delimiter` parser, provide a delimiter as a string, buffer, or array of bytes. Runs in O(n) time. + */ +export declare class DelimiterParser extends Transform { + includeDelimiter: boolean; + delimiter: Buffer; + buffer: Buffer; + constructor({ delimiter, includeDelimiter, ...options }: DelimiterOptions); + _transform(chunk: Buffer, encoding: BufferEncoding, cb: TransformCallback): void; + _flush(cb: TransformCallback): void; +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.js b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.js new file mode 100644 index 0000000..bf56bcc --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/dist/index.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DelimiterParser = void 0; +const stream_1 = require("stream"); +/** + * A transform stream that emits data each time a byte sequence is received. + * @extends Transform + * + * To use the `Delimiter` parser, provide a delimiter as a string, buffer, or array of bytes. Runs in O(n) time. + */ +class DelimiterParser extends stream_1.Transform { + constructor({ delimiter, includeDelimiter = false, ...options }) { + super(options); + if (delimiter === undefined) { + throw new TypeError('"delimiter" is not a bufferable object'); + } + if (delimiter.length === 0) { + throw new TypeError('"delimiter" has a 0 or undefined length'); + } + this.includeDelimiter = includeDelimiter; + this.delimiter = Buffer.from(delimiter); + this.buffer = Buffer.alloc(0); + } + _transform(chunk, encoding, cb) { + let data = Buffer.concat([this.buffer, chunk]); + let position; + while ((position = data.indexOf(this.delimiter)) !== -1) { + this.push(data.slice(0, position + (this.includeDelimiter ? this.delimiter.length : 0))); + data = data.slice(position + this.delimiter.length); + } + this.buffer = data; + cb(); + } + _flush(cb) { + this.push(this.buffer); + this.buffer = Buffer.alloc(0); + cb(); + } +} +exports.DelimiterParser = DelimiterParser; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/package.json b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/package.json new file mode 100644 index 0000000..c2e4271 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter/package.json @@ -0,0 +1,25 @@ +{ + "name": "@serialport/parser-delimiter", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "version": "11.0.0", + "engines": { + "node": ">=12.0.0" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "scripts": { + "build": "tsc --build tsconfig-build.json" + }, + "repository": { + "type": "git", + "url": "git://github.com/serialport/node-serialport.git" + }, + "funding": "https://opencollective.com/serialport/donate", + "devDependencies": { + "typescript": "5.0.4" + }, + "gitHead": "6a8202cd947c87ac70c9f3c84d60fe4b5f5d70a9" +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/LICENSE b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/LICENSE new file mode 100644 index 0000000..800d776 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2010 Christopher Williams. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/README.md b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/README.md new file mode 100644 index 0000000..4c8677d --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/README.md @@ -0,0 +1,3 @@ +# @serialport/parser-readline + +See our api docs See our api docs https://serialport.io/docs/api-parser-readline diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.d.ts b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.d.ts new file mode 100644 index 0000000..a1f1b4a --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.d.ts @@ -0,0 +1,19 @@ +/// +/// +import { DelimiterParser } from '@serialport/parser-delimiter'; +import { TransformOptions } from 'stream'; +export interface ReadlineOptions extends TransformOptions { + /** delimiter to use defaults to \n */ + delimiter?: string | Buffer | number[]; + /** include the delimiter at the end of the packet defaults to false */ + includeDelimiter?: boolean; + /** Defaults to utf8 */ + encoding?: BufferEncoding; +} +/** + * A transform stream that emits data after a newline delimiter is received. + * @summary To use the `Readline` parser, provide a delimiter (defaults to `\n`). Data is emitted as string controllable by the `encoding` option (defaults to `utf8`). + */ +export declare class ReadlineParser extends DelimiterParser { + constructor(options?: ReadlineOptions); +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.js b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.js new file mode 100644 index 0000000..e2791b6 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/dist/index.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ReadlineParser = void 0; +const parser_delimiter_1 = require("@serialport/parser-delimiter"); +/** + * A transform stream that emits data after a newline delimiter is received. + * @summary To use the `Readline` parser, provide a delimiter (defaults to `\n`). Data is emitted as string controllable by the `encoding` option (defaults to `utf8`). + */ +class ReadlineParser extends parser_delimiter_1.DelimiterParser { + constructor(options) { + const opts = { + delimiter: Buffer.from('\n', 'utf8'), + encoding: 'utf8', + ...options, + }; + if (typeof opts.delimiter === 'string') { + opts.delimiter = Buffer.from(opts.delimiter, opts.encoding); + } + super(opts); + } +} +exports.ReadlineParser = ReadlineParser; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/package.json b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/package.json new file mode 100644 index 0000000..2b8c5a5 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline/package.json @@ -0,0 +1,28 @@ +{ + "name": "@serialport/parser-readline", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "version": "11.0.0", + "dependencies": { + "@serialport/parser-delimiter": "11.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "scripts": { + "build": "tsc --build tsconfig-build.json" + }, + "repository": { + "type": "git", + "url": "git://github.com/serialport/node-serialport.git" + }, + "funding": "https://opencollective.com/serialport/donate", + "devDependencies": { + "typescript": "5.0.4" + }, + "gitHead": "6a8202cd947c87ac70c9f3c84d60fe4b5f5d70a9" +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/LICENSE b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/LICENSE new file mode 100644 index 0000000..1a9820e --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/README.md b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/README.md new file mode 100644 index 0000000..e9c3e04 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/README.md @@ -0,0 +1,481 @@ +# debug +[![Build Status](https://travis-ci.org/debug-js/debug.svg?branch=master)](https://travis-ci.org/debug-js/debug) [![Coverage Status](https://coveralls.io/repos/github/debug-js/debug/badge.svg?branch=master)](https://coveralls.io/github/debug-js/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + + + +A tiny JavaScript debugging utility modelled after Node.js core's debugging +technique. Works in Node.js and web browsers. + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example [_app.js_](./examples/node/app.js): + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %o', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example [_worker.js_](./examples/node/worker.js): + +```js +var a = require('debug')('worker:a') + , b = require('debug')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); +``` + +The `DEBUG` environment variable is then used to enable these based on space or +comma-delimited names. + +Here are some examples: + +screen shot 2017-08-08 at 12 53 04 pm +screen shot 2017-08-08 at 12 53 38 pm +screen shot 2017-08-08 at 12 53 25 pm + +#### Windows command prompt notes + +##### CMD + +On Windows the environment variable is set using the `set` command. + +```cmd +set DEBUG=*,-not_this +``` + +Example: + +```cmd +set DEBUG=* & node app.js +``` + +##### PowerShell (VS Code default) + +PowerShell uses different syntax to set environment variables. + +```cmd +$env:DEBUG = "*,-not_this" +``` + +Example: + +```cmd +$env:DEBUG='app';node app.js +``` + +Then, run the program to be debugged as usual. + +npm script example: +```js + "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", +``` + +## Namespace Colors + +Every debug instance has a color generated for it based on its namespace name. +This helps when visually parsing the debug output to identify which debug instance +a debug line belongs to. + +#### Node.js + +In Node.js, colors are enabled when stderr is a TTY. You also _should_ install +the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, +otherwise debug will only use a small handful of basic colors. + + + +#### Web Browser + +Colors are also enabled on "Web Inspectors" that understand the `%c` formatting +option. These are WebKit web inspectors, Firefox ([since version +31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) +and the Firebug plugin for Firefox (any version). + + + + +## Millisecond diff + +When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + + +When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: + + + + +## Conventions + +If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. + +## Wildcards + +The `*` character may be used as a wildcard. Suppose for example your library has +debuggers named "connect:bodyParser", "connect:compress", "connect:session", +instead of listing all three with +`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do +`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + +You can also exclude specific debuggers by prefixing them with a "-" character. +For example, `DEBUG=*,-connect:*` would include all debuggers except those +starting with "connect:". + +## Environment Variables + +When running through Node.js, you can set a few environment variables that will +change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + +__Note:__ The environment variables beginning with `DEBUG_` end up being +converted into an Options object that gets used with `%o`/`%O` formatters. +See the Node.js documentation for +[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) +for the complete list. + +## Formatters + +Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. +Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + + +### Custom formatters + +You can add custom formatters by extending the `debug.formatters` object. +For example, if you wanted to add support for rendering a Buffer as hex with +`%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + + +## Browser Support + +You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), +or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), +if you don't want to build it yourself. + +Debug's enable state is currently persisted by `localStorage`. +Consider the situation shown below where you have `worker:a` and `worker:b`, +and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. + + + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example [_stdout.js_](./examples/node/stdout.js): + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + +## Set dynamically + +You can also enable debug dynamically by calling the `enable()` method : + +```js +let debug = require('debug'); + +console.log(1, debug.enabled('test')); + +debug.enable('test'); +console.log(2, debug.enabled('test')); + +debug.disable(); +console.log(3, debug.enabled('test')); + +``` + +print : +``` +1 false +2 true +3 false +``` + +Usage : +`enable(namespaces)` +`namespaces` can include modes separated by a colon and wildcards. + +Note that calling `enable()` completely overrides previously set DEBUG variable : + +``` +$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' +=> false +``` + +`disable()` + +Will disable all namespaces. The functions returns the namespaces currently +enabled (and skipped). This can be useful if you want to disable debugging +temporarily without knowing what was enabled to begin with. + +For example: + +```js +let debug = require('debug'); +debug.enable('foo:*,-foo:bar'); +let namespaces = debug.disable(); +debug.enable(namespaces); +``` + +Note: There is no guarantee that the string will be identical to the initial +enable string, but semantically they will be identical. + +## Checking whether a debug target is enabled + +After you've created a debug instance, you can determine whether or not it is +enabled by checking the `enabled` property: + +```javascript +const debug = require('debug')('http'); + +if (debug.enabled) { + // do stuff... +} +``` + +You can also manually toggle this property to force the debug instance to be +enabled or disabled. + +## Usage in child processes + +Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. +For example: + +```javascript +worker = fork(WORKER_WRAP_PATH, [workerPath], { + stdio: [ + /* stdin: */ 0, + /* stdout: */ 'pipe', + /* stderr: */ 'pipe', + 'ipc', + ], + env: Object.assign({}, process.env, { + DEBUG_COLORS: 1 // without this settings, colors won't be shown + }), +}); + +worker.stderr.pipe(process.stderr, { end: false }); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + - Josh Junon + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/package.json b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/package.json new file mode 100644 index 0000000..3bcdc24 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/package.json @@ -0,0 +1,59 @@ +{ + "name": "debug", + "version": "4.3.4", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon ", + "contributors": [ + "TJ Holowaychuk ", + "Nathan Rajlich (http://n8.io)", + "Andrew Rhyne " + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "istanbul cover _mocha -- test.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "2.1.2" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "istanbul": "^0.4.5", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + } +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/browser.js b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/browser.js new file mode 100644 index 0000000..cd0fc35 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/browser.js @@ -0,0 +1,269 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/common.js b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/common.js new file mode 100644 index 0000000..e3291b2 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/common.js @@ -0,0 +1,274 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/index.js b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/node.js b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/node.js new file mode 100644 index 0000000..79bc085 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/ms/index.js b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/index.js new file mode 100644 index 0000000..c4498bc --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/ms/license.md b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/license.md new file mode 100644 index 0000000..69b6125 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/ms/package.json b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/package.json new file mode 100644 index 0000000..eea666e --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/package.json @@ -0,0 +1,37 @@ +{ + "name": "ms", + "version": "2.1.2", + "description": "Tiny millisecond conversion utility", + "repository": "zeit/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.12.1", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1" + } +} diff --git a/server/node_modules/@serialport/bindings-cpp/node_modules/ms/readme.md b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/readme.md new file mode 100644 index 0000000..9a1996b --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/node_modules/ms/readme.md @@ -0,0 +1,60 @@ +# ms + +[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) +[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/zeit) + +Use this package to easily convert various time formats to milliseconds. + +## Examples + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('1y') // 31557600000 +ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 +``` + +### Convert from Milliseconds + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" +ms(ms('10 hours')) // "10h" +``` + +### Time Format Written-Out + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +## Features + +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned + +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! + +As always, you can run the tests using: `npm test` diff --git a/server/node_modules/@serialport/bindings-cpp/package.json b/server/node_modules/@serialport/bindings-cpp/package.json new file mode 100644 index 0000000..fbf67f4 --- /dev/null +++ b/server/node_modules/@serialport/bindings-cpp/package.json @@ -0,0 +1,113 @@ +{ + "name": "@serialport/bindings-cpp", + "description": "SerialPort Hardware bindings for node serialport written in c++", + "version": "12.0.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "keywords": [ + "serialport-binding", + "COM", + "com port", + "hardware", + "iot", + "modem", + "serial port", + "serial", + "serialport", + "tty", + "UART" + ], + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "@serialport/parser-readline": "11.0.0", + "debug": "4.3.4", + "node-addon-api": "7.0.0", + "node-gyp-build": "4.6.0" + }, + "devDependencies": { + "@semantic-release/exec": "6.0.3", + "@serialport/binding-mock": "10.2.2", + "@types/chai": "4.3.5", + "@types/chai-subset": "1.3.3", + "@types/debug": "4.1.8", + "@types/mocha": "10.0.1", + "@types/node": "18.16.20", + "@typescript-eslint/eslint-plugin": "6.1.0", + "@typescript-eslint/parser": "6.1.0", + "cc": "3.0.1", + "chai": "4.3.7", + "chai-subset": "1.6.0", + "esbuild": "0.18.15", + "esbuild-register": "3.4.2", + "eslint": "8.45.0", + "mocha": "10.2.0", + "node-abi": "3.45.0", + "node-gyp": "9.4.0", + "nyc": "15.1.0", + "prebuildify": "5.0.1", + "prebuildify-cross": "5.0.0", + "semantic-release": "21.0.7", + "shx": "0.3.4", + "sinon": "15.2.0", + "typescript": "5.1.6" + }, + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "build": "rm -rf dist && tsc -p tsconfig-build.json", + "install": "node-gyp-build", + "prebuildify": "prebuildify --napi --target 14.0.0 --force --strip --verbose", + "prebuildify-cross": "prebuildify-cross --napi --target 14.0.0 --force --strip --verbose", + "rebuild": "node-gyp rebuild", + "format": "eslint lib test bin --fix", + "lint": "eslint lib test bin && cc --verbose", + "test": "nyc --reporter lcov --reporter text mocha", + "test:arduino": "TEST_PORT=$(./bin/find-arduino.ts) npm test", + "test:watch": "mocha -w", + "semantic-release": "semantic-release", + "typecheck": "tsc" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "gypfile": true, + "cc": { + "filter": [ + "legal/copyright", + "build/include" + ], + "files": [ + "src/*.cpp", + "src/*.h" + ], + "linelength": "120" + }, + "binary": { + "napi_versions": [ + 6 + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/serialport/bindings-cpp.git" + }, + "funding": "https://opencollective.com/serialport/donate", + "changelog": { + "labels": { + "breaking": ":boom: BREAKING CHANGES :boom:", + "feature-request": "Features", + "bug": "Bug Fixes", + "docs": "Documentation", + "internal": "Chores" + } + }, + "mocha": { + "bail": true, + "require": [ + "esbuild-register" + ], + "spec": "lib/**/*.test.*" + } +} diff --git a/server/node_modules/@serialport/bindings-cpp/prebuilds/android-arm/node.napi.armv7.node b/server/node_modules/@serialport/bindings-cpp/prebuilds/android-arm/node.napi.armv7.node new file mode 100644 index 0000000000000000000000000000000000000000..9cbff914bce2e08b370ff7a931c613055a94cd57 GIT binary patch literal 93432 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%0Ai@W3k)pQG^f28l0M zINfDU&o&EJ>1pj`dV$q4yqCh$pOp9rgz>Je3b*d%9j@|g3_Yqeo%W&&n;-M)Lx9%tIg1fvazI9LW7Z$GWE4~UB@+Be>hOf8b-w8Yr z%Fi!0TgAJc+!ymTc zFWKY9`)pHVjaQX4+rhL_mzYi)Ry4Zqoj-(kZS+3-gtzL%-z85_RAhHtjvpWE=C zY`Ae$v^+c7@S|<`DK>nN#6$ACgfVt0%w;e>n6WT9Fu5>!F!?Zkm~k-UVG3XhVQBeu z1xyjl1eju&5|~n$D`CoD%3&&CDq$wWTn%##%(XDr!`uK9fSCewBg{0IDwr8CvtVw5 zsfL*iQv-7|%q=i;U~Yq%3o{Sqc9=V0=EK|xvjAox%v~^d!`uUNFH9ZGeK3n)?uS_n z^8n0)Fb}~jfmsT(4CY~&M_?X>c?{-pn0lBeV4j3o4zmL0DVV2Wo`G2j^DN9NnCD=g zhgl8t0?dmr4KOdkybQAjW-ZJsFzaB}!)$n2j)vFmJ=W1G5R{ zU6}V^-iO%?vjyg#FdxAD3uY_KhcF+(Y=dcn!IRz<*5NSSV7kK`0dpjb7v?CKqhXGL z=>gLd22bEvSjWNif;k@M1Qjlc3l8>R7=AE~572DWu1 zPy|4Vf9-KZO65OrrW48ZLAyRcd+vj;NCyb+d!Vy`;NJH@#|$a_00#{b-0y(r2Z`W- zM+AxBfJY380R7c=iV(gBIrR$)XpCy}aE}ZMe?y2kmm`D1Uli;?`+TLa5$x~tiH%Gi zf@$l--|ss&LfPCuk3X+p=^*_7ymqDEm%yJmTk-o6_!Hk>51hauI?@wPBYFn zpQwNQG-#Mn+ecBupVTo-{ksQJet#l|q)i;GB!{G3w4KNyJIoLgS?CbzUw-0t-z5L@ zCvf-4!yh`CeCTy3{mJ|s@YPW*0OO%6f>f>50n zS)`%+KMEYdYZx8xjl}8DZzN7ffe9aoq2GS)S@>fhZOea9=&XosVif+NNOXXu2CI!j zFi6J=wNArCc z_=KmgmQQ%rs(kjDtV;j=%~55jb-G6+6RKAkHqfe0iH2)Y;h{tOgdbQD(|_p?5)PX0 z{{uR_4nZ0Iw~i71xvU@bTS%!r@`nTE9c57Dy~TRzjH; zaCwv$KjpNvXodVj`O7-zzSltB{VXKg&ocxB9b8 zLRzgPqd_4JR6?B2Ic;g?}Jn*3?!Gd>cfRj5aB>~ z{=si00EJY(rBr0Kp><1zM5^0TUSU03%EP8$OZi4=>sNkK1ql$T>Higkq)4CPq zBUSiEY2cEGQoW_rekf&IzHvfPhmZ2elwPeiuVQHX@&!xxmT!Voy49ApE$J7nW=r`U zNWWGjiS<*_ypmGnQfTzbi`J-R_f)F1?A}WMl-(Q3MM!y;@{ZJ+73~#Pmlfr&)CEQP zsT!1dl^jEwv7!j0vm_})+Kr;KB(rHL!HVLdf`n$FsDKEySJFR9-&K@XgrY0U->%^* z%HN*LXq{G)G*X$B^cjC3EmmO?OMO+?$I@FB_K8*l6!y1kstSkLGy_EhgmqIzc#=}8 zFd9-D6!r>`5X*%ac^^6xQoRDnC_U2Sl2j$S0)2Ng~kQ6jIs*U|dmUc>(#L zqJ>f>fXI~uLyDP5MN^bUCh~|-#S}*65FQFu%9kiyC<34lv@C>4bxRQ_^ehn;E(Z{) zS!thJV9Ijx%T7Jzlz#ow`u6MF8^>W{PfP+a3B)82lR!)YF$u&Z5R*Vm0x=21BoLE8 zOad_p#3T@tKuiKL3B)82lR!)YF$w%1lfcGbzS`>+KLuyZg}irwaRI0ba8Z)OU~kay z8(QD!j0@-oxb`Pq(uKSgZoq>K@uUa$tkE5Ip~udzmVOwFr=EUnjE8U}8-Ad|EsPL9 zy1BkQa9?1`y;{)W6vWrLZ^A-4uZ~;Ah?EI4ACBK!5AK{Vw*gp9i zpO>dD@WO>SxpsaV+Dm?!N6YjHkK!l2LpHAQ!p9r>fGr<8zoazDZ%mvFw{VMroj3T= z1%_7eKIJVKDEW~r=pkH}V4JoNpOeHre1$kp1qyrqwkm$GxSwpF{0$r|%W3r^!Xx>`Ta1*uZ@osBH(l|Y zPX)q5cqBjR8@9o3Tx7$u%Wq4D%wL^~LimCBQ9Y1sB%g3PEFk%?bmeEmiKk_V!iN(Q zzVgWva!ZPQrMLuVfBc%P%z&Q-Qhe$r_Y`If_4~pH*&TTZsv!ajZKkba2L?6{FV!y5F2!jm3kR7;b+Oh zO5?77PE zl;QSOoaMm1b0x(mi$RA%PC3tCRt}%?QwG~;z?;$`{S%>dSPHVp50p;UIcF7Cw9Q@w zft%z@^%LT&*Q2L`Z)JJeDMf|3Wb*#@x0BOO#)tdDT#=7~k@W0HyrH7$WzkO_qM}eT zj9#}Sw7J?V)*p1f40k6k%e*9gP<(fma^{KYOL5fa%E3?ExFGk5nF~HWhTXb# z0GnIKS-(%>(tjqrNl#h!vEFf+b0C}B0RNBSPkwu@8M5?;a|SO(8n-s+zV}&NVC3b9 z`vdp~VTi_&%;w_2Kt~G8vxV*Hz~&Bq$CY%XSAUPp(XYBLXhJ%E(BZ3jN6IJRmjNeU z$HHyZIm&~wT%#}DgLJ<~c__Umo!$Det}QzSG@k&bcpoE9Lu>0D#OISdc54;FaEPJb z$BF4b6HYuoB|n|@`yPHlU&EjRw!43mp8hlOk!2i;G7edabVFrKLs(=PUq?Ck8{u+% z^0F*PAJF0GhbVgwTbvgVC+D?roFOmCI8;V2^S&Ed{v+Urvll`hk$H5&pYqt$|KM_I z22G?~u8xq)X_Tf-E_2C`Kz-@&mCX)>N6Kaz%6Zh9a5=SA zvYcOn&XUcCwm4TI&XkwJadKD6INLyHm(6DQwI!Pu;ZL%;6Yjy<%p%Z4%BD|*Z1y57 zfHwbwt$jSC_*1`VOAbpA9w~<*DAUKQ!ex5-30bCPprbNbZT)`WZI!25rRRs+I+VZN ze2g~XhjY*eu5m2ggSKh!2NOUSS*E>v!~I|l!tC{ZxT^19V)~xQ`X)ZC`;rlRt{H}Y zFm!42F+(OG{ZL;hMtEd7T`1>$%fscoahWVF&auV$H3|La$#9%cmdH4HptINa z#qeuOK11P8_1zurZzZdi{xY5~-R=ATSUdChs){r2pL=hBivj{kSe0xpxNm^OjT^8U zmsX8fa3u*Y(YnR0){PrtHLf*?yVWFGO-|hlRkTV1F0pD`TwAr88(e}*RX|AG@_v73 z=H#4v4XE$?{&7F&oOza+dFGjCo_S`u(Ux_yVw4*hT{NKOJIdX=eBg?8*n{k>L{EHp zqNka^3u+&g=!r!1a~2oT&l-!OE5z$x;`s|_a%1hR?#7t2sL7_Q-zD~QCO6m4dOUB0 zQ{5JIX10$^^t?6@o|^{z41SI)8J2JA;dd{(dykgp+USY~ctx|Eg+5*0VCTz~S@5AO z@d1e*_7CM0Y;9!HZ1XLRVV8NI&r|lYswqA@UgFd@*N*OPUh~$}cBgv}!Pifw4Qgk1 zt3K?j%4w)Qs{0$#1pC6m+NgJP?5L^i?V8*Wo87H;Tv|J(+pl{a--*4Q$&0A_8xdr( zTr$aVrH8HiQkU3~UR}hqhm*vGVuFXwF1I@b11(pb|D-B+};8HaM*N_32Ud42Rp372}P zZGC!&v}Ca}c`<3K%bT=k-caYuyZNgmPe%qD9m(x0$7uHeXcCrBD&p(NX!jDO?`d^p z3#Xd4@N~rISv1(TH9QZNe8$8NQ=9s2{c_Z_*C1a$H>Ar)d*)K^`KknSp&`Up$ z!`EoP$$YC{u+P4y_3}vln+po--&-)^caeBa*(~UKJDqOledo-MXmX#{%SYBXpY!I_ zme{Ym*+*HezBv&;2)*fb`UZanxt&Zp(N8TQfbF!z_!J}>`cuahG zb=?{NTiqNR*}b%ON4ukPjF=kV>6)_AogO&5xpw&D zbvyl`ta0vby`>xBI4#_r4dU9?`yfd;_13D~7Z@j$FJxR}`zilRo#vntxAyjQ&3- z=2Uk-ddqDcu`%u)$h-$#s~BtgsM0!PW8GUx$Df>(8WZ0|eb-OFf%Ic2Pa@(>Dj5?$ zD-62^82{;3ebMOK$7vkf3%m677H(Y_09Z=1%ew9U%*E@&UPt}L$h zJc9NdO4^^D-*wIi=#LP6C-iq&`t1`vhx>U?ixk&=c5PYJX%C#;wHJA>af&-vI(>QX zC)y98on~qC5+V`B|_6M&moA@%cMbO>=ZEZmN`M1y(78Q5BXZ`)`M9=Pix#vNP z9!`7!+D*}+A(VSO^SNe!UX=rW*mgcR%vm@L{n1!A zGy`@YFn`W9Fay>AtnsA4=FUIP*xWdH;`R0J>EkAuEG#%Nz>gj){9N~2@J_b*f0jXW z1vE8t1DeXC4bA7^9c^hkGH5P@CRGv8ESqg;I>A%9UgH_mf3$lB_!Z>={`6U<9&dnG zV)J-DBaaGb+KvxsnvOJiya3)LOY=lVJ~N>yI4+=x&NTV_4ZLkE%>$OE6@Q_N_B;TZ znqvZ*$}&Uq5P1B@qt|8)Y58QkdqR^sDxg_*n4xI`&-a^eNTV6;?g&lE?0}~5P(yPg zc=DS$Kag`6zeD*Q%vgIH&jWeN-%y(79Ma+Dk<59~;j^Jz;HT3!x<-&r-#Cr*Yy5Qj z+eD?)-%cX^az9;tcsS|w;d0WGetK_Par0)RV;hbp{X#z-d($Q%&tutcNsJHCY}GU^zbzv zPgFYN@f6be?@KSeBR0z2jc?9dE@UA(;lcaMHB8T%) zIdOinFM%v_+^^t0DwHN$R~nW4f8G5KFxk4l@|4c0?sa?jU)B}isP514R9Pz=XR&DS z<2zhtwYADDSOc&dD4*u}>t;o;qd|P=D;w`x8;cVoinuM%F)wykdiGrQH`i5rC6TQc z?~2LJXS@8@`zu?J-k@~iL4G`G#ZWW%YM)}tUx$zB&;QrWA{G`4=Ef>>V6(E_5@>z9 ztTKmTdjd-p2Yq?jF1G)J7nbwwe5-tOd1l7;BwL4hZ3n(9{%d`tz^R`>9q>^mS8alA zV$OFiHcIq^u>-2pVZal_dFcNwkHIq^-2UQv=K@oCJCKEJ+%U>pF)1kT^zBV~&j+vJ zxk27srsVlS!`0T8f?J4g$c|T9KIPU{emeyFx?8{}x~<`J0(hEdN#Fd~$g!kx-mmX_ zHs8`o4^H{7;Jcjptm-#j@5@X%BFjxVj-?#3i*a;i5WlsDK22PJ*ys$!5shB9Z)4gO z9q)<1(^@<+(!GcH6~eCq8CEc-*7tW8m7r(Kyz#l5xndD;rH`?AsqcFiRaGYNi=4@- z>rJH3+r;r?AEy0)GWDmolJy#N)^QR&HPFA0zDCi>7{4X(YM{;LUFx)mXBW0RGQjBV zr@Nv@Ha-h}*#~?l2PRsoj&ChKC7S3tl{y^MlUQ)j0B42fJB5$ja9evcSvG??4@Yia zX@Ymc(*YCP%hc)B@RO{P@am$z*QovM987H;9k2GwcGrTZ_WqEk=HUiE*G+=oSQxbT z{ISB%b-Tb*+ZY|obyIw+ubA&__rH8gU;o5YX{wKWsdCEkjD_9FGqX=b=noaxJC#|o zlpm+IC`W!>ng%9OA{%04OY)f0cZ^mHG$RJy z4_ zzb2ahEb+d@gGpCTByioMLy;Iip_KxnYjjrgP zGZ24z5Hg9=&j-`bqpW|V$NuUlp>QvXnoSAj>{~OVj_94z9pP#|cb=%>SKh&Ar4Ze@(#rg(9XJdU|6-8S*$oFvC ziPM!+!gxhP44&d>b17fJRi;gt%X#C}4Cdpay@aRwUwg#ZudZzD!ko6^c4C5puigc_ zFy6$kG@f@9C3@D8CfFwyMn728wbIzEj?sypQ>0hpogQB%wR|)4_he#h;DN}t6d51D zoMrzOWbU`J`#|T@GgKa(Pz8U1jHvM{(4l?y< zwPmdtlwQ_-Gs-%f@7Aw-Cr#;V(_Hsh(i*lf<@ei1eJ6j7i5Wf#Z|R4L8Roi2Zi-Js z9LlfHA>bxAPp4l4O=7Gwc^!3Jc9H29E4{YChT&5lF8;u~Y7@n!^aZu;&FG5aibaEL z+Y$q$K8p{u?Q%Ul)h@rcb#3eJUF^3(A^aR0(;)i|GMo({*u8iJk<{} zb^Sro!*y%tyS2;IZ8GoSy8Uw#XW{jfrE#URq9ZoieNMQ{@tbRp?Osn`c5X_RZDnbk z>m&7%E0bl#d{0lBvYWQdad&0xkFPatrFf-$$y@HtTA~s?cSm9O%(G!wtF}>QsdJ1JEzy}7V35s zbrWoT2CN>K=0}2kkpa63nC3@IGGJ!_ z+u6ci&VZc^Y@&rdmj)Z{mIEuWu%#KWqk#GI^T&aCehYoI3t5)|OTA;-N_}YAtAjkh z?~m_)N`sAdrva;ZE8tbRLcDU^`@oazSu0vNi>K$;lJ~E9KZZ2P z-k;M8rZ$gnLf>Uv*EnhLbKE3+WS@`b`3uqyfp&(4d;R}k{r8cxMMobwnWy?lfwi%v z=#a*P4@f@%K2zZ**(*QsoA{6Z`5kZh9bx%3GLC9|X&-3#tss4O_-qM3?kmWV?75dA zhqL-Qqxtpmf3bi5`&<5d`TVgf9)HbeDDM)|#diq&H|3`}eb|306+Lnq&ePAU{rUd$ z+FrQGCZDHdLtH&=th|$S*$?sib|+`y=d^L}a`|LgjFGH8UNn&X7mVrE=_ z1b&Ip*h}VHktp`krhi0wLoW6*X8ex=)|JBk!rcP`e<3o^S**TQQ)+FdXF(s8=N7*Bwd5-k(Sjk~id`6}-q zv;MOZny?+cWH591zB=c+=c>+(1*)?*MtD4OT~|D?uU?%)V}yJz`BJsE&RRF!34SFr zj6bV6u-fD6Z%lnB+4?p=-hX{t`l;^&w!TdpsIT-PT;DzU#>RMcP~P8Nv_I|t3w)&g z*e7HB)W*9tZV*3GeTQk>IIjDvBB#Z4jufN>9p2RkwY_BpU!E$mlmFy@iKwzIGUGGHlSMHZGwgN<_E0=Bt@6pn)Mwjir1k8`aZ=VLsb)N<1j{#ez!A7}H1FLX@F<^S583VQkZ%gu0ITbU} zSe4I@`BKhX$dY?Ra#T)Z>vP=!;H$o}m#+Xzudwy z?Q52mmtWrrs_$T9U$2HH=zH1jR_NG+eX_}QHwU*IJDO=<%Sdm<4sFoB+IfoX>%QvIUz<_isA6c$Z~gkloW;^%Q-@r49qGh{ymI;S|C+RXJI^^XtzNnA z=YyPu7eFt0{Q{VH@5xiToGGuzNe|oSSNKlie@F&DW}p8BE*CSU+2@@}lZ>NVn!c+# z$e&9#;pbzYrvdN!Q(&Lv)8B-Rl|Q}`SU!3CHdbZJ#}3Pu{@42B<1ByrEV0&XcM)~< z{p0Km*aN_P|9D6S>|S8Le>@-!mh0XH%=eGK-yy6sx$Z5%3XrXA-TDkzJuu%t{sLIo zKfVfBsy47^%Putj@oMnI>-{ud+3uy_`?m4FX|P=Px4>#@0$!CD7~A+Bc-v66t@-)( z?@iJqr@MGAK;LC2C-lK{+^0z2f$y+iSqEO&PELe>e|GXgkGE5QH_!g;WC3!OojezQ zkx-tGdUV97^nE z82-g(_!-0TGe;2T%BtVk9yiUS8)H#?kZgA}eDile2U%BAoU6&E|C03NcIbX=_Tzq> zs~tb%HI0eHx!P^q%;2*g0Dgiv*W=*(c(Ru}VI~Em9ZE1l2&De=@;#^_88N|6f zp5UE8`BJL~dTR*Hwmet%u#biJP|KCY>tiTZa(L2v-b`7RAkc_J1W@w7CX9o zZ_-4&tA)u%G}qd_Z>%vrMEcU$SoZiCnY_SvYk`r8u@Q$O+ryCYp~(7ItjqtBSXY)8 z>oPPs?z5sP^yJm;*Yh~p#qL3Sq`C%r>mYtzer@Y=y{*f{6VmGvAIjc0$}+%~mvy7G z^44aQ_m6xx5bKiM{PHxC=H#0?_-*tjrP)}Q!@K&gu`@aDZ3DFrD4?$g-b(CFdg0Sc zwu*l(CQWVU?`6BYzx{EZEJwTZl&9sB(*8J`zL@lm@m9b3*&o-ZH^hCkX4>{%x;_lB zGMr{*7(Y5)hVpe9X#1zOH*NnYPw7Qw+wVd-!fk&L--$1bFZ&oY;qmlvWYj@f#P>eS z_YTW9vZi;juRq1`$p4?=ac>5X1U&w!b}EX{|3(RXzG5fEEK{ppV=BkQGXnph)(LD;?dv>qQ?unk0eY$y( z;;L)NPjm-ER}|14Bf7srH_y^-lju3hr^{o14|JuX+a0>)PG5e%6x|chI4y;(jW zh?^B=!2SlzkDHCpfGq~*$IWtph5PG+!2J2j&XU?ghYnzu?U@ z*l4#JSX&|}L(?9{FZd65$I_>c;deB@>*-^E;HMaxd?$^;YRh)T%4kb}{vIRdB&W-eG(cdoZ?LdFE7suoGUR!ag(&!6uKaGB+y&fI(tC&sGzLGmApT?2% zdG1EK=B~<5@gB9)j{JN-p?&xM?by}OYD{2E_UxF(YK>ua_>&EcVc(N3zOqr`rTBt; z9-nV~*Z%pQXZfCL`8Hys#aDAd@$DjAKF(h7-IHHt4DGkTRkvw8{k)oY>_4xg!BHI! zq;!aiXQ>EXG}?R@)l!8q?> z8`Q)e{fB5rf6jF)@MJ%8!GDt8@iXRvsrv@*qI&uD&9n7A%GS4Zi;Vi(x!^yxwe`)I z3!bAoWXuJnWBy$573hL`<+`U)uisHG%>|bMle`|YyffuB89rfoNe>%-;#}~TDnocK z$QsZ6wk*>Z8~;wS{Tn*lwOueyYyRiY4Ic+zbHTeq{(SHc8L(}E`SZcL3|JvBe?C}~2FrEF1M}_vg&D9MUyk4l5(>b&B@$cTVf=OAPEj{z@p zK6nIa>UZOL4r9E?oDUY0o;e@P0xvutY=(b-^TF*r-cEfU&;I6veg%)URx%FEcl zZ1*s}eOvhyG=WXYc4wh)VO#ktaQm~Bmy!N+Y-P=*>9+E^$*8Zjm9>6- zGi>EV)gi-H?m(JvE3ZhaSFT$?y?k5wTVRscX_j}Uygnv9Y%8;r*H5&SQI#RXR#w=u zG+kq4pmvZySDIz|wZH!D+sf0y58KKd@eJ9@RlqZC<-s-&-&TIWc@E!J?w0|37npA= z_sM|03Cy>ZQ_^6$?!SQfwsPkT*bBf4tgW1w0b2&lx0MCJ!nX2BV3Ci_7$Uvz>=@{+ zEf;|&TbY~2E8BeteBV|MOM~UQ&A=Kz3V6+bSG;oE;oxQ3$~bAVmH*ntS-2eC$h4LJ zBR$hrE&(rWD@)c%ZRHU3Exg7M1Gm35 zhGNox&Kg6(k?FSbN?YIMw!U?Lpl~ZkD>GuIeKktP{WKf$!QY~|LB@4ju^8hE_J^l{&A z`fCh-2Nt%IDw}U7{WXS&C%@i0y?yDNeRgt92JBj3zMcFu4VLR(4$QZc zA7sGh0V}X}^4$#B1;Bhe`6jTiova4d)*9HhrpJt({112zcJjqEUfJ%6;QMy+nKW3g zdpxj;rvqO2@SdG~4!le|`7~*=lb7@S9r~VWC+{IW(@vfVUf52?;oqN~ywT(B)L+H3 zKRX$xtz;*UfnOwKCvWxWvfT=vzMbrPr2jlFws}`cCOi8C14NV7qJmP%sl`EXjJ(eaqIh|$`Xk>$H?))Lm z&6cKVccUkMeZE6B<@h&|)DLN{vNVOerRVbnG}?PtF!+b{xx~^e+r`*CKcAJ*bSSp? z_aD-nWof4GoSx4c(Bwl?v3b@HWH8s#bncj*&kL##dp#sC-I>x!n_ZP_bl%)=VfMJM zo3*^}JmMEyrP~SB+uyITDg#yv%-^rknE|^Pn7?1+?F`s?z>2J$cr62V1~5PV`EmyA zWMJxhvI);+z{-L7@z13hu%m$a_Tupj7<=y)rtS#r#j+cWy?6pV#s5U7ed{`plEqK) zzsy+K{otx?&*iE8`rUIPtSP1M+5ajQbJuZ?&3b!o$>D6q0$Y~RGo2QV^+neYoc%$O zi7#o7F@0&l`?Q&4tFs$A{~^4U^(v!j&n(V%4B)pIocy#qe1d)S-E%m zsuwg4`lxd)xsgQAsNBSo)Eraa7`oa@jHGK0`>8o!otkUXpZD@}CgqQ|W9ArBzB!b& zZmdaL8g;(RjoirDhg^3X_z?3?I|p_rJdy*P$?r{YswZ-mAYSmsxGTr(<1D z4tqwtGh#N+2=ZL0vLf?NV#sE_B-4VxLff^0)ef9dyJQ@qBE4d`mxxu#FI-1xbs&wzV6Wbrc3 zHI-9`dHtMgV*ZQ_mU1_ZQ{Ra$BdZ0RU0QH7_`Nf9He&#~KajCy5Np<)&xo0`8Idff zNBS^tSfo3z+$okGPrN87`+8u#!=l}J-$q-e69ZRY(HTFT?Mv}qNV}~>@3xX`byj7i z*=sj}?*?Mp%|ng6w3phu1ESV>U>*B5OQG}5nHM=d+8@2LNP3m)@hgBfNgFHOPg5R4 zY`WV0yNgPx%K_ABf7Xb9K|eBQAzBBS_Dc;i`98_{hauPo$ELU0=VH=jKN15CKIxwQ zeu#9Pi}G!W#@#M^_NjxjM8EgiC&#^zXANh&ggt(`A_7U^W8H4`y zw{c~=|Zt1XmWo%yf ze3J5M=6p(gi^PKLq@(*f7Rz?Va}quJF6BFZO`~>ys&>d%jMw$+n=;n?3U_g#_PbQ`*oC`*UlbI zl`Tbkm6LxbJlSmM?FE%=KBfLS*fhO=Y~#=Cip)5#GU?pf^_(X;eRz_XOoXC!mS`+R(fN9`@7A=cx>uSfm7+r9*j0qnej!uHam;=hL27C+deVRM<|2({c+IrcTTmg ztpEOc0lYH%>&2u=H>xcxv%h|B;eLOmJUP?Iw?Exi`6KZ}Pa|j2%h4t2P)s_6{^{Gh zTki;`ejn*6`bW^!-UbP1}0`4fiz|nxcT_UFuPejrYodzRDN#%cQo_yWjW2=LV%~dqb-^w{WC4 zy1&Qw6DMcD{t3+Y6L-ph(Z_CXJUGyu`O}T=>;hh5l&HFiuE?iKL2Y!0xReS>;dPB!&?9=vcp+0W(GvyP|g*`L3@ zHkO6|5yM~Cyx5$Fse+&8`tr3(see4n>6wz1XepsRjbAa!^DDlEZ#i={`MKveMOx-H zImPP+CR!R9JHmLY!6W|W;Ysh}*yuF;?|T<3Z9OvTy)LVJUDLiTz4P;?_I~fQ^j12> z9Z}=YXfKcE3Mu7FJ4n}S_?v}sQ^!V8AMaYyX0*2 zd6fGpGzGf^G|_EDlkLs~Px$-WJbe5P@Edmu@aJ!3^5B1?7s}pBXI0J;zI6`Cd}q7+ z@I8ue>4%Rql{Ae7`qsV>J;T1)1mG1Dj89e-E%Elemyb*I+(7!g2~JN1zEp*y^}QVT z^8)r^HJN?!<--y^R|#jN{I(po3)tJp^DTa=$F}HHA^YNt&l`6WPTm_`p8xB(2LdY^ zDp(Z1BJP$0>#ddU{_rkD$uTbd9Fgd8BGcZ;yn_fjZ;zwuH7$!fVmY&{@~ovi9vx*6 zo!b3X%A1#P9$AK+7k=Kc&X-N>3#6adujMS`O#Da5s198l{n^C}wD;{D_-LP7SG45O zwMCH@`BJhI(o^|5gW&nzsgtIb7e?w+@Oc{i@Hxll_l5Yh?UG8~sOksB9hVP14x22Rd3aHqg<^;nL9@_b%{S z|7^yJf}tCpS013`jbf^c}XtA zc!uTDj9eP++)=#de?P#}9o5m7%O9U`OufwgbhipP zFH#QqjVWwIHgc=l4&C{#cd^GOH|RT>H+L|vYX@I+Pgy!-v`FXctEA`n7JE@Y#gZK4 z@7pxrmR*Uy`|~%IskA%2OjWWO&9?~(3cpThSQ z{Rw@@v`NyNB)HNWbdkQ2?T!P__i2BZ0m}v!`O4S}$*l7eqf-}w7oq;XUY*Ogc2b~MgokvM0`ZiALOP2SL4x(K*u=dneyVNY>Bpv2Dm zB-g@}k?U6Asf|WkeA7mw+(*D~>k8VT={#^J%x~q>EQpM&5VA ztK!3e*Yy7yUIW3KY-!f#S=)lFRo;5#|9(Kz^tPet0dJzE`8b2-GH41`1~k#P49%zD zZEP-`0v?`A|CjGLdH8Ylo2i?pcg&?#W^B9Xqy7=R#91c4ifZ%Jc|47AS3&c0_3|uu zH}s>I`zy~4>E*CQOIRP@rc9aocsTT#`Z%1lOnv+(wEwsIxCQ(+rjPUB9oEOOYTws` zwrYCGv{jADj}Dz<@qK+93Vz9J0e<0&2LC+pq>s)C23ByQd0q^@uaD&!d4J70j?{{P z*RpoQs}ek4ACIs!|rQmH$ANK(s z*2iML!}_>}y7~I3GW+`2GlBLy#^jee);#wFSNixN&v0xkZAwn zw|wvl{8HK2Z1PBc+Iw>jPczO1_mK&A80o_M5Ba}DKE1Wh3jeM%@@Ucc$y0Mwd@j~~ zY8}tls*o>6-k(o!a=h_>MwIbCh|$YeD3tAnHpMu#74%(u;OF5#tl9$~3BN@!jrm$9 z*8cbeJpWBOR31N0?#IXd@j!SD;Qa$U^>II4<7t7d^BcfsQ0F&!W;3=cUa7jiYI)zu zQ#Pu0Xg zLijW=ej9oGaBcNgc&J}`J{5L%cXZYtn-^rjb^uoJc%aYGhm1Zi1TQ=`U(2`hJCbMK z-$qt{M!CD@Tv?Xq#DB8`bGE#Tx2oQe`CVRetLh}{T=CiSJy^cpAHK|cZ-r(mZId@M zT74Qc@f{+E=Y8f>V-IG^ubo)XejCqM21i;~4|Yc{+zt~v#MXB9C@>&)x@u6=H7uH)k)s-@;9$e@RZLOFE{mU{RaN63%qia^FBcM4`)?7yyukId04mN^{DSWnQ0HuK9F~wVw35J*11dmyN^^$#vU?C(BCm z8_v$6t@E;+T^(enHr4t%eaxgGi*w!hl3!AebGfH{JKDx^5=*{QTg`G>nhqFn7Il4H z^9P+RUhB1Cj@zv^WUk#5cV=qtt+{p~@>w_6ssD=eQLnRZqIk*q@RU#Vsl_kkET)e? zoxImue9{&dg5MmPn}4-MFgN$^?!wpg{VT=e^5Oa3sgupz96oP?uk$peG5lxzwDLa?WL|e0^8##HbL|%0lOHZ!GSSZ4 zN_f5kz1lRN{?a_kIeb+tzTLL}z2H@ylZ~SzlXtDVEj2^_XpVaab-GftoKM)KJh|Yi z-lePKkxj0OM{?a&%t3X(*(tA77N0`wAU@!%N4@ViDvPIaH{+FwWZ6~F9vHduHsPN7 zR%P+2;B6Z@|55MzUH|($@B5UeOP5UJ|0o*Jg=v%}NgGcaK-`A^8i@Ctv%urM3>;tu z;Ec0+cMbKC-p!$`RosWq*w9kB$ADdY-8%xj_<(aw*(`lI`YhfNbSmC+9!Iai`ReQi z@klxz>%}wUly|UGUp6>0*j=Uic2*W&Nj(NTw`y(ORk<{m;`CfkRpH!XVp+viTk{;m zedAV+5#(@)%J*R z>X)2x_1dn3^6PstIQj6|g7TNsUsf?UpT3K!yX=dfR=JDmi;A@<&5Nay$9T#lK1J}+ z`sg{prt&U%N}oI6H-BeipJjhlt|;lUGrIRhGT!!z0U7iCU@h4nC%1-YZ!Cu0iDP#L zv(~%`>*kyCA4pN}?$S}zLA=^8^YwP~?i}tO%Wd9o$w=)%v@SIxEf!Ku_DP|UvTc^-u;%OmOJ%- zMV_8rhTr*F^gZI@UGy=*6{lfL>nTZIRThaneD-^r+y0KO3tj=AyP-dxe4YZPw!WTk z+3e17LBCO3U!in#^=jp(_~@pA4W3WlzRjL&_p7dr&&eB#pQhOMOni3`}g4cvDLuVn)$J8?Zd#s_WNYM6_>w~r|P4=qjehDg88|@x|`}m zXYuOvYo4l8A?>a{*BA4hYsR4?ZOk`Zt~ozauB$T2Rl;}Jh9Ahc?%9*BpK^N8Z&F^I z>|pxELG+IU*@IEaUCc4hr=10j#)Zv!_BSp}5}dv{jHm7m&Ac;Iql>TXe_w z+iywUQzNT)qzzZekBSWbjeMfKOSY;$U4B%}R@EKY-NEvsfO+roqj;|v>daJs&EXq+ zo|Bgwt$tawTg0kQN0xa7vFcXF_Pj^3syp4gXMEkh6M1z^0|0t&DhZM zy@Tj?j8r#J{=6lT>NcJpJ^vHIoFd1|XNMY=d+fXCkJ@+kWXUfS&cdydW%6}AeB?07 ze@70JsN+cg8^4r&YX*uk+|Bv-aTV{oKLHGR;G#@J>v7CmcUSM0&wS`QZJA^TF5_Ecnd)}4<$Wq?iYtrv^z~VG&E1Sc z<-o$@(5kYaKec)NDY)O&zuWaP`0DJ$hWuaWgv637z>$0^Xzz2mqu^XymIKJI>ZF8M z&!)bz7~gguV6v0y@3JZE?fS_!?dyMy8wXCeT9N8ZDhwISid(Pf2l6W)^AF?2F)os1#7RGM0zu zD{F!G=>TQ>GvAsohR3GIe}u=%3?8@f-F26}BZ9HAiSG^S5qVw=yl?yo(Q)9x)1@#@eDDc(^S}`3}qRFupe?$L)Z7 z{V^oN8KkK{ZozY7>)kmGk@|^m7`<}_Bp!$kZrvyL<+8nFXI;5>G+DQIBzeW&PV(}- zC5H(cs(TT-&6;+9b>D{k`|6&yrfu#@F9Y6JclZqEJG`bnf^UD#%KtAQf9(nzUjNBh zTlaZZ?^sL7f<|?J7ud$?F59f}M}0v$Q)2D&5Wb}g?|FRa>;Lq}38M>dc7+y~s#g^)a2Ns~NoIfQB#S$| zIx}~BK3x_!c>$lxqQ+seag8fe>3Ob703HHe^GhBNwO~P;j#C+>u#t1K=iU}8>b}|bLw}d zY#oD2T5bTB7z=kJ9q;-3tA+;tNdaSnFAKkaIIK||1dYnCbzrSoy}yR|=w_k#=s*)6 zJp?@A?`!e#+q`wqe}msRG{B#qW$+W=ZIA5~&8`_VFG3R;63}!;4bAT0O@JonbUglWWMbT_lspjbiIeY9s0`=80T2LnD^v$hHt?i4Bw~Vt2WVHTEyP^`r!oI zCO2%PO(s(2jkSq%KHMf_e?pu5+O~=65^j?hR{waLR6`SPlTE2xWNjeh&X0|Z&jC+u za-zle+oYF0`!%Zr{K{1Z|77sgCJmPv*_Hg>;GALGM11@r(BovgY@Ss^rvRF@n2V3-HLL*-RHm)oS9n(Jn8NijJp=+b>PI3Ca(l8Ju!PM zN4dWwpH}u3`{VN_e0Ok8wQqcWGuo0lJ|E!ePD#t3;hE1K2tSU!>R%zzQ5{>#CWE-kkB zzWyBwe$C$k{K~%={Kvra#;;!)*_9k>aGnNVK85)B?a{(}c>MYk-x|LvkgtbB-CiZl zZN}-tvST-ZHBLG&`f9)^Yhz;cJ{`vOKB7F^wZH3FZ}}2!~0H@pX_$?L$s4U zx1cjVHSEVIXAkuI6p_PnR_+noB1=chK)Uhrb@%9%f~&a<$*(y3?9D07?~ccgGK z{?jkQyrqqLR82SgL(AE>@fYPYQ1PMke4;;*{_YLXucke;zbt&l(cj0yoU*4Qr1x*Z zBayMMtZA;Z;$hVddt601TbTE#Zx1GRt#A3$iUBAl{9EcQ-dbxBER4LECw6R5xJMVdq3GGjpSKWdcQ8{fN%62)Da=LF$*6?7`E_BMXTz8hlV z-Z{Zfcvm0!l=}k0ed_Wr*k5>e&_|}b zPxKbU=N<4AR}{_5mPTzWf8=CnYVHbXDsM70{{(MqOVgS`b2K!mKL#|*78;sm;Awq9 z?Vvu^XEVv?abRIzViDi!(`mLCnZHZA-;dAZJ+ZyXr(y^5{405@A6KG371E*DhX2Pj z2R%}IOW!BbCaw1T*FEexEZ>BEhrpJSM^fi|kVlGk-_ZY)&I3>JRb$t3+_99S?Z!X` zP1i^Uxo!=3lJhw{y*_B=JQVzrg#muy)kbEjqi^RVH}lS2jigKOCh^>89cOb^%1IP= z+IqeUegpMfDIKQX{(h11(r@aS&s=jub=)7?a2-27XMDacDD(W^n>v<)r#kM*GhD~l zz%RHqz>i*L>bN&}{nc@I(pATAa;W2s{?EDld(qy(k7~cq@J5f=MjI*4+s|2|v+a4q z`R;Iv7h!+b7BRPo@&5we96ZPU2YC=nn%s>2{VVWh>|3+Fk3E82&OzozM@G4Kft%2O z)*-t#_OKh7j&fgDIrYDE`VUO@gQSSB`}`*AZduE(2wpV<&A4OEapbsLcd|c`wkhYC z$G9=^QZsJoOuhE?x9dL#fxnInw69-fBB%H zpUHQtEx%uO>0yHZMpD_UCh#BaRt~yv{%+MnWoJL4^3~kHm&LK-#a-KyMMVD%LOHZX zuz+;->KR#Z7rFMvgn7;&PU`b)%P>v+D* z{*y8?%eFGBJGXzC)rDksfR))bR%SI8RuDHbYiB+nne~#c^?$#fg_Oy$^=$mQcd^c) zsBDcI&ymd<@XNXXcHTIr=lnOKE%Q2^Vkb9Qc7f6ve|0Z{lf05RcpX0z4|kHk=lwE% zwfyGutKpa2o3Xb?{aU_2<%Gl%_5E`8Q(Vk5CEMc3D#v9K=C%8)$U!<&cUpS={c{(G zQwHhB{ye2S8oR^iE}kJ>dxbg%?bmWO?+$*W8OMV?GvWIev~Q~_8Yy0D$EoSi$R2bQ zX{^X~-{E{l!5N|ceWI}k`+@g9GEF!}_fw9+IT(BJF6j=oVrR?C*w0b!3-D_DO~9+E z((u|9ycL$FFoWiA%Ky}WCR$-=wgm4POOu;H^AI#ORRK-q97DsPyzntg6VIS&f+lrR zK(p*PL$e8ZuBG`VJ8UaQxi>;na$-PJc&wrM4!l2Fn*U|c)IrlYH=vn+w4wO|yz4DZ zDud=CXd;yXP3LSwvl6^oOY<7<+B+!y?c(g<8PHUe2Q<@XiDtC>26*RNn&&g}seq>K z_<*MANR!VC;GF`^eA;#zPuYL*Y9(D`|DOCV0;avMf_eJ;>;Cn(5gO_5O+2N)6@!ib z@}DDKU*&+@!V>tL48JWcza#0-X00;U9Rhq`(&qqIpB~Szn4ijVG-*?Kj^a0opI?@V zW&M}sQd^dDY+0~PUSGn#du92OblJ!K;G1vxX}q6Ly5^Tg4!N%QXdD>LPkH9^ z9PqTiQ+8?q@9I0sQ+?+yXlnKkXe#$HeP5I) z`7q^>F8VQngTPgtCA*dk*bHEiy#m>F?kd^kxPJyuy6^ju_wcRqoW`@i`uY8C;%M7U~;CsUjDv(nmp>#KwYGhl4adViDG=JNrH3!|CRlK*H}5%Svd>#8TsCYE~;!B zsy7>|yzx``8b60nw*otllm17ySKat8NARQ%}L)c@j6NwLHE*(>wK}=;!f^CQTe{1p5nRfNGC^U0Nw!KkE^^2j@Anbf%V3; ze{cZ%5c$8)i#Rt!+Ui-7ZlKZV<=6);b`)BZw+!|uXb!+~8 z1!r_>iUNJF9B1_XbMRUh8@pcdS7X=LgR43D-N@JP2c6)_cIjI>HF11;y?kHsIq+16 zCwcZa&J^1^DCT*!`k>{hI(-XGxm`oOo_FUFQ?ABGOu1H2F6r+j&|S>0ce&a%PW|~G z`HR?lT^p^}dDeB<8I>_UmNG`nc>&GQZ(v@wCT-r9?c!T6Y$djSKK^l%HkJ*Mt$u`O zxLsf1?jO~Q{}8&lv37iSir9?Wdk63oZ%?A1A8$`yMG)SElt4@d6{4@3KAEf(!{f**{U+=FgY&$H7 z=|;?n8|vc=)}6!W*f ze%93+OFN(M_p?ujo3=~w>~Bss2mXHBZOyyiubu!uag&jA>Lw%SZ>XR8)qT|CUVeY# zm$}C3pTlXidkK77>Gf0X9ii`}$fp&XC|eQkJ706pg7mETUDFRrd(!LV+r$TLUBWi; zQCrXZHc-#4Y&{zWUD_g<$Y1c+xWemOEx?RDJl?a1GpKXq8&iMTiq0=%X8Z>)ajlil zwFdqdaAgnYAQ!*=?gTGv51Ut~*U4|E`QWMUzvbDVJ^YGv-|s#E{=OcmK92+Q+wBnE zlXbR#TxrU6t!=kr=%(`1IGh}zHJ<@1zCL*b`|U^4AG7I~IoQWs{)2FUXCM8xRK2@C zr`(>69N*pbM-w0E?PYzjm-{AwH?NA#?&^(r@2!819ov!TeAj-5#oLSXK}A^xuPZjY zcizC3-l735idA$>bH3~C-K3@W2-YZWH|6dvihHVUJlW*BOt#g^Q zT$hdho*#W1Pap4Pn|7m3yG3om*qe%tad(ysk@t1LYS8ok&IYPKOTO)t+vu=ex6gBW zx>g4JK2BEK5=*SZM%`#*vvrC`qW7{jn#ZSN4&yoh{|&A~>@dX~rve|Ixr4I&oo zN80~*uVHVm_{9e~i>`#%6nKfZ7w_auhR0v=&bYH!V^L$R(Qjn$`3+CJBOjJ~n0TrV z&Hu9YBSzWZ^Y8j}>QABmx`VvWCbGZdbWd(heWitY<2H9mR>^lluUXSdyZioYzLWO9 z0#4>#ax*%>Jc~AMdnIVorWZ_`DqroPP@R0)d`X&Qp#2QKELGp8?%tU`j&!Ue+sLm? zv282A3CIuI)c1eJ^gB;}qF>IwLCGr@c`2@vy3odHt*p+pvTCuiDt*3xSxq4COj#AG zJn$K9VVSa$?uGv+;32+sC-_?G*m1>-mRWo|#1eeJ=alDyz8s<4#wMiSHS3=bl)q`@ zlI=E$5C83@y&_82{(m2KIj|)6s&@eU>zjMG^!aRd@8v&;ov6=fZSidzGyQ6qX~&K{ z(>MRHivIsh(2kW)ns!_dUhA)o{i>K{;Jx7f6*;d1CcDsSc^RF^buR{9uq@yeU1E5> z4_-5LqIo@o=1k?^8qiceW@z37?{-Vmo<@`HRzj0{I-ps`pP0&j`a5{nS(+!)XmZ^n zp(%MPpebBrXr2PE#?m~PK~oA%2~7dNe0~Y~sp5kB z@RQ%DIHdd!*)GLErve|vQ+gsk6CX_PBc4Bk?KmF3>JLZoR9`7k{1Mwxs`w+eV+HBl z>6o)6{N%$%EKjvd1u&IC`TI8fSkm;ZIHaFS0Op*Sy(uj!!_XKCV zmxvd(L^$61KW(KkQZi`g&hcz~2d&|IJdn?1@bkTW0cIW;jzRi+1Ef={hgw?zUyak( zbkTqB3G^^}yV0q&;0gajo?+i134WuUb4hpR-zxlEw+p6q zv2%A~&VR{>8U2d3YT!RB{54AKWZ!zN#%}p-sUqpiC^t{-x|xjyYK*k$N0QzOkN(zw zO9ux0Cc&#>y7ebK+HCjUx6B-?gQwU3ud{tnIv!g8J(7A$k5wi=4saA{9q{>;g?VFS zt@S6+! zlQah(ypuI#^()0bMi8&?^IZYF0r*;I6fZi9?<78WFb4M@3)>DnmC=udJwq7_t`5o= zoo~vx19;_I7@HEAVBnL`iE}8o>N>{qG2`SY_fhzy>HtFQB|HLEc;O?p`c zPwi*(_a*rAimx=!Y(>ySB zLyI8@?siZIFp?D{m#um*tMU zH)I)}B?Ao4GpsDfNsg@HW!^WvAz5Z2uU6!xwGQmTq9o((BKXV4);fnT*Ef`={ijy0 z=kaaELd~6nJ#v|MhVKksShg>GsP+FqR!x;gR=bKnvMsXszHFZYzvR>azp%pKZw1~C z$f*3=sJ8|h`7Y|MZR~&?wkBP?hJ&MVRdv$1=E5s=a=>fZ@#2;1js#DBn~^_v?C`y5 z-#2&c@*QrU7~g82rR3$ekIL`2&$FA-KI=`nO1e$C2HN(Kjndjk<{D0adoVeq-tQjF zMtJ=2PE0cvc4)pDGd|R{(C5>(RgCNL!T4A754Dx<9rMzd-ziPs=zfc1@%y_A^C{}& zwIg#P^^sY~vgWuzmX$M2yDSB-^>b7AiZ4vvp9fcWllc1m7jXJ~2=eXZ+n3$>qW{d& z|Ig4r2EFXWT6%RyXY2p|Hu7RmZ*YIx;ga8sjo;b!IPp7V zS^pfiMLufB?uniR{o_o^Cz<`&9c?FqC!6T+Z4KYib~>=P{@r`?89e1<`ggRQYI#rQ zIZq5zjkt))dl)>QBG1ElI^@|O zzRD}QQd^EeltFr{`##nl%Ky(?#JbLmXnlOkL`#JDN+Cau5vL=o6myw1_$K%&iyPCYz?d(|}Gkkk-nWl7jw9;?dGAPtM$vCpqVOW$^uMbH{>zze1m1 z4sI*=y6Znl)ZcTU5g*@nJoo|QXKA3L)2A679R;3zR?!T~plO7rZU2C#X&*x~7(D5q zKfcLsM@W;*`qFIKKitIV$a0?lKilv<_#HwUcJTbMHhj~T;U@adjr@MB4ZkI(*IygX zrjD6yxPY|GHXOlvTxJ{Ix z!;i!#qaPOZ(}t`2>4&>}W%zk*xEnO#Hhk%Q{3AQ3lg}9~GVL)5JiiUM%Ai>aP0e;e z8&(z=nr*<#Y{NX#`fI~1($$8k!L;Fw=!$R8j1kk%BDVj-|JBleWW7JgX_5WwWqk#U z(i7d(S=9dhg|C*5aTc%V|0`bq@WNNU7(V>I1us5k)Yaa31#lNdovXDL5hu^F*w=CV zRM)vSFv*oQW@6iBaDY8+&zEbnMm6fRYEI zLlX};gCY+^H*+3{V^{Mcu}>OUs}RovN5^J!SI{RZ?svQcnj8Nxqx<$5#^!4N#{QKB z!i$ZH&3>OUeGnV(Zb`ZH-?9~oqaqXCZzY_S<6^V@J2%%;FQqNdj?Lzt$4RGB-dy6D zNCZJKQeTlD*f{+Lg$~m&acydn@NWG)`Q? zdswGOOFwf%`Z>ht=REMt9>|gwe40hX-g{0Y&C^5APfp*1`}N8DwS0RfcQZ1s$}d!2 zl^J<`yORDhGRP}B*yMErc$&|N=Ew}1&!MRq9?(<{GBmTmlP@Nk(hQnTXi~!hnq>nF z%|YO)e|5}t>PPUd{wM!eKC9j9;B_V2en zmf^Q;2=CoYJmx>)^F^sxq(w1}TgkJPJzmD{n*aau<97Og8SXtK{)vBuE_Q7bZP9&F zJ8Mt2;!NnP>YoDkrI%kiz2|Rn_b~J1nX1=X>Q(Uu`}KJCm!I(e2TZt2c;1gbZK!?+ zQiibq`cuZEQ=r+<_%e-hMr=9%PTqS^&KG&Ajw)BXE!Pb^FQ;7Lxk~9X#GwWa-$Qt% zarzMb@W8cE&mOh<_Gyjz&gV>k*XO`FWwpie`=01*T8euO)c?fm?sZY-WM)sO{)_V! zuPi3Eb%)AGzP^7qMg0OD^J!z0BTTy-e24R1()DXIXt#k@_n!H*E5A&qT?9UMg1rmD zozdcRQ3jt}_>_EQ<|!(F;iux0<6Z(@n(mW!9%(AyK0JSH{&5R2&!2K<^udLl!%kS&(SYVe^{&75Y?oPTnns>>%bC9#}b=t@;J9k>=$j-_i&b-4g z^WN?~D8JhLdw3|0p!iVghUhM8XT=kCB+pb<$X@}6jXcwd6& z*Y7{PXV$OL_R$ouUy+yUVr2EhJLgpAx5SS+|B2@<)cMDJ{$6554tMx12VeavRpiv) z!THX+PI8LZ+WFjTPB5Qi5B|b(&X_G??$%-FI)Ao#nix>}JWaBD$ny64?17x^X?r{9 zFHNtQ{_+TTl9}qE{^RnkF~7q!oF&8vgGl47>IFoVqr;K4^;eR>u9>>!k!$#Y@JK2-;Iy(1L#>{)kZ-cRv(AfSRJWnOR?|E*h zeCvU!?#p;C{)zdgeq#Rrh37%!|L#Wef79mQ#Pi0VnE#lc=rcS8&+W+nX`a5kpS1a1 z&hvN5uXf`xqYmOqYxhEri97S3!ae=P9*SwhWX8Pp9MTfRk96*PF#cNIc8Qk!0asnk zTxH5&){rM2Sk*0k_hOpXPRyrFrk#FhpRQ0HLi%2SzPJ4~(D$YXjJ{t9of(xop`c=~;1*1%w_+F1PU+MgiH58<0+ zO*|Zn%a<&P=}VTUu(xVsvXqR%@j3nnf%5*mxWEq3gk}9)2jlXe1G!CaGIHAqJYUv% z88l0vX=@2+ni>oZ_wf8c)?-QQPuAZLFtUD|r!VVo2mCZy@8-*zy=EKI+pEbpQ`XOt z_J1pD{*?Y_%X$SgVOjqMxkVZRxpm%T}{WNL) z$@*^6rPs)VI9d#!YcT6?!M*I6W8PcDxz;k~X+InH==G$ypGo6g8-9rTwRr80EVXYV zSgX!yno20asqlnZ+qu>&QLuyl#!1@@sxDcHXVnNshaP+K4`) zy=7||J5zJHBf{p{5E?(vpf1Lq1b1os_h>u#JZA$B%YF!QELa%GF?zL;bKN8O&YZ9RinO%$ zvt#(~q)X<*dHQ{2SKC*@^THZzvFt+udoddEO{%7w{R-vCzQOYF=TZgG`|t9_KSMs+ z-`?LnP`XnwPOPRGp5Z;BImnIm5KkW-f~UNP%GXYrK3KQS3K>*U1l!uvr#$TEAUBL4mj^lKGq z9q@VA!qDBceO1R&uJ9hm^Z9ONoJ$d#(|UcQr;oYr??`vNvn9uMf5qL@&MnEZf5TI{ zHGMa;MkX0_G5&Nln)260ot`@GuB~et*plqzJ_P>nVI?%l%M&fvz%O6psmGuHSkbpP zCLGtTHum@FubZ`B-+zTjH=nk7`aa=o^lYNl+s86shXX6Hu!l2X2Lbc-y#-i!ZFUB* z$VGwfc2*nR{WEwf!yhwv?E$`GeuCYU2FrDK0oHgyz-#`QrtjPW-Y{s?f6Tlh*S(%J z)tw;d!h_L6`OqUO_&M%n7XJ{Q;vwBAg}=9l!s>>YPW;XAy~PHifE5NrzX+p0eh!^&L4*MBH`-beTY6RhDU;S zUW-08M-#;pb>|IsKz*6ML5$PrxZ>3WI~TU%1JFlw7Ry^x6kL0KbU#ipKB;1SeqVbH z{Cx1eJJJS~vQTX?JX5MQodAtK{*xsK{ohvGWI!~W%`pmoF$=-|RpS(-CBoXu5C21X za9yqUzbn^MK8JC%cTi$QZ*12U;_vkz(q)I6W8=DKI?ls&%MRE7*Gx{>djuPhkM5|b zTQ;INe`wS@mvRbus$Lz~){=RqKGCFkO1^sl7w@hk$up8z(s_e)I>((&I(sLIdyAYU z9or<9Oyj$JOJ|bgs`Ute-KOh^=30j&Zl7zS{v$a{rg=sk`VNb@^F^CetK&@xZ^zBFNCN4 zxO~6Q`*>(Y^EU4nk?!q<1Xj@-IZW;NZ_*psllu*6!doFcbVR)Kzccy0LfYG;H4p>z z`Mpfq?Q43;XS^FZ&9p%$^5tAm*$cqvql?5NMfnOSUs%TX1J9={$$<&>$0h3HZTWpN zo&T(n>A#Vg>ToBx%0qHkX6=yQj*tIHJ_~F<;XHJ=hT3lWGLz5KHlNGD?Hxa)N8`oB zA)Fy9a*FGoSoliU;D*(usb^LV|A#xVYm;(QkW;qffr1Nq)2$~`vl zk^Xe?Um_llJr}%EH?CoI{Hk|Wx6khC<52?s{5U$d1w1z8o&;zwhmUxi3=eNSK{j)d z-TUWA7bJtx?n%IsAN5XNKmL%OSs(Q->cakvBYxFa<_qgzX^#J}%r)duNLg3%%Nl3O ze9{Dy-@)+wrOoqwd`+W!`foJ-k9(Gzh)sLL>l5S|?w7MxQV#m+=#{1%@xzJZ@_!SO zvEl^i;bi?UfaIpWAh}0BHF{UBK0(>zlcD)@I!!W)KFmt|&hKaQKaO~|=?I^u7@E5S zn&i8^latY1>bs5zXga$L&Hm7Q`n_2bm2JqQp2u=8O5LDCdd6YD<_vPGS)-Y$eoY*( zUeDaf@cL1a{QA+6UFvV4UtfgZCtt62&$~h(r^=X-g7_NzES`P@_$~9B>IVK78MnhwrEkQMWroT{FW+hX-h4(wE2DB?%dtph9qiY>+kowP3GQv^XJXX zn>TO%?CgO1kCp+x2ffkmKVs|w#yFe=XMvL+IH3S*Hk55T;*C6Au)GfM+tRPm{}z~{ z`EAqveoKCH@3&}ve%)`i1ixeN|2Oub>M(E7(w69U8{ZB#C>G3R-rJv(4*v8_+Bp24 zL0@mRT%>*1mwK`k`>t;#_F^&4d==x&SIuMUKX$CdJJ)AhY3*?w@;Co2Od6NU&e3fJ z$xc}Ty@j2izX?%x^_uU{-|t78hcUiT?v_z3c4d}JG+ zkR0z^g}>uSV`cPg-Mbe&-CFj}{$r=gyKeQ7=iM_!-s^Eb#F+mR_@0cuO`Y`FF?LV= zeJYJ5WPdZ~$H!<|ll|bDV<%caDaGz+2tba_bO+gL()Zc-Pa^;3PvHA1^t(pLZ9Ij& z_w}>!_u4JaceXk7zhl&dJ9!&m!~O^G?3eU@5KaG2qz~bKF6y^+u+^=V$1YPA*Ke+y z@j#%}GPmQ2)pM795@BUq@%I!lw<pb58&(Ay+ulH|t9ig&5OFTa( zcw&EM9(exqH+cV4$o8zoe3}04p;oSyICprbfyXs*9uE@_e4`m%ccCw$-;o~7!MHFN z^QmL+e;Iz;uqMKpkXg&IM?`vf_vrqjyML?S<8T|oG5)^SjP*7{JGEZ3Wuo9t&jci{08yYz@PZg+Qaw_(S7ivGc{+x6%X#eBO8#z>FX26 z{dXb!G(l6JUu)I-{B`g@Mfg*nt&_0^L!Z40{8a24(BET4pTm4oJFky3wR#x( z(1?UE^r0ZaXwI*tK_AE@fAj$_{AshVuy@PY4U#pINptFcqj0U0)GVfmj(Vq;B^B3 z0q}bT9s%Aha4gguI6I*6xgR*rGiW%*S%))4$6J6e5%}G}HwpZkz`rc;eZcDk-Uu9L zb~HY>0spDMZw3B)f!_k$fiH3g`_@@N^Kfu=soaRS61iln_NZ?C=e_i0G1Md(xeLFWG@Kb^RMc^j`w_@{+ z>hek8#|bv3qVlp*k0z|R&q&6PF_99cSc2prAk zxLn{+eaEc=r@7L-z%LPZOpKlLgmxd1|30qS2P)@#*aKjA2&Zp>76|;Wz)utS7;wl} zi$iAwcM1G$;MWQKcfcb89|r!cz~2BqB=BDY|GU8H?vLZS&T|0xYJvX(c$vUo0)C6Y ze-8Wy0`CR>roev!{8Utw%Kt3zO9cKj@NR*30iTN(85HL+;AH}T6nKZge*|2{p=*lM z4jk_wH2izO{Q`dwc%8t%3mos^v^cH6pBDJHfxj;Bdw@>}{4U_VqRdUeRbivP4t#;Y zZwJ0q;9modd%-pSVc-`C{3hT#1%3l?yyw*7TnGF*f!6}RP2ku&IrbibUjaNK@XLTd zA@CaDpA&jm1$@201Hiu|a3655z$<`XF7R^TUlsUv;CBnW1o-y^z76=30{;^5mx1Fu zk>gkmV>N0gXSLjp={r|DIBVuv&=4*Bbe6$bMizEMiqJ#rxjM>OBX@$1Q2Z{gj&Rni zc?|QMgft=Cu)cz^FjvPoYvNAO?UbflW74O2j6~CXLd$1CJ7>8_vsZ25td2WDCX^+U zvCJ&&Aa6k&6czht&D;sPgZTDn8TD%(qdMPxeHMQKaY1v=wba* zdI*2})8gow$677Q*l{dk*@`O4YWF59+Nh?X)do#QHSQSa0&vOQ&jv3y0#Q2JbF^p#<^@LMH!sO zMpNt&C!0*!%h-fsZ$$c3JNAk~X$$I(V|{6M{9VPqY4*NjS)-aU=48Xu?H$Lm<{9?p zW7*&gJN{Bt(@gu=TsAP%K7hZDV7GV8W&L)0>s&TzcYu9()_T-;mO46*jm$zZCT6K4 z^H}XMKpT!x2T<~3(5T(Vs6$THcZ?HK7@@FtDWsc&6{S!qiwd@<76GP5qWU7 z+T~;;vz?Gf$bqo1Lv5MMnj93lojkf7Dz0+sb5M*CT!76c9ZGmEtDWOSiJImRyE$t8 zT-Kp^^pVHV9JOvP8=d2XU~1>$! zXm1a94s$j{sl$@oA@K$YeWO`&02O)eo6fBjaxIV2`}wEXTE^C{jY!aMXk`bqO9DTj zBV4JM*cf*rtWL^{l^Gh1(kjR*n)eXpt(Uo5;*UrSeG5*B*jcwEhwZ#aszBu|O7~1Q zW|8Y>@No-r?UdE7nXE@9hND)sb0(XxqF!N}f`xp)P41k|2W;tRPn$Y0ozX5TSsS69)6@uxMd-jZb!Y|~CUkt78lJ&ID$ua14o+uH zgtn<_|8&-Yd(c_0s&r3h{VLjMLRE1aOYL+-Xqc|z;+5vn+NJ z!iFt!pTb8hMI=)Dpu&1((zr>h+N-cS>fDX!+(<%byG-s*!TGrpl32-bVFlNRwOAcw<6+(7hg_j)JD- z3aoKu@0I*0hec_zvk8mbG=oo)&UeeCh<#cEg=|XiOxA6a8)xtyQuGlU>EpN! zoxTmCpNT?c!j`1io6&Dla!_x@UO$r!D)tFnh?8nZSLjW(_sw9nY4%RwY4+9`Y%mR~ z4|Sfj$JBYk9#iLWdrY0t8KdfqZWvW(^ui9(>>iamL_eX!s@gJxjge+UottMsogudN z>C{a-Ny&SsQ{NaMbY!|(KZA`=Z^Ue=-Yz%T`LJCcweu0u^uAg0&@A3hrd(GBlP>gW zx-cBq1cS9dxZD}n1t@8|6>3oj`QghlYU&o73hjvy+GW$UhtNSyEk+21 zQGp88k}fo83f)Y)(4L~SA|uj;p%fKrfe{WpNmGkDO&8iy<@Qt_Azf%plUvhxQ-Ure z==T3>_4&WQukPn%tXW3?z~sor+GI2?jY2kzLO=&(wbO>l63}s3?XaM1w%b?} zp>0+*Vq+bI_E^<68|x=@*s8YL*chQ9o7!T-_nYZl-X;gdFb=-Q@tG?YG;+QL zoxh1=NR0*|tby|zF&$+rcTt~=2}HMyDXH2cBR{!U=9o}6%50d!)YMB#JC2h`Q2!1| zZILm2JCS5aav3mR)X8i_^9WhMCTvkBEUd`_@pM^K95(2+IKgAs0%HJ+gsSz)>5zad*IMx> zhQUIwD%#*P{PYYtmuF%g)W8)?=$c6082>PAVATO7(tPVBxlyu&Y2L;eOemg7PQPqG{Z^TS-ZUgCM{sfJ3Awu*sxxC5Tu9P5E0F4swXn1ja{cK{Xg-j8gyL1uPH z#SdOBT)`OJ#=%I_RWTqBQ-Kyyp6mEoi5}AL z32K7O`XqT!O6eyQrN2B{{v0a*evV^6C`X8^$flm!q=~CtoVAKJf$G+Cmd9A$ieVWM zlmVGy49aLVc}V6MS=*phB(!EpA?2godof***?{Ck8mK4Y)sYG|SxAjrEKVfvB#%Ce z5b=Tf`F=H(bg|R>hgfh zF;Rxfj8WMdC8bM72~jr41bOyJRESZ@fp{UxxxqpeX|gzxyq!FHEL4;}t*|&3i2SuK zRx6VpHc{DzWx3wUN2qL2Dxik4oywhdHIpw$XKV##M!C?WEpn-4E8<2Q0Id-@iR!VG zpX5|)EIG9=RFsPN^+m2qN6tN-9H5rz;-N8cIiPN1F}3+Ipa$)*GlXRCvtL z-;g9MDXkVrU_DAKDJ>S%dJA|U{Q}qkvI9zwjSb1vH^;0B?C*rNLJP+v9e$l$8K-F> z(rbA}u#Spo4cB2=fvRhQo3s?@JnhJy6dYO!wb0Ypp-z~sab<{B^-;eAdE22>+ENEB zy0m!vJp4;67Zy@&wy@GHst1gyg*S2JJb+o91>FjbS}Um`3u@{_v{tgmFq4y{|4t-< znM9It2}vRrdBDQkEh-Snxq`9Z%s&C>s!bL=tsq`oL{V!uWSqznk-s5BZ7eo9I$ys2CDN$NO88p(+y?VQ)3 z=@``Bg2hw$%U&$cb6GHk)FkrPQ^m|&DG%8&&kyA$l1$pT^Ng?8?QNkTjeQkR((t+$IY!5nWm+FTc-X!niT@JYYK#>r{WI9!jJ6rrLU7RX z1*U&GZEy9dyi-cY>blO7(Kj8&+upCjHagm-qY;%M6_W|McN&>&_%~YR78MPsbiv@fYo|Eur9Lz)+eKRhXa{b=Zu+tw7T#M%%P9$X}J4 zRF2JtPL(%Lms_Xvmgzx^HZ$aw8N7YQg8G?!bcS3zlaI|vC&N$A{(WwK;d(Mx+ZMoD z!P?j2WFtq*^kRQef>k3Uh8cpUCqokH31YNRpK6!XLF@uaPNW_n`%`aGn=HJ;BKJ_g zMhuY$jSY3cF`vW`A;uCFlah!S*H7aa%V3WA76mJ#pxgtEU!eSs)cV+@qMY zSiv`|4?dDyXXTiW_uDWZ&(#K~b}M)y(>^e^@nPyf6BZSw1w%NPG?B$=lhrVy$xd*> z--3somsNZOG%7p6wAM!E*{Gm42T&myYEO~_+9F4ukk|?bhMfW$ z{93t;D|Rq3YeNIk5JK~L3G+!5X_7nO8zwo7Nb>*}uoD15blMz<*Jnf94BOO+ zG&W{)qAYdP>l?AqPs3gpd32ITFLt<*O^Op4jFCr3QE?QiUU8x%*n)wS6tzAL7J)nl z$YVrNYtvv6C`mo_`leKMG8GoVi6V88M_;Nsk&4|(CrUb!CXc1@(X<+rW|}-Ujn}Gj zMCElVHH+#1Dq4O2zRP(~8;=*kSl1|%FwzA5s6mBotO%xz-XlRV)<-wwxl38c`yY%FbkH> zqF{kNM7?Fg;(%{G^@S#x*3Ye&jHj?J^5~Ok6%D zu^YA3Y%}re#-dwdcwdBYEb5_z|iO&OPD7~2WTpw{95YACaLZjg_8 zSq^LhEvs_DtVo`Ku|;Nkm3Dd+21z$@2mB(mH0ljW(~^*SS;{BFORPk*3TuGF6494)fJXSC_w@CCyL|>OmS){BMFBE z@HfD<2lIv;P4wxQ>~2+>A+PnCyu&mNcEYotmLdWx+j**Rpx2m!O&ZdFHYtjp@0 zu(1Ks_7ST(Xk+7=M?LLkHsM7cx`xdOPTiRE*jTTvfaHZWpEh=?K}!(?SVvn!&~E4g z#*KDv#m)$c%+QXt(4zhOu&zv3R`5(%`2u+>D?+Soa)qT7(6FxDLUC!|2Fd}aV*G8Q zE`k|G7xfuTwO}Bi-Obc`qC6jP4T?Ma^m;hepfyL?YFUAb)pHpm6mlf>mRosBbF?0@ z(sgR-KEpq~KyBofObBV2y~eWES!&q^23Wac%G%D;F^XY>fm;Wn3@`|4&t6Ku9}^3x za)#2+Sr%=Vtff6A@dgfg0g5g63N zba1L`ENwTXg&x)N^%xT{7n5MMobVkdF5)+Uh^E#ez{b zi?$fl1{z;!g^#NPFnUTVwgV#ClD~&M2DD9qVeAtko|LDx7wmMVyf$u6_i!Jk$LJ1N z>eG~xb_mC4X&aI3m>G6Sr8F$ltT95*IO(}MAYo36Fx07ELY;utOKP8lT^sadY=HLC z5VS0s?o>@LRZKFsY|&Z|^GcX!&wU7Y`jvjSKQwGFT2IL)(qxgBo}u&5YL zg>3AY6ZKf^m|Zo?_6R0Svb`sb_S11Wz<||(_#s;kUgvdS!G;%zHrPI#Lcm*~aEcQ% zuvVIkVJyc>o^H)!klxvhr6^6Qcohk$V7=CeSr^u8sj>B117=-{6HF%*2bk8Ujzboq zX>u#3UASKyuYVmtb!n|B4^#%z-GLodyFA`t`mQQa#h!F`dSx(B?%lx(JtaPG=@b#X z>AvDGdrE?=sH{9NRfP2IRo;?dxzEcMRSj{3R8vI#|BT!wyy|Z+f{m$WDrKJ1JJ)N>4D|ha&kY!^&vU4qEtl*@^=@sT7P# zQyL7g(#im<@aME)5xC0__G^WlUvPk#3gXPtp^b&VPMX|eNr=GMV;6d43dJDR$g4>rR_-kc|7Evo{ zLa=C7tq`T2?d4vN%O60U1Hp1nWkSq=XS*i=F?m={ajAQ`=Pb`@Im@%pI4!5Nxa73u zOG`bcEnA*lQoQ}lGnX!3<~dEv_k4E++vTaObno!6{K^uy-(6hcS&NERcnV99%h_jN zF_pK-m!$3TM3cG7v~;dYO2`tK7${@fgcM$=-f5MdK)JiZ?+XOa-h>8NVR_&8K8HlsZ-{WDn^669_Fcr%I ztkUmBn|Zt>dPWkdEOYPlu%K_p4tOkHe0pV|_bz*+&yw&cC^3rtOsKhcw2GJ1Y?oTf+4^|ojHJvxGtMHZV zOeYP9mupdal_s9_pf6qPnSDc6)Y>SO!rr~gWG+9UD4zQG3#dLz|3^RQ(98W3Van6o&Y1e;|I#9`mEFg zOW@nXP=lCx*9~b&aoi_v5=mJgFjL&suwRww7!1IyswC(OfY4h5!$rBb+P4#x*j*kh z^Hl}YPw{$opK?$u9?#0$&(_0u>S_xO@C2&Mp{MIM<)MR?d-FURd0yeF^z&gTeS!3i zZVVMfBPyb#Z>-u?jM{5SL9Z&zTU}9(x*X_Jv3$t=+ z&}qC?+ubF>ssK3aoj_#c_xjhBVyq~E3HEt`!b+AxGQjX`%-IOTzf^0id_iR|-J}hf zo1=C!8n8U(vur6dXetteH3@(oi589LipE>JL=f9jPBJ$AZKbZNl6gZmE&G7gVC$fPH|&fJN0P7e4Up1*``|`?3zeF+dzEWdnP#3jx@$m$9<>Sm0po z-U`@t1$J5hJFa9*Spa?^)E_YGYQzInuE7!$u=!f7nLYvkI!t8&`v6A)Yp;ht4r&kI zhE1LXm%#fJ^OfT1Srm;#3HM7aRl@$rL#59V8&QD49n z_aGm@zHc#RPlp`uMg0ILTe0VGBI4bTcbR~p?_vfH*ag@E$lB1(fO!uxmU|N9_z>g> zs7C1BCk_w%2=nhxa#n^9J90Cy`g;`1V8GlTLl*#9C-?vkJcjmMh<1GvECI)!LitX{ z%gkp`KfsBfG1hzv!e2nUWpd_x2~%~zZ7*ZpcPeM{FEG6Z%meHK-0}+2e+u;nbOL7n z673Ec0jvQW9YB1*;Hy}DkpF9__ova0uS3@XgM*L@;I<*i4KVi&@L7a-fO&xOZxIgI z1K0{!JB)aMWpAN;_~WKU|BG?~D!)U!0LmkX2N(qG2OI}vi$VXMu|GoLw~ZcA@MKd2WSCXm3@N+B^xmCfE$6B zsdM&Q7`^$kjUL1J;B2JBUQEjz#&Ld_;heE`!pSUqPh`CPWQ2d3P3y{Gd~`YE&d)KP zo5y(LIm}YKmPz5Y%sRdf`tf-tH+-I199Ue|!{uyXX}KF1@7@GEQNVcX7tq$58DCq- zEPdxONj{%h(l0=N#Vt0O7c!oH5tDK+Lc5}G)@)_m?qa;zjdm+$a#k_IilM8;j5|u1 zRODe6=MHA=EoYXjUCdhKXO_}Sm?culEaO3D8LL9ocQcDx!z6nRlQYl{*`>(yQYJeu zg-kDFQsZSzZo3Tnd^wXAUC!iO^vTjInN)TqllNZ9c+u5N+JZm8UV*+iat)J4uYq-} z1&> zV7%oUXul>VZEIqwId?H$_HFpx$9Nt3QC}P5{s);9L?3F0i#)`n_J^3<^AJbO~fbrLT!1x#e^zx9s zp@-}QJ>;*kE9?=6`(;l*G^pHKH zhwKWRvg#(jDY7H^rD>#Puv#(#Qf{5L){51@zU0rW&d8erW5>Qwx<3F9?A z%>tVF(tLm(8rSK0zkI{ZT6A1+BA}_fG{2yS<_Yw?U%nal=-T=%INQ zJ@1!q4d!F?>=n?=m*#o&d{DmOD8DE)=>yFpKMdayj7#*43dn@r)P3W>xx&8X2^ftR z?f*TZzenv`Jf)6>Cv~X)ONVB;^#4uwr}+{+hm&_tiXQL#XX$oxhEB$Qqv21AaEyTo zPc-~R5k4y+6!uf_|C1@sHJSHL;}8w6|?5O*qTGVBnrTR`01uK5oNI3nPdj8iv-*zV1$j4hT3b;Fy4u0xC1~bPfU2 z1zaTHG6C}hw5RIv7YLXsV2*&f0GBt_SHJ-Q zhXus#*;>3w0hMVw?GP|sz(oQs6EIJ}0s*%QSSDalz>t9T0yYZRA|U>nfR=xOXwR(z zmI)XXFeD)U;-MBFf9OqvxV2w{5dk}+Q1I;$uwTF-0Y?R#5KtEV$u8gm0W$^EGQp3Y z8)GLe)iJu4iJoPG)~V!gQUXZ{BqflPKvDup2_z+ult5AfNeLt+kd#1D0!axZC6JUr zQUXZ{BqflPKvDup2_z+ult5AfNeLt+kd#1D0!axZC6JUrQUXZ{BqflPKvDup2_z+u zlt5AfNeLt+kd#1D0!axZC6JUrQUXZ{BqflPKvDup2_z+ult5AfNeTQnB{1tmw(Z0< ze#NhBUKz3|erMsT!c|2pi&kA|`Un4&o8cFdonJVKZJU?3?c!C1jLph*xm>H)toC^; zgKlrIFc>KJ?pR&nuB_bb+3pE=yd@s?g-Zseb;-_fu50J&H7hGBd?oInFOcWi?yjl` zvQXFG_UjK1AA>0CHf?ZM20eiSUmzHb6P}H1E-E^IV|JFyRZ>&qE-tUm&OQq`<>U(P z@q1k5-tE487P4=%w)v&s-|hqaP+zypUls7Us>=hxDt86DBq9@6*N&PRm){ep z^m*MC<-t9!>MRx-_*bk*4vJG!wzD$0(^cvY>@N4R&{(Xp8V9sl$xe#n+EL{Wl(G;6 zP`an0)KwX*Ds~l@drLh5h&0R?)o)|YMz_B_J8M(%mpvuH3j%Kcx-$!W6&0R9e)gGb z%Bd8WdRDtDDvH51zaTryi|8(ox7y_@s4iUUf+8?Y9EV`E?6%$gC|(#EB#2bDE#PZaYnW-sPld0rAMhI z*()pecuOwu1$KG@*~>P0V`P4fr=%+AF|}}YLSrT*UT#Rd+PBMJ;W4Mq&eqfqDjuw= zME5gl-ja2ixhnA_DDjfzQSYOq8;8s0C`t8j*&HPunL3*@&WH-_=;_H>rJkU>yrMFD zNwn|exr6R?1#31Ix|W{ruBh_lZ$1}zJbWD)|NO!wuKcq;kg*_x7qe`!Y|kq4K%?A2 zPpt2*+u|-=4+|*l-5DD_yQeNfem-<~iKcngR8W|{1Uqc4J|dK~LYO9-rZY z9_1%mumm+SsaTP#U`=)5Y8qzOy7I|wJg)*YFd|&bTo@gzeLFq*F;5m+rm6m+%kIiv zmT0833W#2?q3{gX;kx99sYf2wV;$-NNA<{a0VBd#kEo|^*N?Oo)l=G&4^#LL)(A)1 z1cx<=AEpZbS@}bAKgPmelC`p=#8X)rpNxLc9-#G->cX>Jo6jxG(faiV?$~RoLu^2Y zfTIq9UcG_-Cv=FY=lkjqhpyIPwTi6Gf4oBHYRiu^^1apBOEIO14vNCcy0Xt&Q{^oQ zmixT1m1ll*fP@Lo7HdhYQ_9!TL?OQ#mbsuvYY|$VkYp3b>gvK}i6TDB1t0v^MI2r3 znb&n6da+0Q00CN2uU?Z^uGPdH*n^sCGaeRZ0YwYj?5Xg$D?Q|4*F5w^H|DIXb&Nus zTF80lt;-{Su{tO6g7RS5sy#tZCB;fN#-h+zNG6uz>o%)pmJ^5bz=$WrxQxNcB@fX}fsS6GkEm{DIwB^7^5W+_HF3&n|L516^m3!NPkqSNT zKuK9*hGkkbQD1P`;0~6QVT(ifXj1eW<3uA+L276Tex4UA?^4%hPi56EE$0x|b~84f zTNpgUg}DJXCaSTX_61zUXjWH=Z`UrLcisBp?EHKR3zh|ZyImC??~Y)Z%M%Fr0{K|X zut1%O4R$GzzPto$ciMw_-+aP?k6xPWB}OLeN@$jyT~g)_xPk$9d9ZR_Nq#>3mSfSa zZ{v_h{+ZZ?Dc|AEFF3b^iq?2ESOz?m*iOjbrEzRN3LMV@N9ZkBQW;y10>{e z2KYse0>8X$y=gm+0xx%Aylh=De#<>IB_2N+$-E_cUOjqPVQ@LR@GflP1U;I1jcNYc z=96e^k1Lj#Dm)R7P>gQtbzxVpq>MsB5-GTr)C0|r`Paq$w+B2XcHwxSrt!q6QPTFX zG^HoHS*PQ>R@<>kq<~fmD8AGa&`eB(sFLlKo?v;U-{UEz7#%S`U(Byd^Q-XbwzP++ z?Iqrz#<5SMpyN9!^?*j9%tQ;cc`8fXes^(&$5rO`mI73kz$8-4uqmcFyfGf` z^8`vfuAt9V?DJ_=Y@Q;_TeYhgTYli&Iz^~Y+xVl<$P}Tv-J#Hqc&IjjxZHt&Ta!oE z0U@*@ZuA4?3Ys?fT{M1rr8SI8P|P?AGTtS)V%hZxo+M5w~F7GGCFxKS8Av5@l0 zxDw!fgtrv456ZqT7GsyMvE3i zzNE^7jkv^KG7$?6cy{@!J+9q&$3WSKY|%!>_~F7-dzZ(nX-i!~K(xd$O${dmA1KMj zgm9xIn`0rdfv+|0g;!g??OJQb{Hnas!gj>`qCQ31*@tyEK7}#QgLjZH(w(Nhzj-TAB%+-d<5vsgM3CS~$9hI~df4 zk~-Z7@{Ia~Qy}E3YSh2WCngjDjd4$+uU>{e;fbyjmz(gb^1=*2a=2jG#jH$nUBqTqum?|O zN;cb+!~SGF^E^LnnFl)@`pdJ}j<&XA&3HnJP17oE?3n!!?* zu{$kilA*d&J_}$KZ0VYSZFU5+gBw6XRh z%j9iqHruD<6!})Ut4gCQ(sK6enP)&T)@|SD3+C_g2lpJ^s?mbv@eC%RdfF=bBdcAb zT;!vjh*el4#Va>F)55|V7?ZGg{>ZX^-CC%v_(TRrSAgs-tA!11WEM72fS-m!{0tW{ zX4wQAb1<#`sf~K7UJ%-^p%r6PS=pGf9&7xACGE(tu-XfdN!^u<$*aje94zW{DQn2) z94z?xlsqy~2Mc~%f!bC1%L|rMO;%y^!ppvCmsx$7GnsXN1J|TWg`R_!^A_ctg9qNG z$ZWKQ`1Jjd_#i4N{pLd$f?+C7G*UtKS#XS8)oRva&t?((GIsYYv4_vznZ=}R)|(oAdBNUIW0r(h zt?cHssb2ZB`{zvkMv%RG0+Zg)%iXurKKNVQu{2p8nn3;K3H(yg+opY>H)ZUBxlD># zVQus9u-ly<{Jr9})Bp4D5bv8S%Z*=^AQVk0q77<#8^s=(@iE#+{XT5-$MpT!z)Tl= zd!8(JL8LNkxs85%?jZ5T42Gd&HQLFlnY&wehRlYM27PuP{SG$MZ`XaqC5!dj&oo#D zbJ|yDF^gvZ%mMpmX?D--{hL{uy)%2iH48;}fHH(NGY39DODh0upP?!*BgObbT0z_C zxAsT$8+wF(!#@V6l-2BsWAfOwv(I98&CX$eoP8#?lQ8z>7c9q|PMc;`mY1_W$5QM? z;w5l3`^uc?8}lh=LATC9m&A6JK4O^O>a+Kbp>4LQ!}cEoi#wFg_v(Tp2*Jsl< z+MBbp@H;Xa;-(PE=hcLXxAWO3WOT8>24@@I3Qt+MmN{s*zf%??+V3cSnMHfw&hBz( z6=bhC)?vWQPZ;sC;zM3N>SqWmXFqiutU`^*Ei^&74g8aeZAivKa}Jj3n@H7uwS~%f zE&YyZzuh+y-rhvNjV<&$bguiHyrzs zypMm}$)uxx7UKKPqkfp7!zs(H50XGezem53he<5rXd3(4aYuX%ZeSj>B)+=;KnG)b z=fN_3*z<9}o(Eg=VG|ESRl;2)lMd~7Nc(MkihR28i!uKYXA)T3{6oLnWY2zrNd;@z zkLPPIX4%~*p_3i@SkXuS4*k(j{I}kLcYOkKevV{2-b1oI>|E$S`|5Y>g!gmEw#s2zXnOOGEvWUr*la%~^@A4wO!<)kC%!nd7t1YLOFNe~Z;kKY%y-K z|1A}7&iJqQ?|Y#y&99Is>R+Ybj^EI45B;)+A^L6kU;6ET2ZFLLXaCAL*jkR=xo{c# z*1~M|+`{Mz?w*qkQ&M)v!q`NVwVsS=M6DH!BiCBd0?`>D`|-l)ypKJ(P-b;sp*TbM zWzqptQufBeEcQFZ>bMT!hAAlvpB$fYvfEFN&q`SnG7i@f(-G~r>w3Z)Z=m1Mjg$>0 z%PwtGk3D}fUb4~jsT}9WE3sStG7?AXY=}CBU-5)D^zlZiN$TUx(!~5R-X+!XUTK1d zrP^5?X{~9)v)ao6nBfQS)T+k$ikz|59)FEkrH(JBi zvP^qBIJQU&x-IS2VOxtWEcMFW(j*wyOR{6oB0DAl$+gI`W5BB8z<6$Mw>->;d3a{8 zWr&Y+xrwXrw+!0aElR(&UG0>IQ+lLki<~>jWyhixUdKC8GTk+$WM+2oOn<-B&h2g7 zKFmjXJDlAg;vw$ulKuhB&cR0yh&2 z;=S95Vr&r{(OqBDNcIImXZ%&C9~N}W4Lbc(L2o-nrxznFrEfS@r*9Q>O{Px&UC=!@ z>a-n`Rf-=zS*NQ7UHU1V{*|B$zNpiag09%C)AOPDl-@C>)Bhvr+E45B7X{t-Wu3lM z(CS*9-Y4i*k4|?AIuE;V^!zFsev?lBRnT>x(`ihgwfu)~*Xb-lhws$sa|Io0(&_Dj zuHC28*9m$n?FHj`P@_XE?-x4#7eQ|u(&^1;wV6D`oNws#4+L!&;SOj%h3AU!DnTz3 z;jamL+g?5WoD@BNji4_U^!SJ#{>zY+A{k9As_uIINx(3yf(BYOBoL63^? ziv>L*Xs@7i1${-7{)V3Zc0rHdq0+ym!OG~*Je`J>)1Qk>^ga{)I}^R+SdCvS{pBY5Sra|YnHaywM35mv6Me0T-e;m8 zGSQtn9n0?-Q~2wq@IRPnHZQS#Q%tnOM4xD)GfnjACi+Yhy~0GV*6CP(+M?63{@^vm zuQt(F==8s%`gp5}zSl(m#6-VoqW^B9XUx~+6XUn@sc$6MdP9zS%^#nCK1@ z{c{ujwu!bZNG$Js6TR3(uQAaVo9HSNeZ7g^XQCfB(S0WRO%weO6Ycm!V);)q(W^}K z7ff`iiN3-_-)f@oGtrNm=zbIZwu!bKpIF`#O!N{Hy}?A6nCNN~-DsjCCi*!O{i=z6 z$3$CBNG$IH6Medg{vQ*))Lk?Zr<`^y?=2Z4>>TiB3yTl&8}~pJJkyn&?#~dc97^^KE8LghE{1c#ZG&^e6~mRlmBM-8w!`g!D}yVCqh-%dI3JuJ?h?2FToqh3 z+-|rUxJ%(KgS#B=O1Kc*Rd83sT?1DOcP-pk;I4O`Cfr?c&2V?a-2?Y6xE8o?!`%yaA6zTkci`@a z`z~A?+yihA!aW2Rf%_iZ_u+m3*ADkE+z;V?1lIxg2;8G^KZfgsdkpSzxF_Jc;GTqg z3hrsRZn$UQo`ri3t_SWXa6g6n8C);i^KdV~{T!|j?nStl;9iF7hx-NGD{#Mrn+G=^ z4rY;k0`7RY6X4R}PJ}xN?vrpCa0}t^giglKDR7x^r^0;-4o~P{ZY=`V!F?X?T)6dc z8{js=ZGsEJ?S;Dn?mDFpo90(&%I{5Zc9+`^f@lhU}qC7tGlY5lOvZ+p z_M3vSwS9=-oI@QsL-L$Moo1u(L!4(r@X|w`Q=pU4tbP~BA~yTPOHK9FsDlq z12^VOd5A<0itpbW&VT4Z@!foL&;f4cSLFKWs78$+Gu%K7opPa2`i~kIZ5C zANegZ?=OQRc!&S~GCnKJ zL!+llv}|H^)5DfUtE7|hng}{}K$_@7U(NF|J^X#xa{pg&G15_}!+-0@){zzcuxA)Q z`U9OuT7i$R;17Me_G5Wk^YD#v=t><{pZ>FFVzuggjK1M<;n-gEFdshLO+3su^<75r zjo$qORNsZe@EN_o2!4mWxhNhUzq9Cl+*X7r(QAUVdx}8oU(n*Sx#$f=F~3;()@?fU ztwcyMMTBTZ%p8nr8gC*p2On?;5h5Jo_Mv!a?A{^sjYCkEBf4tHnEpfEF+>aw_J#6P zA1Ir@Pc~jIbi};kw+bC8E5mg{N6IR8kI<1a(k>7>QYNvRgLFowD}&&fcvlcS-p|F{ z2Sz*CjoeejJlGA~h^pPfMv$)92E@$^8o))`hrgNpfD5w4wMA3hcqBrMR~-qj_#H>W z!*sck@J+bFTlnc0K7i0K763BEo!;;@-FTGXqu<;uZa+%6_DCnheMjQ11#!cXYrA$k zf{TjE#AQZP-p)SteeBT-k6gR-n~tWs;z;*PyxU0l9qLjeW0dGudfIJAA|UY^BeSQt zzsT$@F8wik<3vpu8hZ4AmAniJrgaE@`L%M&$B|`~b;w}=pT`1~rzE&u~-(1SXi-h#3#v6om zpB;y~Iw&3`dS_7FCwf^>+$ZtwmAJq8dZ2iS={goeK>R`=gD2et6enYMwZy$*A`o}~ z#6#kj{>1$ZxBZws6I6&qq{r3o_c2F?FD~{m`yQwQQ(WbvC!zpTZKk}uM~`j3wMX|& zxUNU{@*U!y9z%>Ndh-D{^XSoySMumSm4>@`;yzO;0>zxNxhcR@d0~FF&Pp8y7wzcG z#SJ?;pDP7Oowh+6nz~SU7tffv3qlL0vG1QZps0&UArO&2pU?u2?r=jrK7Ri zaOhr~glllf!*KsioYYNtEL7ZhL*d#t*!0el#VGxb8v}{UZHS831B8B^%>jP_BH%6! zoPGM~OV7;CS(>vXdfY&R|M<1qg|AOu1Hnar1AY?xo@J7ZFMaS&KhCs8gnyDr8M)~a zQw4o!z;k2a^!F%WuPYaOeWe~Y-hc7ar~c}V@C!E&zubI-L%I8($M0Hx=LNfexoda* zRfXLbKX7H+_qX_-{r&bX`Ij%gxKrA+#kzlQ``$~heeJOu*IvKqzGr-&zBjcw%G@+w9kC& zrO&Ti-1wvYcmLwu%kvj{_PlV*y9MtlS6hnSop#X+;qcPi=3KX9t#!ec&%XXz!|@mX z`K8qrOLB8A|6-2vxLR}BK=te^LTh}#E}EITYV}pSe%{{y;I^w@xaDTsW##w$aNgRH zYrcQWtc;9PyJmd0S32|3>R->Pcy95NUwr+osl_h-ld;`CQ$y;}0<^1r@kx$C}7)_02+wcq}D==Sb?zdz;r zXCC;|D|g-gbos-xFDg4%`Q)eGd-`uVw|sqm)ph;9vcCA-PkuIZ^(FW0ywHBhiLP^Q zzx10sM>g%c?Tyj&tG;^DxOdU^70WkIfA@DeS3GfX&kZM}%{lSrColQb_fNU&+UKrl z{ipKG=Cl5I_MaENSUmKKL7B9Wd`kBYdW(W2!J?Hq-e&&7c zTUTw`xb?SRTX$Q->m~EHw|;f^SALV;@=W*BfgO*wjQ{Zq&oBJ_@6M_I)tB$M{d*S# z78l<$*q(p&JO1-G6rMPL&po$X*Ht<8$gT2YvtCG*FDw7-tMk><&p+W$9r;DdAAkOt z`ywyQfAj|rJyrDbAD`NFT;|<@WuIAd;T!k7b;6Z@TX0HUeZxDxtKRzA4|4`@duVU= zJ-@M+?>YWfwc=+(jSpAw$1i#Q>a*|v%`es{cjnyrnMb$ZJ06}@!p6M6pO7AsF5Gj@ zU73rOw;o@2MtJ2b=iKzYGcFpQsqXyqsju{OmaX{9jMhK@?X_=Q(R#6G$rqk~Q*bq~VjNE^<_Fyz-AH{AT$Ncl>!}M(zAtvtF$I^|$}`-kV>w zoWJ{qBjta%^res7{)4UMo*hp=kUOw>{eu~MH(k-2R@XGNAM@8lX1%GaAbbhP&xfka>KHc)xvPV}H_FcVUea~HA-utiM&Ml`tIPgaC z;zc`qAHHY(!#92Q*g0Rj?52Mn=el|J9$#wh1Hpjfg*(Rner(5`b?5E7`K{^fk_Vs3 z-Dm1 literal 0 HcmV?d00001 diff --git a/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm/node.napi.armv6.node b/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm/node.napi.armv6.node new file mode 100644 index 0000000000000000000000000000000000000000..fb02d8184af0f0004bb81bfe2eda0680f0af9559 GIT binary patch literal 117012 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%0AB^~DtNDW3Emx+_b9$t2|Ti*j0x&P)Xx!C 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 YIN5vw?+q70JA2X<)iyuF`)e28-%+2!s{jB1 literal 0 HcmV?d00001 diff --git a/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm64/node.napi.armv8.node b/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-arm64/node.napi.armv8.node new file mode 100644 index 0000000000000000000000000000000000000000..15d2a025eabb690db74c11bfb4ce4a188f3992cf GIT binary patch literal 146744 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 literal 0 HcmV?d00001 diff --git a/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-x64/node.napi.glibc.node b/server/node_modules/@serialport/bindings-cpp/prebuilds/linux-x64/node.napi.glibc.node new file mode 100644 index 0000000000000000000000000000000000000000..e45ac527886d99203735029eb6f1957034035f78 GIT binary patch literal 154928 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