From dd35fb6bb681d7351b427b3ffc39db3503d76669 Mon Sep 17 00:00:00 2001 From: Ianis Lallemand Date: Tue, 6 Dec 2016 11:57:28 +0100 Subject: [PATCH] cours 5 --- .gitignore | 7 +- src/p28-image-field/agent.js | 60 + src/p28-image-field/field-image.js | 26 + src/p28-image-field/img/x.jpg | Bin 0 -> 81704 bytes src/p28-image-field/index.html | 14 + src/p28-image-field/lib/p5.min.js | 9 + src/p28-image-field/sketch.js | 39 + src/p29-arduino-server/agent.js | 60 + src/p29-arduino-server/index.html | 14 + src/p29-arduino-server/lib/dat.gui.min.js | 2 + src/p29-arduino-server/lib/p5.min.js | 9 + src/p29-arduino-server/server/app.js | 25 + .../server/node_modules/accepts/HISTORY.md | 212 + .../server/node_modules/accepts/LICENSE | 23 + .../server/node_modules/accepts/README.md | 135 + .../server/node_modules/accepts/index.js | 231 + .../server/node_modules/accepts/package.json | 112 + .../server/node_modules/after/LICENCE | 19 + .../server/node_modules/after/README.md | 75 + .../server/node_modules/after/index.js | 28 + .../server/node_modules/after/package.json | 96 + .../node_modules/after/test/after-test.js | 120 + .../server/node_modules/ansi-regex/index.js | 4 + .../server/node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 121 + .../server/node_modules/ansi-regex/readme.md | 31 + .../server/node_modules/ansi-styles/index.js | 65 + .../server/node_modules/ansi-styles/license | 21 + .../node_modules/ansi-styles/package.json | 114 + .../server/node_modules/ansi-styles/readme.md | 86 + .../node_modules/arraybuffer.slice/Makefile | 8 + .../node_modules/arraybuffer.slice/README.md | 17 + .../node_modules/arraybuffer.slice/index.js | 29 + .../arraybuffer.slice/package.json | 72 + .../arraybuffer.slice/test/slice-buffer.js | 227 + .../server/node_modules/backo2/History.md | 12 + .../server/node_modules/backo2/Makefile | 8 + .../server/node_modules/backo2/Readme.md | 34 + .../server/node_modules/backo2/component.json | 11 + .../server/node_modules/backo2/index.js | 85 + .../server/node_modules/backo2/package.json | 78 + .../server/node_modules/backo2/test/index.js | 18 + .../base64-arraybuffer/LICENSE-MIT | 22 + .../node_modules/base64-arraybuffer/README.md | 20 + .../lib/base64-arraybuffer.js | 67 + .../base64-arraybuffer/package.json | 96 + .../server/node_modules/base64id/README.md | 18 + .../node_modules/base64id/lib/base64id.js | 103 + .../server/node_modules/base64id/package.json | 80 + .../node_modules/better-assert/History.md | 15 + .../node_modules/better-assert/Makefile | 5 + .../node_modules/better-assert/Readme.md | 61 + .../node_modules/better-assert/example.js | 10 + .../node_modules/better-assert/index.js | 38 + .../node_modules/better-assert/package.json | 100 + .../server/node_modules/bindings/README.md | 97 + .../server/node_modules/bindings/bindings.js | 166 + .../server/node_modules/bindings/package.json | 83 + .../server/node_modules/blob/Makefile | 14 + .../server/node_modules/blob/README.md | 14 + .../server/node_modules/blob/index.js | 96 + .../server/node_modules/blob/package.json | 77 + .../server/node_modules/blob/test/index.js | 94 + .../browser-serialport/LICENSE.md | 21 + .../node_modules/browser-serialport/README.md | 147 + .../node_modules/browser-serialport/index.js | 419 + .../browser-serialport/package.json | 105 + .../browser-serialport/test/parsers.js | 47 + .../test/serialport-basic.js | 434 + .../server/node_modules/callsite/History.md | 10 + .../server/node_modules/callsite/Makefile | 6 + .../server/node_modules/callsite/Readme.md | 44 + .../server/node_modules/callsite/index.js | 10 + .../server/node_modules/callsite/package.json | 77 + .../server/node_modules/chalk/index.js | 116 + .../server/node_modules/chalk/license | 21 + .../server/node_modules/chalk/package.json | 140 + .../server/node_modules/chalk/readme.md | 213 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../server/node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 745 ++ .../color-convert/css-keywords.js | 151 + .../node_modules/color-convert/index.js | 77 + .../node_modules/color-convert/package.json | 122 + .../node_modules/color-convert/route.js | 98 + .../server/node_modules/commander/History.md | 261 + .../server/node_modules/commander/LICENSE | 22 + .../server/node_modules/commander/Readme.md | 351 + .../server/node_modules/commander/index.js | 1110 +++ .../node_modules/commander/package.json | 107 + .../node_modules/component-bind/History.md | 13 + .../node_modules/component-bind/Makefile | 7 + .../node_modules/component-bind/Readme.md | 64 + .../component-bind/component.json | 13 + .../node_modules/component-bind/index.js | 23 + .../node_modules/component-bind/package.json | 81 + .../node_modules/component-emitter/History.md | 52 + .../node_modules/component-emitter/Makefile | 7 + .../node_modules/component-emitter/Readme.md | 74 + .../node_modules/component-emitter/bower.json | 21 + .../component-emitter/component.json | 14 + .../node_modules/component-emitter/index.js | 164 + .../component-emitter/package.json | 81 + .../node_modules/component-inherit/History.md | 5 + .../node_modules/component-inherit/Makefile | 16 + .../node_modules/component-inherit/Readme.md | 24 + .../component-inherit/component.json | 10 + .../node_modules/component-inherit/index.js | 7 + .../component-inherit/package.json | 78 + .../component-inherit/test/inherit.js | 21 + .../server/node_modules/cookie/HISTORY.md | 118 + .../server/node_modules/cookie/LICENSE | 24 + .../server/node_modules/cookie/README.md | 220 + .../server/node_modules/cookie/index.js | 195 + .../server/node_modules/cookie/package.json | 106 + .../server/node_modules/debug/CHANGELOG.md | 235 + .../server/node_modules/debug/LICENSE | 19 + .../server/node_modules/debug/Makefile | 37 + .../server/node_modules/debug/Readme.md | 199 + .../server/node_modules/debug/bower.json | 29 + .../server/node_modules/debug/browser.js | 177 + .../server/node_modules/debug/component.json | 19 + .../server/node_modules/debug/debug.js | 200 + .../server/node_modules/debug/index.js | 10 + .../server/node_modules/debug/node.js | 213 + .../server/node_modules/debug/package.json | 129 + .../define-properties/CHANGELOG.md | 35 + .../node_modules/define-properties/LICENSE | 21 + .../node_modules/define-properties/README.md | 86 + .../node_modules/define-properties/index.js | 56 + .../define-properties/package.json | 119 + .../define-properties/test/index.js | 126 + .../node_modules/ease-component/Makefile | 14 + .../node_modules/ease-component/Readme.md | 106 + .../ease-component/component.json | 15 + .../node_modules/ease-component/example.html | 46 + .../node_modules/ease-component/index.js | 170 + .../node_modules/ease-component/package.json | 73 + .../node_modules/engine.io-client/History.md | 622 ++ .../node_modules/engine.io-client/LICENSE | 22 + .../node_modules/engine.io-client/README.md | 295 + .../engine.io-client/engine.io.js | 4670 ++++++++++ .../node_modules/engine.io-client/index.js | 2 + .../engine.io-client/lib/index.js | 10 + .../engine.io-client/lib/socket.js | 738 ++ .../engine.io-client/lib/transport.js | 157 + .../engine.io-client/lib/transports/index.js | 53 + .../lib/transports/polling-jsonp.js | 231 + .../lib/transports/polling-xhr.js | 424 + .../lib/transports/polling.js | 245 + .../lib/transports/websocket.js | 285 + .../engine.io-client/lib/xmlhttprequest.js | 37 + .../node_modules/component-emitter/History.md | 68 + .../node_modules/component-emitter/LICENSE | 24 + .../node_modules/component-emitter/Readme.md | 74 + .../node_modules/component-emitter/index.js | 163 + .../component-emitter/package.json | 216 + .../engine.io-client/package.json | 150 + .../node_modules/engine.io-parser/History.md | 136 + .../node_modules/engine.io-parser/LICENSE | 22 + .../node_modules/engine.io-parser/Readme.md | 202 + .../node_modules/engine.io-parser/index.js | 2 + .../engine.io-parser/lib/browser.js | 609 ++ .../engine.io-parser/lib/index.js | 474 + .../node_modules/engine.io-parser/lib/keys.js | 19 + .../node_modules/has-binary/History.md | 11 + .../node_modules/has-binary/LICENSE | 20 + .../node_modules/has-binary/Makefile | 3 + .../node_modules/has-binary/README.md | 4 + .../node_modules/has-binary/fixtures/big.json | 1 + .../node_modules/has-binary/index.js | 58 + .../node_modules/has-binary/package.json | 72 + .../node_modules/has-binary/test.js | 108 + .../engine.io-parser/package.json | 103 + .../server/node_modules/engine.io/History.md | 543 ++ .../server/node_modules/engine.io/LICENSE | 19 + .../server/node_modules/engine.io/README.md | 537 ++ .../server/node_modules/engine.io/index.js | 4 + .../node_modules/engine.io/lib/engine.io.js | 126 + .../node_modules/engine.io/lib/server.js | 465 + .../node_modules/engine.io/lib/socket.js | 479 + .../node_modules/engine.io/lib/transport.js | 128 + .../engine.io/lib/transports/index.js | 36 + .../engine.io/lib/transports/polling-jsonp.js | 75 + .../engine.io/lib/transports/polling-xhr.js | 69 + .../engine.io/lib/transports/polling.js | 408 + .../engine.io/lib/transports/websocket.js | 126 + .../node_modules/engine.io/package.json | 133 + .../server/node_modules/es6-shim/CHANGELOG.md | 593 ++ .../server/node_modules/es6-shim/Gruntfile.js | 98 + .../server/node_modules/es6-shim/LICENSE | 26 + .../server/node_modules/es6-shim/README.md | 269 + .../server/node_modules/es6-shim/bower.json | 28 + .../node_modules/es6-shim/component.json | 23 + .../server/node_modules/es6-shim/es6-sham.js | 170 + .../server/node_modules/es6-shim/es6-sham.map | 1 + .../node_modules/es6-shim/es6-sham.min.js | 11 + .../server/node_modules/es6-shim/es6-shim.js | 3837 ++++++++ .../server/node_modules/es6-shim/es6-shim.map | 1 + .../node_modules/es6-shim/es6-shim.min.js | 12 + .../server/node_modules/es6-shim/full.html | 11 + .../server/node_modules/es6-shim/min.html | 11 + .../server/node_modules/es6-shim/package.json | 159 + .../es6-shim/test-sham/function.js | 54 + .../es6-shim/test-sham/index.html | 23 + .../es6-shim/test-sham/set-prototype-of.js | 26 + .../node_modules/es6-shim/test/array.js | 1037 +++ .../es6-shim/test/browser-onload.js | 45 + .../es6-shim/test/browser-setup.js | 11 + .../server/node_modules/es6-shim/test/date.js | 5 + .../node_modules/es6-shim/test/index.html | 42 + .../server/node_modules/es6-shim/test/json.js | 77 + .../server/node_modules/es6-shim/test/map.js | 603 ++ .../server/node_modules/es6-shim/test/math.js | 848 ++ .../node_modules/es6-shim/test/mocha.opts | 2 + .../node_modules/es6-shim/test/native.html | 39 + .../node_modules/es6-shim/test/number.js | 481 + .../node_modules/es6-shim/test/object.js | 365 + .../node_modules/es6-shim/test/promise.js | 43 + .../node_modules/es6-shim/test/promise/all.js | 203 + .../es6-shim/test/promise/evil-promises.js | 36 + .../es6-shim/test/promise/promises-aplus.js | 23 + .../es6-shim/test/promise/promises-es6.js | 22 + .../es6-shim/test/promise/race.js | 88 + .../es6-shim/test/promise/reject.js | 34 + .../es6-shim/test/promise/resolve.js | 33 + .../es6-shim/test/promise/simple.js | 96 + .../es6-shim/test/promise/subclass.js | 47 + .../node_modules/es6-shim/test/reflect.js | 679 ++ .../node_modules/es6-shim/test/regexp.js | 415 + .../server/node_modules/es6-shim/test/set.js | 637 ++ .../node_modules/es6-shim/test/string.js | 929 ++ .../es6-shim/test/test_helpers.js | 17 + .../es6-shim/test/worker-runner.workerjs | 7 + .../node_modules/es6-shim/test/worker-test.js | 39 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 109 + .../escape-string-regexp/readme.md | 27 + .../server/node_modules/firmata/changelog | 10 + .../node_modules/firmata/examples/adxl345.js | 49 + .../node_modules/firmata/examples/blink.js | 21 + .../firmata/examples/close-events.js | 15 + .../firmata/examples/digital-read-pullup.js | 21 + .../firmata/examples/etherport.js | 14 + .../firmata/examples/hw-serial-read-gps.js | 43 + .../firmata/examples/johnny-five-io-plugin.js | 28 + .../node_modules/firmata/examples/k22.js | 33 + .../firmata/examples/lsm303dlhc.js | 60 + .../node_modules/firmata/examples/mma8452.js | 104 + .../firmata/examples/ping-read.js | 28 + .../reporting-all-initialized-0.3.3.js | 30 + .../examples/reporting-all-initialized.js | 28 + .../firmata/examples/reporting-analog.js | 48 + .../firmata/examples/reporting-and-writing.js | 24 + .../firmata/examples/reporting.js | 48 + .../firmata/examples/servo-config.js | 20 + .../firmata/examples/servosweep.js | 23 + .../firmata/examples/sp-streams.js | 15 + .../node_modules/firmata/examples/sp.js | 10 + .../firmata/examples/sw-serial-read-gps.js | 27 + .../firmata/examples/sw-serial-test-basic.js | 55 + .../sw-serial-write-from-analog-in.js | 46 + .../examples/sw-serial-write-meastro-6.js | 65 + .../firmata/examples/test-analog-read.js | 48 + .../firmata/examples/test-i2c-read.js | 48 + .../firmata/examples/test-serial-read.js | 56 + .../server/node_modules/firmata/lib/com.js | 61 + .../node_modules/firmata/lib/encoder7bit.js | 47 + .../node_modules/firmata/lib/firmata.js | 1998 ++++ .../node_modules/firmata/lib/onewireutils.js | 48 + .../firmata/node_modules/serialport/LICENSE | 18 + .../firmata/node_modules/serialport/README.md | 576 ++ .../serialport/bin/serialport-list.js | 43 + .../serialport/bin/serialport-terminal.js | 78 + .../node_modules/serialport/binding.gyp | 51 + .../obj.target/serialport/src/serialport.o | Bin 0 -> 421856 bytes .../serialport/src/serialport_poller.o | Bin 0 -> 245740 bytes .../serialport/src/serialport_unix.o | Bin 0 -> 239116 bytes .../serialport/build/Release/serialport.node | Bin 0 -> 66036 bytes .../node_modules/serialport/changelog.md | 306 + .../node_modules/serialport/lib/bindings.js | 34 + .../node_modules/serialport/lib/list-unix.js | 110 + .../node_modules/serialport/lib/parsers.js | 64 + .../node_modules/serialport/lib/serialport.js | 474 + .../node_modules/node-pre-gyp/CHANGELOG.md | 332 + .../node_modules/node-pre-gyp/LICENSE | 27 + .../node_modules/node-pre-gyp/README.md | 574 ++ .../node_modules/node-pre-gyp/appveyor.yml | 42 + .../node-pre-gyp/bin/node-pre-gyp | 131 + .../node-pre-gyp/bin/node-pre-gyp.cmd | 2 + .../node_modules/node-pre-gyp/lib/build.js | 43 + .../node_modules/node-pre-gyp/lib/clean.js | 23 + .../node-pre-gyp/lib/configure.js | 48 + .../node_modules/node-pre-gyp/lib/info.js | 40 + .../node_modules/node-pre-gyp/lib/install.js | 213 + .../node-pre-gyp/lib/node-pre-gyp.js | 192 + .../node_modules/node-pre-gyp/lib/package.js | 46 + .../node-pre-gyp/lib/pre-binding.js | 25 + .../node_modules/node-pre-gyp/lib/publish.js | 77 + .../node_modules/node-pre-gyp/lib/rebuild.js | 13 + .../node-pre-gyp/lib/reinstall.js | 13 + .../node_modules/node-pre-gyp/lib/reveal.js | 31 + .../node-pre-gyp/lib/testbinary.js | 73 + .../node-pre-gyp/lib/testpackage.js | 49 + .../node-pre-gyp/lib/unpublish.js | 41 + .../node-pre-gyp/lib/util/abi_crosswalk.json | 1346 +++ .../node-pre-gyp/lib/util/compile.js | 87 + .../node-pre-gyp/lib/util/handle_gyp_opts.js | 94 + .../lib/util/nw-pre-gyp/index.html | 26 + .../lib/util/nw-pre-gyp/package.json | 9 + .../node-pre-gyp/lib/util/s3_setup.js | 27 + .../node-pre-gyp/lib/util/versioning.js | 308 + .../node-pre-gyp/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/bin/cmd.js | 33 + .../node_modules/mkdirp/bin/usage.txt | 12 + .../node_modules/mkdirp/examples/pow.js | 6 + .../node-pre-gyp/node_modules/mkdirp/index.js | 98 + .../mkdirp/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 75 + .../node_modules/minimist/readme.markdown | 73 + .../mkdirp/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/dotted.js | 16 + .../mkdirp/node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/mkdirp/package.json | 52 + .../node_modules/mkdirp/readme.markdown | 100 + .../node_modules/mkdirp/test/chmod.js | 41 + .../node_modules/mkdirp/test/clobber.js | 38 + .../node_modules/mkdirp/test/mkdirp.js | 28 + .../node_modules/mkdirp/test/opts_fs.js | 29 + .../node_modules/mkdirp/test/opts_fs_sync.js | 27 + .../node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 36 + .../node_modules/mkdirp/test/race.js | 37 + .../node_modules/mkdirp/test/rel.js | 32 + .../node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../node_modules/mkdirp/test/root.js | 19 + .../node_modules/mkdirp/test/sync.js | 32 + .../node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../node-pre-gyp/node_modules/nopt/LICENSE | 15 + .../node-pre-gyp/node_modules/nopt/README.md | 211 + .../node_modules/nopt/bin/nopt.js | 54 + .../node_modules/nopt/examples/my-program.js | 30 + .../node_modules/nopt/lib/nopt.js | 415 + .../nopt/node_modules/abbrev/LICENSE | 15 + .../nopt/node_modules/abbrev/README.md | 23 + .../nopt/node_modules/abbrev/abbrev.js | 62 + .../nopt/node_modules/abbrev/package.json | 63 + .../node_modules/nopt/package.json | 70 + .../node_modules/nopt/test/basic.js | 273 + .../node_modules/npmlog/CHANGELOG.md | 36 + .../node-pre-gyp/node_modules/npmlog/LICENSE | 15 + .../node_modules/npmlog/README.md | 210 + .../node-pre-gyp/node_modules/npmlog/log.js | 301 + .../node_modules/are-we-there-yet/CHANGES.md | 19 + .../node_modules/are-we-there-yet/LICENSE | 5 + .../node_modules/are-we-there-yet/README.md | 194 + .../node_modules/are-we-there-yet/index.js | 4 + .../node_modules/delegates/History.md | 22 + .../node_modules/delegates/License | 20 + .../node_modules/delegates/Makefile | 8 + .../node_modules/delegates/Readme.md | 94 + .../node_modules/delegates/index.js | 121 + .../node_modules/delegates/package.json | 58 + .../node_modules/delegates/test/index.js | 94 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 40 + .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 941 ++ .../readable-stream/lib/_stream_transform.js | 182 + .../readable-stream/lib/_stream_writable.js | 554 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 101 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../are-we-there-yet/package.json | 64 + .../are-we-there-yet/test/lib/test-event.js | 29 + .../are-we-there-yet/test/tracker.js | 57 + .../are-we-there-yet/test/trackergroup.js | 96 + .../are-we-there-yet/test/trackerstream.js | 51 + .../are-we-there-yet/tracker-base.js | 11 + .../are-we-there-yet/tracker-group.js | 107 + .../are-we-there-yet/tracker-stream.js | 35 + .../node_modules/are-we-there-yet/tracker.js | 30 + .../console-control-strings/LICENSE | 13 + .../console-control-strings/README.md | 145 + .../console-control-strings/index.js | 125 + .../console-control-strings/package.json | 70 + .../npmlog/node_modules/gauge/CHANGELOG.md | 131 + .../npmlog/node_modules/gauge/LICENSE | 13 + .../npmlog/node_modules/gauge/README.md | 395 + .../npmlog/node_modules/gauge/base-theme.js | 14 + .../npmlog/node_modules/gauge/error.js | 24 + .../npmlog/node_modules/gauge/has-color.js | 12 + .../npmlog/node_modules/gauge/index.js | 226 + .../gauge/node_modules/aproba/LICENSE | 14 + .../gauge/node_modules/aproba/README.md | 59 + .../gauge/node_modules/aproba/index.js | 62 + .../gauge/node_modules/aproba/package.json | 70 + .../gauge/node_modules/has-color/index.js | 32 + .../gauge/node_modules/has-color/package.json | 79 + .../gauge/node_modules/has-color/readme.md | 30 + .../gauge/node_modules/has-unicode/LICENSE | 14 + .../gauge/node_modules/has-unicode/README.md | 43 + .../gauge/node_modules/has-unicode/index.js | 16 + .../node_modules/has-unicode/package.json | 68 + .../gauge/node_modules/object-assign/index.js | 83 + .../gauge/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 63 + .../node_modules/object-assign/readme.md | 56 + .../node_modules/signal-exit/CHANGELOG.md | 27 + .../node_modules/signal-exit/LICENSE.txt | 16 + .../gauge/node_modules/signal-exit/README.md | 40 + .../gauge/node_modules/signal-exit/index.js | 148 + .../node_modules/signal-exit/package.json | 80 + .../gauge/node_modules/signal-exit/signals.js | 53 + .../gauge/node_modules/string-width/index.js | 37 + .../gauge/node_modules/string-width/license | 21 + .../node_modules/code-point-at/index.js | 32 + .../node_modules/code-point-at/license | 21 + .../node_modules/code-point-at/package.json | 80 + .../node_modules/code-point-at/readme.md | 32 + .../is-fullwidth-code-point/index.js | 46 + .../is-fullwidth-code-point/license | 21 + .../node_modules/number-is-nan/index.js | 4 + .../node_modules/number-is-nan/license | 21 + .../node_modules/number-is-nan/package.json | 77 + .../node_modules/number-is-nan/readme.md | 28 + .../is-fullwidth-code-point/package.json | 65 + .../is-fullwidth-code-point/readme.md | 39 + .../node_modules/string-width/package.json | 98 + .../gauge/node_modules/string-width/readme.md | 42 + .../gauge/node_modules/strip-ansi/index.js | 6 + .../gauge/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 90 + .../gauge/node_modules/strip-ansi/readme.md | 33 + .../gauge/node_modules/wide-align/LICENSE | 14 + .../gauge/node_modules/wide-align/README.md | 47 + .../gauge/node_modules/wide-align/align.js | 65 + .../node_modules/wide-align/package.json | 67 + .../node_modules/wide-align/test/align.js | 37 + .../npmlog/node_modules/gauge/package.json | 100 + .../npmlog/node_modules/gauge/plumbing.js | 47 + .../npmlog/node_modules/gauge/process.js | 3 + .../npmlog/node_modules/gauge/progress-bar.js | 35 + .../node_modules/gauge/render-template.js | 181 + .../node_modules/gauge/set-immediate.js | 7 + .../npmlog/node_modules/gauge/set-interval.js | 3 + .../npmlog/node_modules/gauge/spin.js | 5 + .../node_modules/gauge/template-item.js | 73 + .../npmlog/node_modules/gauge/theme-set.js | 115 + .../npmlog/node_modules/gauge/themes.js | 54 + .../node_modules/gauge/wide-truncate.js | 25 + .../node_modules/set-blocking/CHANGELOG.md | 26 + .../node_modules/set-blocking/LICENSE.txt | 14 + .../node_modules/set-blocking/README.md | 31 + .../npmlog/node_modules/set-blocking/index.js | 7 + .../node_modules/set-blocking/package.json | 80 + .../node_modules/npmlog/package.json | 82 + .../node_modules/rc/LICENSE.APACHE2 | 15 + .../node-pre-gyp/node_modules/rc/LICENSE.BSD | 26 + .../node-pre-gyp/node_modules/rc/LICENSE.MIT | 24 + .../node-pre-gyp/node_modules/rc/README.md | 149 + .../node-pre-gyp/node_modules/rc/browser.js | 7 + .../node-pre-gyp/node_modules/rc/index.js | 60 + .../node-pre-gyp/node_modules/rc/lib/utils.js | 103 + .../rc/node_modules/deep-extend/CHANGELOG.md | 21 + .../rc/node_modules/deep-extend/LICENSE | 20 + .../rc/node_modules/deep-extend/README.md | 90 + .../rc/node_modules/deep-extend/index.js | 1 + .../deep-extend/lib/deep-extend.js | 144 + .../rc/node_modules/deep-extend/package.json | 94 + .../node_modules/rc/node_modules/ini/LICENSE | 15 + .../rc/node_modules/ini/README.md | 102 + .../node_modules/rc/node_modules/ini/ini.js | 190 + .../rc/node_modules/ini/package.json | 63 + .../rc/node_modules/minimist/LICENSE | 18 + .../rc/node_modules/minimist/example/parse.js | 2 + .../rc/node_modules/minimist/index.js | 236 + .../rc/node_modules/minimist/package.json | 79 + .../rc/node_modules/minimist/readme.markdown | 91 + .../rc/node_modules/minimist/test/all_bool.js | 32 + .../rc/node_modules/minimist/test/bool.js | 166 + .../rc/node_modules/minimist/test/dash.js | 31 + .../minimist/test/default_bool.js | 35 + .../rc/node_modules/minimist/test/dotted.js | 22 + .../rc/node_modules/minimist/test/kv_short.js | 16 + .../rc/node_modules/minimist/test/long.js | 31 + .../rc/node_modules/minimist/test/num.js | 36 + .../rc/node_modules/minimist/test/parse.js | 197 + .../minimist/test/parse_modified.js | 9 + .../rc/node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/stop_early.js | 15 + .../rc/node_modules/minimist/test/unknown.js | 102 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/strip-json-comments/cli.js | 41 + .../node_modules/strip-json-comments/license | 21 + .../strip-json-comments/package.json | 69 + .../strip-json-comments/readme.md | 80 + .../strip-json-comments.js | 73 + .../node-pre-gyp/node_modules/rc/package.json | 70 + .../node-pre-gyp/node_modules/rc/test/ini.js | 16 + .../node_modules/rc/test/nested-env-vars.js | 40 + .../node-pre-gyp/node_modules/rc/test/test.js | 59 + .../node_modules/request/CHANGELOG.md | 655 ++ .../node_modules/request/CONTRIBUTING.md | 81 + .../node-pre-gyp/node_modules/request/LICENSE | 55 + .../node_modules/request/README.md | 1098 +++ .../node_modules/request/codecov.yml | 2 + .../node_modules/request/index.js | 156 + .../node_modules/request/lib/auth.js | 168 + .../node_modules/request/lib/cookies.js | 39 + .../request/lib/getProxyFromURI.js | 79 + .../node_modules/request/lib/har.js | 215 + .../node_modules/request/lib/helpers.js | 65 + .../node_modules/request/lib/multipart.js | 112 + .../node_modules/request/lib/oauth.js | 147 + .../node_modules/request/lib/querystring.js | 51 + .../node_modules/request/lib/redirect.js | 157 + .../node_modules/request/lib/tunnel.js | 176 + .../request/node_modules/aws-sign2/LICENSE | 55 + .../request/node_modules/aws-sign2/README.md | 4 + .../request/node_modules/aws-sign2/index.js | 212 + .../node_modules/aws-sign2/package.json | 55 + .../request/node_modules/aws4/LICENSE | 19 + .../request/node_modules/aws4/README.md | 523 ++ .../request/node_modules/aws4/aws4.js | 323 + .../request/node_modules/aws4/lru.js | 96 + .../request/node_modules/aws4/package.json | 114 + .../request/node_modules/caseless/LICENSE | 28 + .../request/node_modules/caseless/README.md | 45 + .../request/node_modules/caseless/index.js | 66 + .../node_modules/caseless/package.json | 70 + .../request/node_modules/caseless/test.js | 40 + .../node_modules/combined-stream/License | 19 + .../node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 188 + .../node_modules/delayed-stream/License | 19 + .../node_modules/delayed-stream/Makefile | 7 + .../node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + .../node_modules/delayed-stream/package.json | 71 + .../node_modules/combined-stream/package.json | 75 + .../request/node_modules/extend/CHANGELOG.md | 69 + .../request/node_modules/extend/LICENSE | 23 + .../request/node_modules/extend/README.md | 62 + .../node_modules/extend/component.json | 32 + .../request/node_modules/extend/index.js | 86 + .../request/node_modules/extend/package.json | 80 + .../node_modules/forever-agent/LICENSE | 55 + .../node_modules/forever-agent/README.md | 4 + .../node_modules/forever-agent/index.js | 138 + .../node_modules/forever-agent/package.json | 62 + .../request/node_modules/form-data/License | 19 + .../request/node_modules/form-data/README.md | 217 + .../node_modules/form-data/lib/browser.js | 2 + .../node_modules/form-data/lib/form_data.js | 440 + .../node_modules/form-data/lib/populate.js | 10 + .../form-data/node_modules/asynckit/LICENSE | 21 + .../form-data/node_modules/asynckit/README.md | 233 + .../form-data/node_modules/asynckit/bench.js | 76 + .../form-data/node_modules/asynckit/index.js | 6 + .../node_modules/asynckit/lib/abort.js | 29 + .../node_modules/asynckit/lib/async.js | 34 + .../node_modules/asynckit/lib/defer.js | 26 + .../node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + .../asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + .../node_modules/asynckit/lib/state.js | 37 + .../node_modules/asynckit/lib/streamify.js | 141 + .../node_modules/asynckit/lib/terminator.js | 29 + .../node_modules/asynckit/package.json | 100 + .../node_modules/asynckit/parallel.js | 43 + .../form-data/node_modules/asynckit/serial.js | 17 + .../node_modules/asynckit/serialOrdered.js | 75 + .../form-data/node_modules/asynckit/stream.js | 21 + .../node_modules/form-data/package.json | 119 + .../node_modules/har-validator/LICENSE | 13 + .../node_modules/har-validator/README.md | 309 + .../har-validator/bin/har-validator | 56 + .../node_modules/har-validator/lib/async.js | 14 + .../node_modules/har-validator/lib/error.js | 10 + .../node_modules/har-validator/lib/index.js | 22 + .../node_modules/har-validator/lib/runner.js | 29 + .../har-validator/lib/schemas/cache.json | 13 + .../har-validator/lib/schemas/cacheEntry.json | 31 + .../har-validator/lib/schemas/content.json | 27 + .../har-validator/lib/schemas/cookie.json | 34 + .../har-validator/lib/schemas/creator.json | 18 + .../har-validator/lib/schemas/entry.json | 51 + .../har-validator/lib/schemas/har.json | 11 + .../har-validator/lib/schemas/index.js | 49 + .../har-validator/lib/schemas/log.json | 34 + .../har-validator/lib/schemas/page.json | 30 + .../lib/schemas/pageTimings.json | 16 + .../har-validator/lib/schemas/postData.json | 41 + .../har-validator/lib/schemas/record.json | 18 + .../har-validator/lib/schemas/request.json | 55 + .../har-validator/lib/schemas/response.json | 52 + .../har-validator/lib/schemas/timings.json | 40 + .../har-validator/node_modules/chalk/index.js | 116 + .../har-validator/node_modules/chalk/license | 21 + .../chalk/node_modules/ansi-styles/index.js | 65 + .../chalk/node_modules/ansi-styles/license | 21 + .../node_modules/ansi-styles/package.json | 79 + .../chalk/node_modules/ansi-styles/readme.md | 86 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 83 + .../escape-string-regexp/readme.md | 27 + .../chalk/node_modules/has-ansi/index.js | 4 + .../chalk/node_modules/has-ansi/license | 21 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../has-ansi/node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../chalk/node_modules/has-ansi/package.json | 83 + .../chalk/node_modules/has-ansi/readme.md | 36 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../chalk/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 89 + .../chalk/node_modules/strip-ansi/readme.md | 33 + .../node_modules/supports-color/index.js | 50 + .../chalk/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 78 + .../node_modules/supports-color/readme.md | 36 + .../node_modules/chalk/package.json | 102 + .../node_modules/chalk/readme.md | 213 + .../node_modules/is-my-json-valid/LICENSE | 21 + .../node_modules/is-my-json-valid/README.md | 173 + .../node_modules/is-my-json-valid/example.js | 18 + .../node_modules/is-my-json-valid/formats.js | 14 + .../node_modules/is-my-json-valid/index.js | 594 ++ .../node_modules/generate-function/README.md | 72 + .../node_modules/generate-function/example.js | 27 + .../node_modules/generate-function/index.js | 61 + .../generate-function/package.json | 45 + .../node_modules/generate-function/test.js | 33 + .../generate-object-property/LICENSE | 21 + .../generate-object-property/README.md | 19 + .../generate-object-property/index.js | 12 + .../node_modules/is-property/LICENSE | 22 + .../node_modules/is-property/README.md | 28 + .../node_modules/is-property/is-property.js | 5 + .../node_modules/is-property/package.json | 51 + .../generate-object-property/package.json | 41 + .../generate-object-property/test.js | 12 + .../node_modules/jsonpointer/LICENSE.md | 21 + .../node_modules/jsonpointer/README.md | 39 + .../node_modules/jsonpointer/benchmark.js | 56 + .../node_modules/jsonpointer/jsonpointer.js | 93 + .../node_modules/jsonpointer/package.json | 83 + .../node_modules/jsonpointer/test.js | 131 + .../node_modules/xtend/LICENCE | 19 + .../node_modules/xtend/Makefile | 4 + .../node_modules/xtend/README.md | 32 + .../node_modules/xtend/immutable.js | 19 + .../node_modules/xtend/mutable.js | 17 + .../node_modules/xtend/package.json | 74 + .../node_modules/xtend/test.js | 83 + .../is-my-json-valid/package.json | 90 + .../node_modules/is-my-json-valid/require.js | 12 + .../is-my-json-valid/test/fixtures/cosmic.js | 84 + .../json-schema-draft4/additionalItems.json | 82 + .../additionalProperties.json | 88 + .../test/json-schema-draft4/allOf.json | 112 + .../test/json-schema-draft4/anyOf.json | 68 + .../test/json-schema-draft4/bignum.json | 107 + .../test/json-schema-draft4/default.json | 49 + .../test/json-schema-draft4/definitions.json | 32 + .../test/json-schema-draft4/dependencies.json | 113 + .../test/json-schema-draft4/enum.json | 72 + .../test/json-schema-draft4/format.json | 143 + .../test/json-schema-draft4/items.json | 46 + .../test/json-schema-draft4/maxItems.json | 28 + .../test/json-schema-draft4/maxLength.json | 28 + .../json-schema-draft4/maxProperties.json | 28 + .../test/json-schema-draft4/maximum.json | 42 + .../test/json-schema-draft4/minItems.json | 28 + .../test/json-schema-draft4/minLength.json | 28 + .../json-schema-draft4/minProperties.json | 28 + .../test/json-schema-draft4/minimum.json | 42 + .../test/json-schema-draft4/multipleOf.json | 96 + .../test/json-schema-draft4/not.json | 96 + .../json-schema-draft4/nullAndFormat.json | 18 + .../json-schema-draft4/nullAndObject.json | 18 + .../test/json-schema-draft4/oneOf.json | 68 + .../test/json-schema-draft4/pattern.json | 23 + .../json-schema-draft4/patternProperties.json | 110 + .../test/json-schema-draft4/properties.json | 92 + .../test/json-schema-draft4/ref.json | 128 + .../test/json-schema-draft4/refRemote.json | 74 + .../test/json-schema-draft4/required.json | 39 + .../test/json-schema-draft4/type.json | 330 + .../test/json-schema-draft4/uniqueItems.json | 79 + .../is-my-json-valid/test/json-schema.js | 23 + .../is-my-json-valid/test/misc.js | 471 + .../node_modules/pinkie-promise/index.js | 3 + .../node_modules/pinkie-promise/license | 21 + .../node_modules/pinkie/index.js | 292 + .../node_modules/pinkie/license | 21 + .../node_modules/pinkie/package.json | 57 + .../node_modules/pinkie/readme.md | 83 + .../node_modules/pinkie-promise/package.json | 55 + .../node_modules/pinkie-promise/readme.md | 28 + .../node_modules/har-validator/package.json | 94 + .../request/node_modules/hawk/LICENSE | 28 + .../request/node_modules/hawk/README.md | 634 ++ .../request/node_modules/hawk/bower.json | 24 + .../request/node_modules/hawk/component.json | 19 + .../request/node_modules/hawk/dist/client.js | 343 + .../node_modules/hawk/example/usage.js | 78 + .../request/node_modules/hawk/images/hawk.png | Bin 0 -> 6945 bytes .../request/node_modules/hawk/images/logo.png | Bin 0 -> 71732 bytes .../request/node_modules/hawk/lib/browser.js | 637 ++ .../request/node_modules/hawk/lib/client.js | 369 + .../request/node_modules/hawk/lib/crypto.js | 126 + .../request/node_modules/hawk/lib/index.js | 15 + .../request/node_modules/hawk/lib/server.js | 548 ++ .../request/node_modules/hawk/lib/utils.js | 184 + .../hawk/node_modules/boom/CONTRIBUTING.md | 1 + .../hawk/node_modules/boom/LICENSE | 28 + .../hawk/node_modules/boom/README.md | 652 ++ .../hawk/node_modules/boom/images/boom.png | Bin 0 -> 29479 bytes .../hawk/node_modules/boom/lib/index.js | 318 + .../hawk/node_modules/boom/package.json | 72 + .../hawk/node_modules/boom/test/index.js | 654 ++ .../hawk/node_modules/cryptiles/LICENSE | 28 + .../hawk/node_modules/cryptiles/README.md | 16 + .../hawk/node_modules/cryptiles/lib/index.js | 68 + .../hawk/node_modules/cryptiles/package.json | 68 + .../hawk/node_modules/cryptiles/test/index.js | 102 + .../hawk/node_modules/hoek/CONTRIBUTING.md | 1 + .../hawk/node_modules/hoek/LICENSE | 31 + .../hawk/node_modules/hoek/README.md | 584 ++ .../hawk/node_modules/hoek/images/hoek.png | Bin 0 -> 37939 bytes .../hawk/node_modules/hoek/lib/escape.js | 132 + .../hawk/node_modules/hoek/lib/index.js | 993 ++ .../hawk/node_modules/hoek/package.json | 70 + .../hawk/node_modules/hoek/test/escaper.js | 88 + .../hawk/node_modules/hoek/test/index.js | 2513 +++++ .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 + .../node_modules/hoek/test/modules/test2.js | 1 + .../node_modules/hoek/test/modules/test3.js | 1 + .../hawk/node_modules/sntp/LICENSE | 28 + .../hawk/node_modules/sntp/Makefile | 9 + .../hawk/node_modules/sntp/README.md | 68 + .../hawk/node_modules/sntp/examples/offset.js | 16 + .../hawk/node_modules/sntp/examples/time.js | 25 + .../hawk/node_modules/sntp/index.js | 1 + .../hawk/node_modules/sntp/lib/index.js | 412 + .../hawk/node_modules/sntp/package.json | 72 + .../hawk/node_modules/sntp/test/index.js | 435 + .../request/node_modules/hawk/package.json | 75 + .../request/node_modules/hawk/test/browser.js | 1492 +++ .../request/node_modules/hawk/test/client.js | 440 + .../request/node_modules/hawk/test/crypto.js | 70 + .../request/node_modules/hawk/test/index.js | 378 + .../request/node_modules/hawk/test/readme.js | 95 + .../request/node_modules/hawk/test/server.js | 1329 +++ .../request/node_modules/hawk/test/uri.js | 838 ++ .../request/node_modules/hawk/test/utils.js | 149 + .../node_modules/http-signature/CHANGES.md | 46 + .../node_modules/http-signature/LICENSE | 18 + .../node_modules/http-signature/README.md | 79 + .../http-signature/http_signing.md | 363 + .../node_modules/http-signature/lib/index.js | 29 + .../node_modules/http-signature/lib/parser.js | 318 + .../node_modules/http-signature/lib/signer.js | 399 + .../node_modules/http-signature/lib/utils.js | 112 + .../node_modules/http-signature/lib/verify.js | 88 + .../node_modules/assert-plus/AUTHORS | 6 + .../node_modules/assert-plus/CHANGES.md | 8 + .../node_modules/assert-plus/README.md | 155 + .../node_modules/assert-plus/assert.js | 206 + .../node_modules/assert-plus/package.json | 89 + .../node_modules/jsprim/CHANGES.md | 39 + .../node_modules/jsprim/LICENSE | 19 + .../node_modules/jsprim/README.md | 237 + .../node_modules/jsprim/lib/jsprim.js | 488 + .../jsprim/node_modules/extsprintf/LICENSE | 19 + .../jsprim/node_modules/extsprintf/Makefile | 23 + .../node_modules/extsprintf/Makefile.deps | 39 + .../node_modules/extsprintf/Makefile.targ | 285 + .../jsprim/node_modules/extsprintf/README.md | 39 + .../extsprintf/examples/simple.js | 2 + .../node_modules/extsprintf/jsl.node.conf | 137 + .../node_modules/extsprintf/lib/extsprintf.js | 166 + .../node_modules/extsprintf/package.json | 48 + .../jsprim/node_modules/json-schema/README.md | 5 + .../json-schema/draft-00/hyper-schema | 68 + .../json-schema/draft-00/json-ref | 26 + .../node_modules/json-schema/draft-00/links | 33 + .../node_modules/json-schema/draft-00/schema | 155 + .../json-schema/draft-01/hyper-schema | 68 + .../json-schema/draft-01/json-ref | 26 + .../node_modules/json-schema/draft-01/links | 33 + .../node_modules/json-schema/draft-01/schema | 155 + .../json-schema/draft-02/hyper-schema | 68 + .../json-schema/draft-02/json-ref | 26 + .../node_modules/json-schema/draft-02/links | 35 + .../node_modules/json-schema/draft-02/schema | 166 + .../json-schema/draft-03/examples/address | 20 + .../json-schema/draft-03/examples/calendar | 53 + .../json-schema/draft-03/examples/card | 105 + .../json-schema/draft-03/examples/geo | 8 + .../json-schema/draft-03/examples/interfaces | 23 + .../json-schema/draft-03/hyper-schema | 60 + .../json-schema/draft-03/json-ref | 26 + .../node_modules/json-schema/draft-03/links | 35 + .../node_modules/json-schema/draft-03/schema | 174 + .../json-schema/draft-04/hyper-schema | 60 + .../node_modules/json-schema/draft-04/links | 41 + .../node_modules/json-schema/draft-04/schema | 189 + .../json-schema/draft-zyp-json-schema-03.xml | 1120 +++ .../json-schema/draft-zyp-json-schema-04.xml | 1072 +++ .../node_modules/json-schema/lib/links.js | 66 + .../node_modules/json-schema/lib/validate.js | 273 + .../node_modules/json-schema/package.json | 74 + .../node_modules/json-schema/test/tests.js | 95 + .../jsprim/node_modules/verror/LICENSE | 19 + .../jsprim/node_modules/verror/Makefile | 35 + .../jsprim/node_modules/verror/Makefile.targ | 285 + .../jsprim/node_modules/verror/README.md | 120 + .../verror/examples/levels-verror.js | 36 + .../verror/examples/levels-werror.js | 34 + .../node_modules/verror/examples/varargs.js | 6 + .../node_modules/verror/examples/verror.js | 13 + .../node_modules/verror/examples/werror.js | 14 + .../jsprim/node_modules/verror/jsl.node.conf | 139 + .../jsprim/node_modules/verror/lib/verror.js | 157 + .../jsprim/node_modules/verror/package.json | 52 + .../node_modules/verror/tests/tst.inherit.js | 100 + .../node_modules/verror/tests/tst.verror.js | 156 + .../node_modules/verror/tests/tst.werror.js | 179 + .../node_modules/jsprim/package.json | 59 + .../http-signature/node_modules/sshpk/LICENSE | 18 + .../node_modules/sshpk/README.md | 666 ++ .../node_modules/sshpk/bin/sshpk-conv | 201 + .../node_modules/sshpk/bin/sshpk-sign | 191 + .../node_modules/sshpk/bin/sshpk-verify | 166 + .../node_modules/sshpk/lib/algs.js | 168 + .../node_modules/sshpk/lib/certificate.js | 291 + .../node_modules/sshpk/lib/dhe.js | 311 + .../node_modules/sshpk/lib/ed-compat.js | 96 + .../node_modules/sshpk/lib/errors.js | 84 + .../node_modules/sshpk/lib/fingerprint.js | 161 + .../node_modules/sshpk/lib/formats/auto.js | 73 + .../sshpk/lib/formats/openssh-cert.js | 289 + .../node_modules/sshpk/lib/formats/pem.js | 186 + .../node_modules/sshpk/lib/formats/pkcs1.js | 320 + .../node_modules/sshpk/lib/formats/pkcs8.js | 505 + .../node_modules/sshpk/lib/formats/rfc4253.js | 146 + .../sshpk/lib/formats/ssh-private.js | 261 + .../node_modules/sshpk/lib/formats/ssh.js | 114 + .../sshpk/lib/formats/x509-pem.js | 77 + .../node_modules/sshpk/lib/formats/x509.js | 484 + .../node_modules/sshpk/lib/identity.js | 255 + .../node_modules/sshpk/lib/index.js | 38 + .../node_modules/sshpk/lib/key.js | 270 + .../node_modules/sshpk/lib/private-key.js | 231 + .../node_modules/sshpk/lib/signature.js | 245 + .../node_modules/sshpk/lib/ssh-buffer.js | 148 + .../node_modules/sshpk/lib/utils.js | 288 + .../node_modules/sshpk/man/man1/sshpk-conv.1 | 135 + .../node_modules/sshpk/man/man1/sshpk-sign.1 | 81 + .../sshpk/man/man1/sshpk-verify.1 | 68 + .../sshpk/node_modules/asn1/LICENSE | 19 + .../sshpk/node_modules/asn1/README.md | 50 + .../sshpk/node_modules/asn1/lib/ber/errors.js | 13 + .../sshpk/node_modules/asn1/lib/ber/index.js | 27 + .../sshpk/node_modules/asn1/lib/ber/reader.js | 261 + .../sshpk/node_modules/asn1/lib/ber/types.js | 36 + .../sshpk/node_modules/asn1/lib/ber/writer.js | 316 + .../sshpk/node_modules/asn1/lib/index.js | 20 + .../sshpk/node_modules/asn1/package.json | 72 + .../node_modules/asn1/tst/ber/reader.test.js | 208 + .../node_modules/asn1/tst/ber/writer.test.js | 370 + .../sshpk/node_modules/assert-plus/AUTHORS | 6 + .../sshpk/node_modules/assert-plus/CHANGES.md | 14 + .../sshpk/node_modules/assert-plus/README.md | 162 + .../sshpk/node_modules/assert-plus/assert.js | 211 + .../node_modules/assert-plus/package.json | 91 + .../sshpk/node_modules/bcrypt-pbkdf/README.md | 39 + .../sshpk/node_modules/bcrypt-pbkdf/index.js | 559 ++ .../node_modules/bcrypt-pbkdf/package.json | 46 + .../sshpk/node_modules/dashdash/README.md | 574 ++ .../dashdash/etc/dashdash.bash_completion.in | 388 + .../node_modules/dashdash/lib/dashdash.js | 1055 +++ .../sshpk/node_modules/dashdash/package.json | 98 + .../sshpk/node_modules/ecc-jsbn/LICENSE | 21 + .../sshpk/node_modules/ecc-jsbn/README.md | 8 + .../sshpk/node_modules/ecc-jsbn/index.js | 57 + .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 + .../sshpk/node_modules/ecc-jsbn/lib/ec.js | 561 ++ .../sshpk/node_modules/ecc-jsbn/lib/sec.js | 170 + .../sshpk/node_modules/ecc-jsbn/package.json | 64 + .../sshpk/node_modules/ecc-jsbn/test.js | 14 + .../sshpk/node_modules/getpass/LICENSE | 18 + .../sshpk/node_modules/getpass/README.md | 32 + .../sshpk/node_modules/getpass/lib/index.js | 123 + .../sshpk/node_modules/getpass/package.json | 64 + .../sshpk/node_modules/jodid25519/AUTHORS.md | 3 + .../sshpk/node_modules/jodid25519/LICENSE | 23 + .../sshpk/node_modules/jodid25519/README.md | 51 + .../sshpk/node_modules/jodid25519/almond.0 | 42 + .../sshpk/node_modules/jodid25519/almond.1 | 13 + .../sshpk/node_modules/jodid25519/index.js | 35 + .../sshpk/node_modules/jodid25519/jsdoc.json | 19 + .../sshpk/node_modules/jodid25519/lib/core.js | 481 + .../node_modules/jodid25519/lib/curve255.js | 221 + .../sshpk/node_modules/jodid25519/lib/dh.js | 111 + .../node_modules/jodid25519/lib/eddsa.js | 573 ++ .../node_modules/jodid25519/lib/utils.js | 198 + .../node_modules/jodid25519/package.json | 78 + .../sshpk/node_modules/jsbn/LICENSE | 40 + .../sshpk/node_modules/jsbn/README.md | 175 + .../sshpk/node_modules/jsbn/example.html | 12 + .../sshpk/node_modules/jsbn/example.js | 3 + .../sshpk/node_modules/jsbn/index.js | 1358 +++ .../sshpk/node_modules/jsbn/package.json | 61 + .../sshpk/node_modules/tweetnacl/CHANGELOG.md | 181 + .../sshpk/node_modules/tweetnacl/COPYING.txt | 9 + .../sshpk/node_modules/tweetnacl/README.md | 445 + .../sshpk/node_modules/tweetnacl/nacl-fast.js | 2388 +++++ .../node_modules/tweetnacl/nacl-fast.min.js | 2 + .../sshpk/node_modules/tweetnacl/nacl.js | 1175 +++ .../sshpk/node_modules/tweetnacl/nacl.min.js | 1 + .../sshpk/node_modules/tweetnacl/package.json | 94 + .../node_modules/sshpk/package.json | 109 + .../node_modules/http-signature/package.json | 90 + .../node_modules/is-typedarray/LICENSE.md | 18 + .../node_modules/is-typedarray/README.md | 16 + .../node_modules/is-typedarray/index.js | 41 + .../node_modules/is-typedarray/package.json | 64 + .../node_modules/is-typedarray/test.js | 34 + .../request/node_modules/isstream/LICENSE.md | 11 + .../request/node_modules/isstream/README.md | 66 + .../request/node_modules/isstream/isstream.js | 27 + .../node_modules/isstream/package.json | 67 + .../request/node_modules/isstream/test.js | 168 + .../json-stringify-safe/CHANGELOG.md | 14 + .../node_modules/json-stringify-safe/LICENSE | 15 + .../node_modules/json-stringify-safe/Makefile | 35 + .../json-stringify-safe/README.md | 52 + .../json-stringify-safe/package.json | 76 + .../json-stringify-safe/stringify.js | 27 + .../json-stringify-safe/test/mocha.opts | 2 + .../test/stringify_test.js | 246 + .../node_modules/mime-types/HISTORY.md | 204 + .../request/node_modules/mime-types/LICENSE | 23 + .../request/node_modules/mime-types/README.md | 103 + .../request/node_modules/mime-types/index.js | 188 + .../node_modules/mime-db/HISTORY.md | 365 + .../mime-types/node_modules/mime-db/LICENSE | 22 + .../mime-types/node_modules/mime-db/README.md | 82 + .../mime-types/node_modules/mime-db/db.json | 6692 +++++++++++++ .../mime-types/node_modules/mime-db/index.js | 11 + .../node_modules/mime-db/package.json | 107 + .../node_modules/mime-types/package.json | 102 + .../request/node_modules/node-uuid/LICENSE.md | 21 + .../request/node_modules/node-uuid/README.md | 254 + .../node-uuid/benchmark/README.md | 53 + .../node-uuid/benchmark/bench.gnu | 174 + .../node_modules/node-uuid/benchmark/bench.sh | 34 + .../node-uuid/benchmark/benchmark-native.c | 34 + .../node-uuid/benchmark/benchmark.js | 84 + .../request/node_modules/node-uuid/bin/uuid | 26 + .../request/node_modules/node-uuid/bower.json | 23 + .../node_modules/node-uuid/component.json | 25 + .../node_modules/node-uuid/package.json | 87 + .../node_modules/node-uuid/test/compare_v1.js | 63 + .../node_modules/node-uuid/test/test.html | 17 + .../node_modules/node-uuid/test/test.js | 231 + .../request/node_modules/node-uuid/uuid.js | 272 + .../request/node_modules/oauth-sign/LICENSE | 55 + .../request/node_modules/oauth-sign/README.md | 4 + .../request/node_modules/oauth-sign/index.js | 136 + .../node_modules/oauth-sign/package.json | 72 + .../request/node_modules/qs/CHANGELOG.md | 144 + .../request/node_modules/qs/CONTRIBUTING.md | 1 + .../request/node_modules/qs/LICENSE | 28 + .../request/node_modules/qs/README.md | 398 + .../request/node_modules/qs/dist/qs.js | 574 ++ .../request/node_modules/qs/lib/formats.js | 18 + .../request/node_modules/qs/lib/index.js | 11 + .../request/node_modules/qs/lib/parse.js | 166 + .../request/node_modules/qs/lib/stringify.js | 187 + .../request/node_modules/qs/lib/utils.js | 180 + .../request/node_modules/qs/package.json | 95 + .../request/node_modules/qs/test/index.js | 7 + .../request/node_modules/qs/test/parse.js | 459 + .../request/node_modules/qs/test/stringify.js | 538 ++ .../request/node_modules/qs/test/utils.js | 22 + .../node_modules/stringstream/LICENSE.txt | 22 + .../node_modules/stringstream/README.md | 38 + .../node_modules/stringstream/example.js | 27 + .../node_modules/stringstream/package.json | 59 + .../node_modules/stringstream/stringstream.js | 102 + .../request/node_modules/tough-cookie/LICENSE | 27 + .../node_modules/tough-cookie/README.md | 506 + .../node_modules/tough-cookie/lib/cookie.js | 1336 +++ .../node_modules/tough-cookie/lib/memstore.js | 170 + .../tough-cookie/lib/pathMatch.js | 61 + .../tough-cookie/lib/permuteDomain.js | 56 + .../tough-cookie/lib/pubsuffix.js | 98 + .../node_modules/tough-cookie/lib/store.js | 71 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 176 + .../node_modules/punycode/package.json | 76 + .../node_modules/punycode/punycode.js | 533 ++ .../node_modules/tough-cookie/package.json | 109 + .../request/node_modules/tunnel-agent/LICENSE | 55 + .../node_modules/tunnel-agent/README.md | 4 + .../node_modules/tunnel-agent/index.js | 243 + .../node_modules/tunnel-agent/package.json | 74 + .../node_modules/request/package.json | 134 + .../node_modules/request/request.js | 1471 +++ .../node-pre-gyp/node_modules/rimraf/LICENSE | 15 + .../node_modules/rimraf/README.md | 101 + .../node-pre-gyp/node_modules/rimraf/bin.js | 40 + .../rimraf/node_modules/glob/LICENSE | 15 + .../rimraf/node_modules/glob/README.md | 368 + .../rimraf/node_modules/glob/changelog.md | 67 + .../rimraf/node_modules/glob/common.js | 240 + .../rimraf/node_modules/glob/glob.js | 792 ++ .../glob/node_modules/fs.realpath/LICENSE | 43 + .../glob/node_modules/fs.realpath/README.md | 33 + .../glob/node_modules/fs.realpath/index.js | 66 + .../glob/node_modules/fs.realpath/old.js | 303 + .../node_modules/fs.realpath/package.json | 47 + .../glob/node_modules/inflight/LICENSE | 15 + .../glob/node_modules/inflight/README.md | 37 + .../glob/node_modules/inflight/inflight.js | 54 + .../inflight/node_modules/wrappy/LICENSE | 15 + .../inflight/node_modules/wrappy/README.md | 36 + .../inflight/node_modules/wrappy/package.json | 46 + .../inflight/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/inflight/package.json | 79 + .../glob/node_modules/inherits/LICENSE | 16 + .../glob/node_modules/inherits/README.md | 42 + .../glob/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../glob/node_modules/inherits/package.json | 71 + .../glob/node_modules/minimatch/LICENSE | 15 + .../glob/node_modules/minimatch/README.md | 209 + .../glob/node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../glob/node_modules/minimatch/package.json | 71 + .../glob/node_modules/once/LICENSE | 15 + .../glob/node_modules/once/README.md | 79 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/once/once.js | 42 + .../glob/node_modules/once/package.json | 75 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 85 + .../node_modules/path-is-absolute/readme.md | 59 + .../rimraf/node_modules/glob/package.json | 85 + .../rimraf/node_modules/glob/sync.js | 486 + .../node_modules/rimraf/package.json | 76 + .../node_modules/rimraf/rimraf.js | 343 + .../node-pre-gyp/node_modules/semver/LICENSE | 15 + .../node_modules/semver/README.md | 350 + .../node_modules/semver/bin/semver | 133 + .../node_modules/semver/package.json | 68 + .../node_modules/semver/range.bnf | 16 + .../node_modules/semver/semver.js | 1203 +++ .../node_modules/tar-pack/LICENSE | 23 + .../node_modules/tar-pack/README.md | 84 + .../node_modules/tar-pack/index.js | 245 + .../tar-pack/node_modules/debug/History.md | 195 + .../tar-pack/node_modules/debug/Makefile | 36 + .../tar-pack/node_modules/debug/Readme.md | 188 + .../tar-pack/node_modules/debug/bower.json | 28 + .../tar-pack/node_modules/debug/browser.js | 168 + .../node_modules/debug/component.json | 19 + .../tar-pack/node_modules/debug/debug.js | 197 + .../tar-pack/node_modules/debug/node.js | 209 + .../debug/node_modules/ms/History.md | 66 + .../debug/node_modules/ms/LICENSE | 20 + .../debug/node_modules/ms/README.md | 35 + .../debug/node_modules/ms/index.js | 125 + .../debug/node_modules/ms/package.json | 56 + .../tar-pack/node_modules/debug/package.json | 58 + .../node_modules/fstream-ignore/LICENSE | 15 + .../node_modules/fstream-ignore/README.md | 22 + .../node_modules/fstream-ignore/ignore.js | 275 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/minimatch/LICENSE | 15 + .../node_modules/minimatch/README.md | 209 + .../node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../node_modules/minimatch/package.json | 71 + .../node_modules/fstream-ignore/package.json | 78 + .../tar-pack/node_modules/fstream/LICENSE | 15 + .../tar-pack/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar-pack/node_modules/fstream/fstream.js | 35 + .../node_modules/fstream/lib/abstract.js | 85 + .../node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../fstream/node_modules/inherits/LICENSE | 16 + .../fstream/node_modules/inherits/README.md | 42 + .../fstream/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/fstream/package.json | 83 + .../tar-pack/node_modules/once/LICENSE | 15 + .../tar-pack/node_modules/once/README.md | 51 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../tar-pack/node_modules/once/once.js | 21 + .../tar-pack/node_modules/once/package.json | 54 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 36 + .../readable-stream/doc/stream.md | 2015 ++++ .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 937 ++ .../readable-stream/lib/_stream_transform.js | 180 + .../readable-stream/lib/_stream_writable.js | 526 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 99 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../tar-pack/node_modules/uid-number/LICENSE | 15 + .../node_modules/uid-number/README.md | 17 + .../node_modules/uid-number/get-uid-gid.js | 24 + .../node_modules/uid-number/package.json | 56 + .../node_modules/uid-number/uid-number.js | 59 + .../node_modules/tar-pack/package.json | 77 + .../tar-pack/test/fixtures/packed-file.txt | 1 + .../tar-pack/test/fixtures/packed.tar | Bin 0 -> 3584 bytes .../tar-pack/test/fixtures/packed.tar.gz | Bin 0 -> 152 bytes .../tar-pack/test/fixtures/to-pack/bar.txt | 1 + .../tar-pack/test/fixtures/to-pack/foo.txt | 1 + .../node_modules/tar-pack/test/index.js | 109 + .../node-pre-gyp/node_modules/tar/LICENSE | 12 + .../node-pre-gyp/node_modules/tar/README.md | 50 + .../node_modules/tar/examples/extracter.js | 19 + .../node_modules/tar/examples/packer.js | 24 + .../node_modules/tar/examples/reader.js | 36 + .../node_modules/tar/lib/buffer-entry.js | 30 + .../node_modules/tar/lib/entry-writer.js | 169 + .../node_modules/tar/lib/entry.js | 220 + .../tar/lib/extended-header-writer.js | 191 + .../node_modules/tar/lib/extended-header.js | 140 + .../node_modules/tar/lib/extract.js | 94 + .../tar/lib/global-header-writer.js | 14 + .../node_modules/tar/lib/header.js | 385 + .../node-pre-gyp/node_modules/tar/lib/pack.js | 236 + .../node_modules/tar/lib/parse.js | 275 + .../tar/node_modules/block-stream/LICENCE | 25 + .../tar/node_modules/block-stream/LICENSE | 15 + .../tar/node_modules/block-stream/README.md | 14 + .../node_modules/block-stream/block-stream.js | 209 + .../node_modules/block-stream/package.json | 69 + .../tar/node_modules/fstream/LICENSE | 15 + .../tar/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../tar/node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar/node_modules/fstream/fstream.js | 35 + .../tar/node_modules/fstream/lib/abstract.js | 85 + .../tar/node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../tar/node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../tar/node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../tar/node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../tar/node_modules/fstream/package.json | 82 + .../tar/node_modules/inherits/LICENSE | 16 + .../tar/node_modules/inherits/README.md | 42 + .../tar/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../tar/node_modules/inherits/package.json | 73 + .../node_modules/tar/package.json | 80 + .../node-pre-gyp/node_modules/tar/tar.js | 173 + .../tar/test/00-setup-fixtures.js | 53 + .../tar/test/cb-never-called-1.0.1.tgz | Bin 0 -> 4096 bytes .../tar/test/dir-normalization.js | 177 + .../tar/test/dir-normalization.tar | Bin 0 -> 4608 bytes .../node_modules/tar/test/error-on-broken.js | 33 + .../node_modules/tar/test/extract-move.js | 132 + .../node_modules/tar/test/extract.js | 367 + .../node_modules/tar/test/fixtures.tgz | Bin 0 -> 19352 bytes .../node_modules/tar/test/header.js | 183 + .../tar/test/pack-no-proprietary.js | 886 ++ .../node_modules/tar/test/pack.js | 952 ++ .../node_modules/tar/test/parse-discard.js | 29 + .../node_modules/tar/test/parse.js | 359 + .../node_modules/tar/test/zz-cleanup.js | 20 + .../node_modules/node-pre-gyp/package.json | 113 + .../node_modules/serialport/package.json | 164 + .../serialport/src/serialport.cpp | 670 ++ .../node_modules/serialport/src/serialport.h | 195 + .../serialport/src/serialport_poller.cpp | 124 + .../serialport/src/serialport_poller.h | 35 + .../serialport/src/serialport_unix.cpp | 729 ++ .../serialport/src/serialport_win.cpp | 560 ++ .../serialport/src/win/AutoHModule.h | 72 + .../serialport/src/win/AutoHandle.h | 62 + .../serialport/src/win/AutoHeapAlloc.h | 72 + .../serialport/src/win/disphelper.c | 1292 +++ .../serialport/src/win/disphelper.h | 731 ++ .../serialport/src/win/enumser.cpp | 1186 +++ .../node_modules/serialport/src/win/enumser.h | 185 + .../node_modules/serialport/src/win/stdafx.h | 51 + .../serialport/src/win/stdstring.h | 4351 +++++++++ .../server/node_modules/firmata/package.json | 114 + .../server/node_modules/firmata/readme.md | 358 + .../server/node_modules/firmata/repl.js | 14 + .../server/node_modules/foreach/LICENSE | 24 + .../server/node_modules/foreach/Makefile | 11 + .../server/node_modules/foreach/Readme.md | 30 + .../node_modules/foreach/component.json | 11 + .../server/node_modules/foreach/index.js | 22 + .../server/node_modules/foreach/package.json | 109 + .../server/node_modules/foreach/test.js | 153 + .../server/node_modules/function-bind/LICENSE | 20 + .../node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 48 + .../node_modules/function-bind/index.js | 3 + .../node_modules/function-bind/package.json | 138 + .../node_modules/function-bind/test/index.js | 250 + .../node_modules/graceful-readlink/LICENSE | 22 + .../node_modules/graceful-readlink/README.md | 17 + .../node_modules/graceful-readlink/index.js | 12 + .../graceful-readlink/package.json | 83 + .../server/node_modules/has-ansi/index.js | 4 + .../server/node_modules/has-ansi/license | 21 + .../server/node_modules/has-ansi/package.json | 118 + .../server/node_modules/has-ansi/readme.md | 36 + .../server/node_modules/has-binary/History.md | 19 + .../server/node_modules/has-binary/LICENSE | 20 + .../server/node_modules/has-binary/Makefile | 3 + .../server/node_modules/has-binary/README.md | 4 + .../server/node_modules/has-binary/index.js | 59 + .../node_modules/has-binary/package.json | 74 + .../server/node_modules/has-binary/test.js | 73 + .../server/node_modules/has-cors/History.md | 21 + .../server/node_modules/has-cors/Makefile | 11 + .../server/node_modules/has-cors/Readme.md | 24 + .../node_modules/has-cors/component.json | 13 + .../server/node_modules/has-cors/index.js | 17 + .../server/node_modules/has-cors/package.json | 96 + .../server/node_modules/has-cors/test.js | 24 + .../server/node_modules/immediate/LICENSE.txt | 20 + .../server/node_modules/immediate/README.md | 93 + .../node_modules/immediate/dist/immediate.js | 75 + .../immediate/dist/immediate.min.js | 1 + .../node_modules/immediate/lib/browser.js | 69 + .../node_modules/immediate/lib/index.js | 73 + .../node_modules/immediate/package.json | 119 + .../server/node_modules/indexof/Makefile | 11 + .../server/node_modules/indexof/Readme.md | 15 + .../node_modules/indexof/component.json | 10 + .../server/node_modules/indexof/index.js | 10 + .../server/node_modules/indexof/package.json | 67 + .../server/node_modules/isarray/README.md | 54 + .../node_modules/isarray/build/build.js | 209 + .../node_modules/isarray/component.json | 19 + .../server/node_modules/isarray/index.js | 3 + .../server/node_modules/isarray/package.json | 88 + .../server/node_modules/johnny-five/README.md | 595 ++ .../node_modules/johnny-five/egs-markdown.js | 45 + .../johnny-five/lib/accelerometer.js | 1175 +++ .../node_modules/johnny-five/lib/altimeter.js | 205 + .../node_modules/johnny-five/lib/animation.js | 560 ++ .../johnny-five/lib/array-includes-shim.js | 8 + .../node_modules/johnny-five/lib/barometer.js | 212 + .../node_modules/johnny-five/lib/board.js | 1269 +++ .../johnny-five/lib/board.options.js | 94 + .../johnny-five/lib/board.pins.js | 274 + .../node_modules/johnny-five/lib/button.js | 388 + .../node_modules/johnny-five/lib/color.js | 327 + .../node_modules/johnny-five/lib/compass.js | 905 ++ .../johnny-five/lib/definitions/mpr121.js | 264 + .../node_modules/johnny-five/lib/esc.js | 475 + .../node_modules/johnny-five/lib/evshield.js | 319 + .../node_modules/johnny-five/lib/expander.js | 1937 ++++ .../server/node_modules/johnny-five/lib/fn.js | 514 + .../node_modules/johnny-five/lib/gps.js | 478 + .../node_modules/johnny-five/lib/gripper.js | 95 + .../node_modules/johnny-five/lib/gyro.js | 336 + .../johnny-five/lib/hygrometer.js | 245 + .../node_modules/johnny-five/lib/imu.js | 2685 ++++++ .../johnny-five/lib/johnny-five.js | 165 + .../node_modules/johnny-five/lib/joystick.js | 264 + .../node_modules/johnny-five/lib/keypad.js | 692 ++ .../node_modules/johnny-five/lib/lcd-chars.js | 120 + .../node_modules/johnny-five/lib/lcd.js | 1051 +++ .../johnny-five/lib/led/callbacks.js | 42 + .../johnny-five/lib/led/digits.js | 13 + .../node_modules/johnny-five/lib/led/index.js | 11 + .../johnny-five/lib/led/led-chars.js | 364 + .../node_modules/johnny-five/lib/led/led.js | 518 ++ .../johnny-five/lib/led/ledcontrol.js | 1117 +++ .../node_modules/johnny-five/lib/led/leds.js | 64 + .../johnny-five/lib/led/matrix.js | 13 + .../node_modules/johnny-five/lib/led/rgb.js | 559 ++ .../node_modules/johnny-five/lib/led/rgbs.js | 71 + .../node_modules/johnny-five/lib/light.js | 494 + .../johnny-five/lib/mixins/collection.js | 259 + .../johnny-five/lib/mixins/within.js | 36 + .../node_modules/johnny-five/lib/motion.js | 258 + .../node_modules/johnny-five/lib/motor.js | 1154 +++ .../johnny-five/lib/orientation.js | 205 + .../node_modules/johnny-five/lib/piezo.js | 510 + .../node_modules/johnny-five/lib/pin.js | 356 + .../node_modules/johnny-five/lib/ping.js | 113 + .../node_modules/johnny-five/lib/proximity.js | 545 ++ .../johnny-five/lib/reflectancearray.js | 297 + .../node_modules/johnny-five/lib/relay.js | 169 + .../node_modules/johnny-five/lib/repl.js | 106 + .../node_modules/johnny-five/lib/sensor.js | 403 + .../node_modules/johnny-five/lib/servo.js | 669 ++ .../johnny-five/lib/shiftregister.js | 223 + .../node_modules/johnny-five/lib/sleep.js | 6 + .../node_modules/johnny-five/lib/sonar.js | 175 + .../node_modules/johnny-five/lib/stepper.js | 461 + .../node_modules/johnny-five/lib/switch.js | 175 + .../johnny-five/lib/thermometer.js | 1016 ++ .../node_modules/johnny-five/lib/wii.js | 623 ++ .../node_modules/serialport/LICENSE | 18 + .../node_modules/serialport/README.md | 576 ++ .../serialport/bin/serialport-list.js | 43 + .../serialport/bin/serialport-terminal.js | 78 + .../node_modules/serialport/binding.gyp | 51 + .../obj.target/serialport/src/serialport.o | Bin 0 -> 421856 bytes .../serialport/src/serialport_poller.o | Bin 0 -> 245740 bytes .../serialport/src/serialport_unix.o | Bin 0 -> 239116 bytes .../serialport/build/Release/serialport.node | Bin 0 -> 66036 bytes .../node_modules/serialport/changelog.md | 306 + .../node_modules/serialport/lib/bindings.js | 34 + .../node_modules/serialport/lib/list-unix.js | 110 + .../node_modules/serialport/lib/parsers.js | 64 + .../node_modules/serialport/lib/serialport.js | 474 + .../node_modules/node-pre-gyp/CHANGELOG.md | 332 + .../node_modules/node-pre-gyp/LICENSE | 27 + .../node_modules/node-pre-gyp/README.md | 574 ++ .../node_modules/node-pre-gyp/appveyor.yml | 42 + .../node-pre-gyp/bin/node-pre-gyp | 131 + .../node-pre-gyp/bin/node-pre-gyp.cmd | 2 + .../node_modules/node-pre-gyp/lib/build.js | 43 + .../node_modules/node-pre-gyp/lib/clean.js | 23 + .../node-pre-gyp/lib/configure.js | 48 + .../node_modules/node-pre-gyp/lib/info.js | 40 + .../node_modules/node-pre-gyp/lib/install.js | 213 + .../node-pre-gyp/lib/node-pre-gyp.js | 192 + .../node_modules/node-pre-gyp/lib/package.js | 46 + .../node-pre-gyp/lib/pre-binding.js | 25 + .../node_modules/node-pre-gyp/lib/publish.js | 77 + .../node_modules/node-pre-gyp/lib/rebuild.js | 13 + .../node-pre-gyp/lib/reinstall.js | 13 + .../node_modules/node-pre-gyp/lib/reveal.js | 31 + .../node-pre-gyp/lib/testbinary.js | 73 + .../node-pre-gyp/lib/testpackage.js | 49 + .../node-pre-gyp/lib/unpublish.js | 41 + .../node-pre-gyp/lib/util/abi_crosswalk.json | 1346 +++ .../node-pre-gyp/lib/util/compile.js | 87 + .../node-pre-gyp/lib/util/handle_gyp_opts.js | 94 + .../lib/util/nw-pre-gyp/index.html | 26 + .../lib/util/nw-pre-gyp/package.json | 9 + .../node-pre-gyp/lib/util/s3_setup.js | 27 + .../node-pre-gyp/lib/util/versioning.js | 308 + .../node-pre-gyp/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/bin/cmd.js | 33 + .../node_modules/mkdirp/bin/usage.txt | 12 + .../node_modules/mkdirp/examples/pow.js | 6 + .../node-pre-gyp/node_modules/mkdirp/index.js | 98 + .../mkdirp/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 75 + .../node_modules/minimist/readme.markdown | 73 + .../mkdirp/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/dotted.js | 16 + .../mkdirp/node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/mkdirp/package.json | 52 + .../node_modules/mkdirp/readme.markdown | 100 + .../node_modules/mkdirp/test/chmod.js | 41 + .../node_modules/mkdirp/test/clobber.js | 38 + .../node_modules/mkdirp/test/mkdirp.js | 28 + .../node_modules/mkdirp/test/opts_fs.js | 29 + .../node_modules/mkdirp/test/opts_fs_sync.js | 27 + .../node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 36 + .../node_modules/mkdirp/test/race.js | 37 + .../node_modules/mkdirp/test/rel.js | 32 + .../node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../node_modules/mkdirp/test/root.js | 19 + .../node_modules/mkdirp/test/sync.js | 32 + .../node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../node-pre-gyp/node_modules/nopt/LICENSE | 15 + .../node-pre-gyp/node_modules/nopt/README.md | 211 + .../node_modules/nopt/bin/nopt.js | 54 + .../node_modules/nopt/examples/my-program.js | 30 + .../node_modules/nopt/lib/nopt.js | 415 + .../nopt/node_modules/abbrev/LICENSE | 15 + .../nopt/node_modules/abbrev/README.md | 23 + .../nopt/node_modules/abbrev/abbrev.js | 62 + .../nopt/node_modules/abbrev/package.json | 63 + .../node_modules/nopt/package.json | 70 + .../node_modules/nopt/test/basic.js | 273 + .../node_modules/npmlog/CHANGELOG.md | 36 + .../node-pre-gyp/node_modules/npmlog/LICENSE | 15 + .../node_modules/npmlog/README.md | 210 + .../node-pre-gyp/node_modules/npmlog/log.js | 301 + .../node_modules/are-we-there-yet/CHANGES.md | 19 + .../node_modules/are-we-there-yet/LICENSE | 5 + .../node_modules/are-we-there-yet/README.md | 194 + .../node_modules/are-we-there-yet/index.js | 4 + .../node_modules/delegates/History.md | 22 + .../node_modules/delegates/License | 20 + .../node_modules/delegates/Makefile | 8 + .../node_modules/delegates/Readme.md | 94 + .../node_modules/delegates/index.js | 121 + .../node_modules/delegates/package.json | 58 + .../node_modules/delegates/test/index.js | 94 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 40 + .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 941 ++ .../readable-stream/lib/_stream_transform.js | 182 + .../readable-stream/lib/_stream_writable.js | 554 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 101 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../are-we-there-yet/package.json | 64 + .../are-we-there-yet/test/lib/test-event.js | 29 + .../are-we-there-yet/test/tracker.js | 57 + .../are-we-there-yet/test/trackergroup.js | 96 + .../are-we-there-yet/test/trackerstream.js | 51 + .../are-we-there-yet/tracker-base.js | 11 + .../are-we-there-yet/tracker-group.js | 107 + .../are-we-there-yet/tracker-stream.js | 35 + .../node_modules/are-we-there-yet/tracker.js | 30 + .../console-control-strings/LICENSE | 13 + .../console-control-strings/README.md | 145 + .../console-control-strings/index.js | 125 + .../console-control-strings/package.json | 70 + .../npmlog/node_modules/gauge/CHANGELOG.md | 131 + .../npmlog/node_modules/gauge/LICENSE | 13 + .../npmlog/node_modules/gauge/README.md | 395 + .../npmlog/node_modules/gauge/base-theme.js | 14 + .../npmlog/node_modules/gauge/error.js | 24 + .../npmlog/node_modules/gauge/has-color.js | 12 + .../npmlog/node_modules/gauge/index.js | 226 + .../gauge/node_modules/aproba/LICENSE | 14 + .../gauge/node_modules/aproba/README.md | 59 + .../gauge/node_modules/aproba/index.js | 62 + .../gauge/node_modules/aproba/package.json | 70 + .../gauge/node_modules/has-color/index.js | 32 + .../gauge/node_modules/has-color/package.json | 79 + .../gauge/node_modules/has-color/readme.md | 30 + .../gauge/node_modules/has-unicode/LICENSE | 14 + .../gauge/node_modules/has-unicode/README.md | 43 + .../gauge/node_modules/has-unicode/index.js | 16 + .../node_modules/has-unicode/package.json | 68 + .../gauge/node_modules/object-assign/index.js | 83 + .../gauge/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 63 + .../node_modules/object-assign/readme.md | 56 + .../node_modules/signal-exit/CHANGELOG.md | 27 + .../node_modules/signal-exit/LICENSE.txt | 16 + .../gauge/node_modules/signal-exit/README.md | 40 + .../gauge/node_modules/signal-exit/index.js | 148 + .../node_modules/signal-exit/package.json | 80 + .../gauge/node_modules/signal-exit/signals.js | 53 + .../gauge/node_modules/string-width/index.js | 37 + .../gauge/node_modules/string-width/license | 21 + .../node_modules/code-point-at/index.js | 32 + .../node_modules/code-point-at/license | 21 + .../node_modules/code-point-at/package.json | 80 + .../node_modules/code-point-at/readme.md | 32 + .../is-fullwidth-code-point/index.js | 46 + .../is-fullwidth-code-point/license | 21 + .../node_modules/number-is-nan/index.js | 4 + .../node_modules/number-is-nan/license | 21 + .../node_modules/number-is-nan/package.json | 77 + .../node_modules/number-is-nan/readme.md | 28 + .../is-fullwidth-code-point/package.json | 65 + .../is-fullwidth-code-point/readme.md | 39 + .../node_modules/string-width/package.json | 98 + .../gauge/node_modules/string-width/readme.md | 42 + .../gauge/node_modules/strip-ansi/index.js | 6 + .../gauge/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 90 + .../gauge/node_modules/strip-ansi/readme.md | 33 + .../gauge/node_modules/wide-align/LICENSE | 14 + .../gauge/node_modules/wide-align/README.md | 47 + .../gauge/node_modules/wide-align/align.js | 65 + .../node_modules/wide-align/package.json | 67 + .../node_modules/wide-align/test/align.js | 37 + .../npmlog/node_modules/gauge/package.json | 100 + .../npmlog/node_modules/gauge/plumbing.js | 47 + .../npmlog/node_modules/gauge/process.js | 3 + .../npmlog/node_modules/gauge/progress-bar.js | 35 + .../node_modules/gauge/render-template.js | 181 + .../node_modules/gauge/set-immediate.js | 7 + .../npmlog/node_modules/gauge/set-interval.js | 3 + .../npmlog/node_modules/gauge/spin.js | 5 + .../node_modules/gauge/template-item.js | 73 + .../npmlog/node_modules/gauge/theme-set.js | 115 + .../npmlog/node_modules/gauge/themes.js | 54 + .../node_modules/gauge/wide-truncate.js | 25 + .../node_modules/set-blocking/CHANGELOG.md | 26 + .../node_modules/set-blocking/LICENSE.txt | 14 + .../node_modules/set-blocking/README.md | 31 + .../npmlog/node_modules/set-blocking/index.js | 7 + .../node_modules/set-blocking/package.json | 80 + .../node_modules/npmlog/package.json | 82 + .../node_modules/rc/LICENSE.APACHE2 | 15 + .../node-pre-gyp/node_modules/rc/LICENSE.BSD | 26 + .../node-pre-gyp/node_modules/rc/LICENSE.MIT | 24 + .../node-pre-gyp/node_modules/rc/README.md | 149 + .../node-pre-gyp/node_modules/rc/browser.js | 7 + .../node-pre-gyp/node_modules/rc/index.js | 60 + .../node-pre-gyp/node_modules/rc/lib/utils.js | 103 + .../rc/node_modules/deep-extend/CHANGELOG.md | 21 + .../rc/node_modules/deep-extend/LICENSE | 20 + .../rc/node_modules/deep-extend/README.md | 90 + .../rc/node_modules/deep-extend/index.js | 1 + .../deep-extend/lib/deep-extend.js | 144 + .../rc/node_modules/deep-extend/package.json | 94 + .../node_modules/rc/node_modules/ini/LICENSE | 15 + .../rc/node_modules/ini/README.md | 102 + .../node_modules/rc/node_modules/ini/ini.js | 190 + .../rc/node_modules/ini/package.json | 63 + .../rc/node_modules/minimist/LICENSE | 18 + .../rc/node_modules/minimist/example/parse.js | 2 + .../rc/node_modules/minimist/index.js | 236 + .../rc/node_modules/minimist/package.json | 79 + .../rc/node_modules/minimist/readme.markdown | 91 + .../rc/node_modules/minimist/test/all_bool.js | 32 + .../rc/node_modules/minimist/test/bool.js | 166 + .../rc/node_modules/minimist/test/dash.js | 31 + .../minimist/test/default_bool.js | 35 + .../rc/node_modules/minimist/test/dotted.js | 22 + .../rc/node_modules/minimist/test/kv_short.js | 16 + .../rc/node_modules/minimist/test/long.js | 31 + .../rc/node_modules/minimist/test/num.js | 36 + .../rc/node_modules/minimist/test/parse.js | 197 + .../minimist/test/parse_modified.js | 9 + .../rc/node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/stop_early.js | 15 + .../rc/node_modules/minimist/test/unknown.js | 102 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/strip-json-comments/cli.js | 41 + .../node_modules/strip-json-comments/license | 21 + .../strip-json-comments/package.json | 69 + .../strip-json-comments/readme.md | 80 + .../strip-json-comments.js | 73 + .../node-pre-gyp/node_modules/rc/package.json | 70 + .../node-pre-gyp/node_modules/rc/test/ini.js | 16 + .../node_modules/rc/test/nested-env-vars.js | 40 + .../node-pre-gyp/node_modules/rc/test/test.js | 59 + .../node_modules/request/CHANGELOG.md | 655 ++ .../node_modules/request/CONTRIBUTING.md | 81 + .../node-pre-gyp/node_modules/request/LICENSE | 55 + .../node_modules/request/README.md | 1098 +++ .../node_modules/request/codecov.yml | 2 + .../node_modules/request/index.js | 156 + .../node_modules/request/lib/auth.js | 168 + .../node_modules/request/lib/cookies.js | 39 + .../request/lib/getProxyFromURI.js | 79 + .../node_modules/request/lib/har.js | 215 + .../node_modules/request/lib/helpers.js | 65 + .../node_modules/request/lib/multipart.js | 112 + .../node_modules/request/lib/oauth.js | 147 + .../node_modules/request/lib/querystring.js | 51 + .../node_modules/request/lib/redirect.js | 157 + .../node_modules/request/lib/tunnel.js | 176 + .../request/node_modules/aws-sign2/LICENSE | 55 + .../request/node_modules/aws-sign2/README.md | 4 + .../request/node_modules/aws-sign2/index.js | 212 + .../node_modules/aws-sign2/package.json | 55 + .../request/node_modules/aws4/LICENSE | 19 + .../request/node_modules/aws4/README.md | 523 ++ .../request/node_modules/aws4/aws4.js | 323 + .../request/node_modules/aws4/lru.js | 96 + .../request/node_modules/aws4/package.json | 114 + .../request/node_modules/caseless/LICENSE | 28 + .../request/node_modules/caseless/README.md | 45 + .../request/node_modules/caseless/index.js | 66 + .../node_modules/caseless/package.json | 70 + .../request/node_modules/caseless/test.js | 40 + .../node_modules/combined-stream/License | 19 + .../node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 188 + .../node_modules/delayed-stream/License | 19 + .../node_modules/delayed-stream/Makefile | 7 + .../node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + .../node_modules/delayed-stream/package.json | 71 + .../node_modules/combined-stream/package.json | 75 + .../request/node_modules/extend/CHANGELOG.md | 69 + .../request/node_modules/extend/LICENSE | 23 + .../request/node_modules/extend/README.md | 62 + .../node_modules/extend/component.json | 32 + .../request/node_modules/extend/index.js | 86 + .../request/node_modules/extend/package.json | 80 + .../node_modules/forever-agent/LICENSE | 55 + .../node_modules/forever-agent/README.md | 4 + .../node_modules/forever-agent/index.js | 138 + .../node_modules/forever-agent/package.json | 62 + .../request/node_modules/form-data/License | 19 + .../request/node_modules/form-data/README.md | 217 + .../node_modules/form-data/lib/browser.js | 2 + .../node_modules/form-data/lib/form_data.js | 440 + .../node_modules/form-data/lib/populate.js | 10 + .../form-data/node_modules/asynckit/LICENSE | 21 + .../form-data/node_modules/asynckit/README.md | 233 + .../form-data/node_modules/asynckit/bench.js | 76 + .../form-data/node_modules/asynckit/index.js | 6 + .../node_modules/asynckit/lib/abort.js | 29 + .../node_modules/asynckit/lib/async.js | 34 + .../node_modules/asynckit/lib/defer.js | 26 + .../node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + .../asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + .../node_modules/asynckit/lib/state.js | 37 + .../node_modules/asynckit/lib/streamify.js | 141 + .../node_modules/asynckit/lib/terminator.js | 29 + .../node_modules/asynckit/package.json | 100 + .../node_modules/asynckit/parallel.js | 43 + .../form-data/node_modules/asynckit/serial.js | 17 + .../node_modules/asynckit/serialOrdered.js | 75 + .../form-data/node_modules/asynckit/stream.js | 21 + .../node_modules/form-data/package.json | 119 + .../node_modules/har-validator/LICENSE | 13 + .../node_modules/har-validator/README.md | 309 + .../har-validator/bin/har-validator | 56 + .../node_modules/har-validator/lib/async.js | 14 + .../node_modules/har-validator/lib/error.js | 10 + .../node_modules/har-validator/lib/index.js | 22 + .../node_modules/har-validator/lib/runner.js | 29 + .../har-validator/lib/schemas/cache.json | 13 + .../har-validator/lib/schemas/cacheEntry.json | 31 + .../har-validator/lib/schemas/content.json | 27 + .../har-validator/lib/schemas/cookie.json | 34 + .../har-validator/lib/schemas/creator.json | 18 + .../har-validator/lib/schemas/entry.json | 51 + .../har-validator/lib/schemas/har.json | 11 + .../har-validator/lib/schemas/index.js | 49 + .../har-validator/lib/schemas/log.json | 34 + .../har-validator/lib/schemas/page.json | 30 + .../lib/schemas/pageTimings.json | 16 + .../har-validator/lib/schemas/postData.json | 41 + .../har-validator/lib/schemas/record.json | 18 + .../har-validator/lib/schemas/request.json | 55 + .../har-validator/lib/schemas/response.json | 52 + .../har-validator/lib/schemas/timings.json | 40 + .../har-validator/node_modules/chalk/index.js | 116 + .../har-validator/node_modules/chalk/license | 21 + .../chalk/node_modules/ansi-styles/index.js | 65 + .../chalk/node_modules/ansi-styles/license | 21 + .../node_modules/ansi-styles/package.json | 79 + .../chalk/node_modules/ansi-styles/readme.md | 86 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 83 + .../escape-string-regexp/readme.md | 27 + .../chalk/node_modules/has-ansi/index.js | 4 + .../chalk/node_modules/has-ansi/license | 21 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../has-ansi/node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../chalk/node_modules/has-ansi/package.json | 83 + .../chalk/node_modules/has-ansi/readme.md | 36 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../chalk/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 89 + .../chalk/node_modules/strip-ansi/readme.md | 33 + .../node_modules/supports-color/index.js | 50 + .../chalk/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 78 + .../node_modules/supports-color/readme.md | 36 + .../node_modules/chalk/package.json | 102 + .../node_modules/chalk/readme.md | 213 + .../node_modules/is-my-json-valid/LICENSE | 21 + .../node_modules/is-my-json-valid/README.md | 173 + .../node_modules/is-my-json-valid/example.js | 18 + .../node_modules/is-my-json-valid/formats.js | 14 + .../node_modules/is-my-json-valid/index.js | 594 ++ .../node_modules/generate-function/README.md | 72 + .../node_modules/generate-function/example.js | 27 + .../node_modules/generate-function/index.js | 61 + .../generate-function/package.json | 45 + .../node_modules/generate-function/test.js | 33 + .../generate-object-property/LICENSE | 21 + .../generate-object-property/README.md | 19 + .../generate-object-property/index.js | 12 + .../node_modules/is-property/LICENSE | 22 + .../node_modules/is-property/README.md | 28 + .../node_modules/is-property/is-property.js | 5 + .../node_modules/is-property/package.json | 51 + .../generate-object-property/package.json | 41 + .../generate-object-property/test.js | 12 + .../node_modules/jsonpointer/LICENSE.md | 21 + .../node_modules/jsonpointer/README.md | 39 + .../node_modules/jsonpointer/benchmark.js | 56 + .../node_modules/jsonpointer/jsonpointer.js | 93 + .../node_modules/jsonpointer/package.json | 83 + .../node_modules/jsonpointer/test.js | 131 + .../node_modules/xtend/LICENCE | 19 + .../node_modules/xtend/Makefile | 4 + .../node_modules/xtend/README.md | 32 + .../node_modules/xtend/immutable.js | 19 + .../node_modules/xtend/mutable.js | 17 + .../node_modules/xtend/package.json | 74 + .../node_modules/xtend/test.js | 83 + .../is-my-json-valid/package.json | 90 + .../node_modules/is-my-json-valid/require.js | 12 + .../is-my-json-valid/test/fixtures/cosmic.js | 84 + .../json-schema-draft4/additionalItems.json | 82 + .../additionalProperties.json | 88 + .../test/json-schema-draft4/allOf.json | 112 + .../test/json-schema-draft4/anyOf.json | 68 + .../test/json-schema-draft4/bignum.json | 107 + .../test/json-schema-draft4/default.json | 49 + .../test/json-schema-draft4/definitions.json | 32 + .../test/json-schema-draft4/dependencies.json | 113 + .../test/json-schema-draft4/enum.json | 72 + .../test/json-schema-draft4/format.json | 143 + .../test/json-schema-draft4/items.json | 46 + .../test/json-schema-draft4/maxItems.json | 28 + .../test/json-schema-draft4/maxLength.json | 28 + .../json-schema-draft4/maxProperties.json | 28 + .../test/json-schema-draft4/maximum.json | 42 + .../test/json-schema-draft4/minItems.json | 28 + .../test/json-schema-draft4/minLength.json | 28 + .../json-schema-draft4/minProperties.json | 28 + .../test/json-schema-draft4/minimum.json | 42 + .../test/json-schema-draft4/multipleOf.json | 96 + .../test/json-schema-draft4/not.json | 96 + .../json-schema-draft4/nullAndFormat.json | 18 + .../json-schema-draft4/nullAndObject.json | 18 + .../test/json-schema-draft4/oneOf.json | 68 + .../test/json-schema-draft4/pattern.json | 23 + .../json-schema-draft4/patternProperties.json | 110 + .../test/json-schema-draft4/properties.json | 92 + .../test/json-schema-draft4/ref.json | 128 + .../test/json-schema-draft4/refRemote.json | 74 + .../test/json-schema-draft4/required.json | 39 + .../test/json-schema-draft4/type.json | 330 + .../test/json-schema-draft4/uniqueItems.json | 79 + .../is-my-json-valid/test/json-schema.js | 23 + .../is-my-json-valid/test/misc.js | 471 + .../node_modules/pinkie-promise/index.js | 3 + .../node_modules/pinkie-promise/license | 21 + .../node_modules/pinkie/index.js | 292 + .../node_modules/pinkie/license | 21 + .../node_modules/pinkie/package.json | 57 + .../node_modules/pinkie/readme.md | 83 + .../node_modules/pinkie-promise/package.json | 55 + .../node_modules/pinkie-promise/readme.md | 28 + .../node_modules/har-validator/package.json | 94 + .../request/node_modules/hawk/LICENSE | 28 + .../request/node_modules/hawk/README.md | 634 ++ .../request/node_modules/hawk/bower.json | 24 + .../request/node_modules/hawk/component.json | 19 + .../request/node_modules/hawk/dist/client.js | 343 + .../node_modules/hawk/example/usage.js | 78 + .../request/node_modules/hawk/images/hawk.png | Bin 0 -> 6945 bytes .../request/node_modules/hawk/images/logo.png | Bin 0 -> 71732 bytes .../request/node_modules/hawk/lib/browser.js | 637 ++ .../request/node_modules/hawk/lib/client.js | 369 + .../request/node_modules/hawk/lib/crypto.js | 126 + .../request/node_modules/hawk/lib/index.js | 15 + .../request/node_modules/hawk/lib/server.js | 548 ++ .../request/node_modules/hawk/lib/utils.js | 184 + .../hawk/node_modules/boom/CONTRIBUTING.md | 1 + .../hawk/node_modules/boom/LICENSE | 28 + .../hawk/node_modules/boom/README.md | 652 ++ .../hawk/node_modules/boom/images/boom.png | Bin 0 -> 29479 bytes .../hawk/node_modules/boom/lib/index.js | 318 + .../hawk/node_modules/boom/package.json | 72 + .../hawk/node_modules/boom/test/index.js | 654 ++ .../hawk/node_modules/cryptiles/LICENSE | 28 + .../hawk/node_modules/cryptiles/README.md | 16 + .../hawk/node_modules/cryptiles/lib/index.js | 68 + .../hawk/node_modules/cryptiles/package.json | 68 + .../hawk/node_modules/cryptiles/test/index.js | 102 + .../hawk/node_modules/hoek/CONTRIBUTING.md | 1 + .../hawk/node_modules/hoek/LICENSE | 31 + .../hawk/node_modules/hoek/README.md | 584 ++ .../hawk/node_modules/hoek/images/hoek.png | Bin 0 -> 37939 bytes .../hawk/node_modules/hoek/lib/escape.js | 132 + .../hawk/node_modules/hoek/lib/index.js | 993 ++ .../hawk/node_modules/hoek/package.json | 70 + .../hawk/node_modules/hoek/test/escaper.js | 88 + .../hawk/node_modules/hoek/test/index.js | 2513 +++++ .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 + .../node_modules/hoek/test/modules/test2.js | 1 + .../node_modules/hoek/test/modules/test3.js | 1 + .../hawk/node_modules/sntp/LICENSE | 28 + .../hawk/node_modules/sntp/Makefile | 9 + .../hawk/node_modules/sntp/README.md | 68 + .../hawk/node_modules/sntp/examples/offset.js | 16 + .../hawk/node_modules/sntp/examples/time.js | 25 + .../hawk/node_modules/sntp/index.js | 1 + .../hawk/node_modules/sntp/lib/index.js | 412 + .../hawk/node_modules/sntp/package.json | 72 + .../hawk/node_modules/sntp/test/index.js | 435 + .../request/node_modules/hawk/package.json | 75 + .../request/node_modules/hawk/test/browser.js | 1492 +++ .../request/node_modules/hawk/test/client.js | 440 + .../request/node_modules/hawk/test/crypto.js | 70 + .../request/node_modules/hawk/test/index.js | 378 + .../request/node_modules/hawk/test/readme.js | 95 + .../request/node_modules/hawk/test/server.js | 1329 +++ .../request/node_modules/hawk/test/uri.js | 838 ++ .../request/node_modules/hawk/test/utils.js | 149 + .../node_modules/http-signature/CHANGES.md | 46 + .../node_modules/http-signature/LICENSE | 18 + .../node_modules/http-signature/README.md | 79 + .../http-signature/http_signing.md | 363 + .../node_modules/http-signature/lib/index.js | 29 + .../node_modules/http-signature/lib/parser.js | 318 + .../node_modules/http-signature/lib/signer.js | 399 + .../node_modules/http-signature/lib/utils.js | 112 + .../node_modules/http-signature/lib/verify.js | 88 + .../node_modules/assert-plus/AUTHORS | 6 + .../node_modules/assert-plus/CHANGES.md | 8 + .../node_modules/assert-plus/README.md | 155 + .../node_modules/assert-plus/assert.js | 206 + .../node_modules/assert-plus/package.json | 89 + .../node_modules/jsprim/CHANGES.md | 39 + .../node_modules/jsprim/LICENSE | 19 + .../node_modules/jsprim/README.md | 237 + .../node_modules/jsprim/lib/jsprim.js | 488 + .../jsprim/node_modules/extsprintf/LICENSE | 19 + .../jsprim/node_modules/extsprintf/Makefile | 23 + .../node_modules/extsprintf/Makefile.deps | 39 + .../node_modules/extsprintf/Makefile.targ | 285 + .../jsprim/node_modules/extsprintf/README.md | 39 + .../extsprintf/examples/simple.js | 2 + .../node_modules/extsprintf/jsl.node.conf | 137 + .../node_modules/extsprintf/lib/extsprintf.js | 166 + .../node_modules/extsprintf/package.json | 48 + .../jsprim/node_modules/json-schema/README.md | 5 + .../json-schema/draft-00/hyper-schema | 68 + .../json-schema/draft-00/json-ref | 26 + .../node_modules/json-schema/draft-00/links | 33 + .../node_modules/json-schema/draft-00/schema | 155 + .../json-schema/draft-01/hyper-schema | 68 + .../json-schema/draft-01/json-ref | 26 + .../node_modules/json-schema/draft-01/links | 33 + .../node_modules/json-schema/draft-01/schema | 155 + .../json-schema/draft-02/hyper-schema | 68 + .../json-schema/draft-02/json-ref | 26 + .../node_modules/json-schema/draft-02/links | 35 + .../node_modules/json-schema/draft-02/schema | 166 + .../json-schema/draft-03/examples/address | 20 + .../json-schema/draft-03/examples/calendar | 53 + .../json-schema/draft-03/examples/card | 105 + .../json-schema/draft-03/examples/geo | 8 + .../json-schema/draft-03/examples/interfaces | 23 + .../json-schema/draft-03/hyper-schema | 60 + .../json-schema/draft-03/json-ref | 26 + .../node_modules/json-schema/draft-03/links | 35 + .../node_modules/json-schema/draft-03/schema | 174 + .../json-schema/draft-04/hyper-schema | 60 + .../node_modules/json-schema/draft-04/links | 41 + .../node_modules/json-schema/draft-04/schema | 189 + .../json-schema/draft-zyp-json-schema-03.xml | 1120 +++ .../json-schema/draft-zyp-json-schema-04.xml | 1072 +++ .../node_modules/json-schema/lib/links.js | 66 + .../node_modules/json-schema/lib/validate.js | 273 + .../node_modules/json-schema/package.json | 74 + .../node_modules/json-schema/test/tests.js | 95 + .../jsprim/node_modules/verror/LICENSE | 19 + .../jsprim/node_modules/verror/Makefile | 35 + .../jsprim/node_modules/verror/Makefile.targ | 285 + .../jsprim/node_modules/verror/README.md | 120 + .../verror/examples/levels-verror.js | 36 + .../verror/examples/levels-werror.js | 34 + .../node_modules/verror/examples/varargs.js | 6 + .../node_modules/verror/examples/verror.js | 13 + .../node_modules/verror/examples/werror.js | 14 + .../jsprim/node_modules/verror/jsl.node.conf | 139 + .../jsprim/node_modules/verror/lib/verror.js | 157 + .../jsprim/node_modules/verror/package.json | 52 + .../node_modules/verror/tests/tst.inherit.js | 100 + .../node_modules/verror/tests/tst.verror.js | 156 + .../node_modules/verror/tests/tst.werror.js | 179 + .../node_modules/jsprim/package.json | 59 + .../http-signature/node_modules/sshpk/LICENSE | 18 + .../node_modules/sshpk/README.md | 666 ++ .../node_modules/sshpk/bin/sshpk-conv | 201 + .../node_modules/sshpk/bin/sshpk-sign | 191 + .../node_modules/sshpk/bin/sshpk-verify | 166 + .../node_modules/sshpk/lib/algs.js | 168 + .../node_modules/sshpk/lib/certificate.js | 291 + .../node_modules/sshpk/lib/dhe.js | 311 + .../node_modules/sshpk/lib/ed-compat.js | 96 + .../node_modules/sshpk/lib/errors.js | 84 + .../node_modules/sshpk/lib/fingerprint.js | 161 + .../node_modules/sshpk/lib/formats/auto.js | 73 + .../sshpk/lib/formats/openssh-cert.js | 289 + .../node_modules/sshpk/lib/formats/pem.js | 186 + .../node_modules/sshpk/lib/formats/pkcs1.js | 320 + .../node_modules/sshpk/lib/formats/pkcs8.js | 505 + .../node_modules/sshpk/lib/formats/rfc4253.js | 146 + .../sshpk/lib/formats/ssh-private.js | 261 + .../node_modules/sshpk/lib/formats/ssh.js | 114 + .../sshpk/lib/formats/x509-pem.js | 77 + .../node_modules/sshpk/lib/formats/x509.js | 484 + .../node_modules/sshpk/lib/identity.js | 255 + .../node_modules/sshpk/lib/index.js | 38 + .../node_modules/sshpk/lib/key.js | 270 + .../node_modules/sshpk/lib/private-key.js | 231 + .../node_modules/sshpk/lib/signature.js | 245 + .../node_modules/sshpk/lib/ssh-buffer.js | 148 + .../node_modules/sshpk/lib/utils.js | 288 + .../node_modules/sshpk/man/man1/sshpk-conv.1 | 135 + .../node_modules/sshpk/man/man1/sshpk-sign.1 | 81 + .../sshpk/man/man1/sshpk-verify.1 | 68 + .../sshpk/node_modules/asn1/LICENSE | 19 + .../sshpk/node_modules/asn1/README.md | 50 + .../sshpk/node_modules/asn1/lib/ber/errors.js | 13 + .../sshpk/node_modules/asn1/lib/ber/index.js | 27 + .../sshpk/node_modules/asn1/lib/ber/reader.js | 261 + .../sshpk/node_modules/asn1/lib/ber/types.js | 36 + .../sshpk/node_modules/asn1/lib/ber/writer.js | 316 + .../sshpk/node_modules/asn1/lib/index.js | 20 + .../sshpk/node_modules/asn1/package.json | 72 + .../node_modules/asn1/tst/ber/reader.test.js | 208 + .../node_modules/asn1/tst/ber/writer.test.js | 370 + .../sshpk/node_modules/assert-plus/AUTHORS | 6 + .../sshpk/node_modules/assert-plus/CHANGES.md | 14 + .../sshpk/node_modules/assert-plus/README.md | 162 + .../sshpk/node_modules/assert-plus/assert.js | 211 + .../node_modules/assert-plus/package.json | 91 + .../sshpk/node_modules/bcrypt-pbkdf/README.md | 39 + .../sshpk/node_modules/bcrypt-pbkdf/index.js | 559 ++ .../node_modules/bcrypt-pbkdf/package.json | 46 + .../sshpk/node_modules/dashdash/README.md | 574 ++ .../dashdash/etc/dashdash.bash_completion.in | 388 + .../node_modules/dashdash/lib/dashdash.js | 1055 +++ .../sshpk/node_modules/dashdash/package.json | 98 + .../sshpk/node_modules/ecc-jsbn/LICENSE | 21 + .../sshpk/node_modules/ecc-jsbn/README.md | 8 + .../sshpk/node_modules/ecc-jsbn/index.js | 57 + .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 + .../sshpk/node_modules/ecc-jsbn/lib/ec.js | 561 ++ .../sshpk/node_modules/ecc-jsbn/lib/sec.js | 170 + .../sshpk/node_modules/ecc-jsbn/package.json | 64 + .../sshpk/node_modules/ecc-jsbn/test.js | 14 + .../sshpk/node_modules/getpass/LICENSE | 18 + .../sshpk/node_modules/getpass/README.md | 32 + .../sshpk/node_modules/getpass/lib/index.js | 123 + .../sshpk/node_modules/getpass/package.json | 64 + .../sshpk/node_modules/jodid25519/AUTHORS.md | 3 + .../sshpk/node_modules/jodid25519/LICENSE | 23 + .../sshpk/node_modules/jodid25519/README.md | 51 + .../sshpk/node_modules/jodid25519/almond.0 | 42 + .../sshpk/node_modules/jodid25519/almond.1 | 13 + .../sshpk/node_modules/jodid25519/index.js | 35 + .../sshpk/node_modules/jodid25519/jsdoc.json | 19 + .../sshpk/node_modules/jodid25519/lib/core.js | 481 + .../node_modules/jodid25519/lib/curve255.js | 221 + .../sshpk/node_modules/jodid25519/lib/dh.js | 111 + .../node_modules/jodid25519/lib/eddsa.js | 573 ++ .../node_modules/jodid25519/lib/utils.js | 198 + .../node_modules/jodid25519/package.json | 78 + .../sshpk/node_modules/jsbn/LICENSE | 40 + .../sshpk/node_modules/jsbn/README.md | 175 + .../sshpk/node_modules/jsbn/example.html | 12 + .../sshpk/node_modules/jsbn/example.js | 3 + .../sshpk/node_modules/jsbn/index.js | 1358 +++ .../sshpk/node_modules/jsbn/package.json | 61 + .../sshpk/node_modules/tweetnacl/CHANGELOG.md | 181 + .../sshpk/node_modules/tweetnacl/COPYING.txt | 9 + .../sshpk/node_modules/tweetnacl/README.md | 445 + .../sshpk/node_modules/tweetnacl/nacl-fast.js | 2388 +++++ .../node_modules/tweetnacl/nacl-fast.min.js | 2 + .../sshpk/node_modules/tweetnacl/nacl.js | 1175 +++ .../sshpk/node_modules/tweetnacl/nacl.min.js | 1 + .../sshpk/node_modules/tweetnacl/package.json | 94 + .../node_modules/sshpk/package.json | 109 + .../node_modules/http-signature/package.json | 90 + .../node_modules/is-typedarray/LICENSE.md | 18 + .../node_modules/is-typedarray/README.md | 16 + .../node_modules/is-typedarray/index.js | 41 + .../node_modules/is-typedarray/package.json | 64 + .../node_modules/is-typedarray/test.js | 34 + .../request/node_modules/isstream/LICENSE.md | 11 + .../request/node_modules/isstream/README.md | 66 + .../request/node_modules/isstream/isstream.js | 27 + .../node_modules/isstream/package.json | 67 + .../request/node_modules/isstream/test.js | 168 + .../json-stringify-safe/CHANGELOG.md | 14 + .../node_modules/json-stringify-safe/LICENSE | 15 + .../node_modules/json-stringify-safe/Makefile | 35 + .../json-stringify-safe/README.md | 52 + .../json-stringify-safe/package.json | 76 + .../json-stringify-safe/stringify.js | 27 + .../json-stringify-safe/test/mocha.opts | 2 + .../test/stringify_test.js | 246 + .../node_modules/mime-types/HISTORY.md | 204 + .../request/node_modules/mime-types/LICENSE | 23 + .../request/node_modules/mime-types/README.md | 103 + .../request/node_modules/mime-types/index.js | 188 + .../node_modules/mime-db/HISTORY.md | 365 + .../mime-types/node_modules/mime-db/LICENSE | 22 + .../mime-types/node_modules/mime-db/README.md | 82 + .../mime-types/node_modules/mime-db/db.json | 6692 +++++++++++++ .../mime-types/node_modules/mime-db/index.js | 11 + .../node_modules/mime-db/package.json | 107 + .../node_modules/mime-types/package.json | 102 + .../request/node_modules/node-uuid/LICENSE.md | 21 + .../request/node_modules/node-uuid/README.md | 254 + .../node-uuid/benchmark/README.md | 53 + .../node-uuid/benchmark/bench.gnu | 174 + .../node_modules/node-uuid/benchmark/bench.sh | 34 + .../node-uuid/benchmark/benchmark-native.c | 34 + .../node-uuid/benchmark/benchmark.js | 84 + .../request/node_modules/node-uuid/bin/uuid | 26 + .../request/node_modules/node-uuid/bower.json | 23 + .../node_modules/node-uuid/component.json | 25 + .../node_modules/node-uuid/package.json | 87 + .../node_modules/node-uuid/test/compare_v1.js | 63 + .../node_modules/node-uuid/test/test.html | 17 + .../node_modules/node-uuid/test/test.js | 231 + .../request/node_modules/node-uuid/uuid.js | 272 + .../request/node_modules/oauth-sign/LICENSE | 55 + .../request/node_modules/oauth-sign/README.md | 4 + .../request/node_modules/oauth-sign/index.js | 136 + .../node_modules/oauth-sign/package.json | 72 + .../request/node_modules/qs/CHANGELOG.md | 144 + .../request/node_modules/qs/CONTRIBUTING.md | 1 + .../request/node_modules/qs/LICENSE | 28 + .../request/node_modules/qs/README.md | 398 + .../request/node_modules/qs/dist/qs.js | 574 ++ .../request/node_modules/qs/lib/formats.js | 18 + .../request/node_modules/qs/lib/index.js | 11 + .../request/node_modules/qs/lib/parse.js | 166 + .../request/node_modules/qs/lib/stringify.js | 187 + .../request/node_modules/qs/lib/utils.js | 180 + .../request/node_modules/qs/package.json | 95 + .../request/node_modules/qs/test/index.js | 7 + .../request/node_modules/qs/test/parse.js | 459 + .../request/node_modules/qs/test/stringify.js | 538 ++ .../request/node_modules/qs/test/utils.js | 22 + .../node_modules/stringstream/LICENSE.txt | 22 + .../node_modules/stringstream/README.md | 38 + .../node_modules/stringstream/example.js | 27 + .../node_modules/stringstream/package.json | 59 + .../node_modules/stringstream/stringstream.js | 102 + .../request/node_modules/tough-cookie/LICENSE | 27 + .../node_modules/tough-cookie/README.md | 506 + .../node_modules/tough-cookie/lib/cookie.js | 1336 +++ .../node_modules/tough-cookie/lib/memstore.js | 170 + .../tough-cookie/lib/pathMatch.js | 61 + .../tough-cookie/lib/permuteDomain.js | 56 + .../tough-cookie/lib/pubsuffix.js | 98 + .../node_modules/tough-cookie/lib/store.js | 71 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 176 + .../node_modules/punycode/package.json | 76 + .../node_modules/punycode/punycode.js | 533 ++ .../node_modules/tough-cookie/package.json | 109 + .../request/node_modules/tunnel-agent/LICENSE | 55 + .../node_modules/tunnel-agent/README.md | 4 + .../node_modules/tunnel-agent/index.js | 243 + .../node_modules/tunnel-agent/package.json | 74 + .../node_modules/request/package.json | 134 + .../node_modules/request/request.js | 1471 +++ .../node-pre-gyp/node_modules/rimraf/LICENSE | 15 + .../node_modules/rimraf/README.md | 101 + .../node-pre-gyp/node_modules/rimraf/bin.js | 40 + .../rimraf/node_modules/glob/LICENSE | 15 + .../rimraf/node_modules/glob/README.md | 368 + .../rimraf/node_modules/glob/changelog.md | 67 + .../rimraf/node_modules/glob/common.js | 240 + .../rimraf/node_modules/glob/glob.js | 792 ++ .../glob/node_modules/fs.realpath/LICENSE | 43 + .../glob/node_modules/fs.realpath/README.md | 33 + .../glob/node_modules/fs.realpath/index.js | 66 + .../glob/node_modules/fs.realpath/old.js | 303 + .../node_modules/fs.realpath/package.json | 47 + .../glob/node_modules/inflight/LICENSE | 15 + .../glob/node_modules/inflight/README.md | 37 + .../glob/node_modules/inflight/inflight.js | 54 + .../inflight/node_modules/wrappy/LICENSE | 15 + .../inflight/node_modules/wrappy/README.md | 36 + .../inflight/node_modules/wrappy/package.json | 46 + .../inflight/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/inflight/package.json | 79 + .../glob/node_modules/inherits/LICENSE | 16 + .../glob/node_modules/inherits/README.md | 42 + .../glob/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../glob/node_modules/inherits/package.json | 71 + .../glob/node_modules/minimatch/LICENSE | 15 + .../glob/node_modules/minimatch/README.md | 209 + .../glob/node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../glob/node_modules/minimatch/package.json | 71 + .../glob/node_modules/once/LICENSE | 15 + .../glob/node_modules/once/README.md | 79 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/once/once.js | 42 + .../glob/node_modules/once/package.json | 75 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 85 + .../node_modules/path-is-absolute/readme.md | 59 + .../rimraf/node_modules/glob/package.json | 85 + .../rimraf/node_modules/glob/sync.js | 486 + .../node_modules/rimraf/package.json | 76 + .../node_modules/rimraf/rimraf.js | 343 + .../node-pre-gyp/node_modules/semver/LICENSE | 15 + .../node_modules/semver/README.md | 350 + .../node_modules/semver/bin/semver | 133 + .../node_modules/semver/package.json | 68 + .../node_modules/semver/range.bnf | 16 + .../node_modules/semver/semver.js | 1203 +++ .../node_modules/tar-pack/LICENSE | 23 + .../node_modules/tar-pack/README.md | 84 + .../node_modules/tar-pack/index.js | 245 + .../tar-pack/node_modules/debug/History.md | 195 + .../tar-pack/node_modules/debug/Makefile | 36 + .../tar-pack/node_modules/debug/Readme.md | 188 + .../tar-pack/node_modules/debug/bower.json | 28 + .../tar-pack/node_modules/debug/browser.js | 168 + .../node_modules/debug/component.json | 19 + .../tar-pack/node_modules/debug/debug.js | 197 + .../tar-pack/node_modules/debug/node.js | 209 + .../debug/node_modules/ms/History.md | 66 + .../debug/node_modules/ms/LICENSE | 20 + .../debug/node_modules/ms/README.md | 35 + .../debug/node_modules/ms/index.js | 125 + .../debug/node_modules/ms/package.json | 56 + .../tar-pack/node_modules/debug/package.json | 58 + .../node_modules/fstream-ignore/LICENSE | 15 + .../node_modules/fstream-ignore/README.md | 22 + .../node_modules/fstream-ignore/ignore.js | 275 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/minimatch/LICENSE | 15 + .../node_modules/minimatch/README.md | 209 + .../node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../node_modules/minimatch/package.json | 71 + .../node_modules/fstream-ignore/package.json | 78 + .../tar-pack/node_modules/fstream/LICENSE | 15 + .../tar-pack/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar-pack/node_modules/fstream/fstream.js | 35 + .../node_modules/fstream/lib/abstract.js | 85 + .../node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../fstream/node_modules/inherits/LICENSE | 16 + .../fstream/node_modules/inherits/README.md | 42 + .../fstream/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/fstream/package.json | 83 + .../tar-pack/node_modules/once/LICENSE | 15 + .../tar-pack/node_modules/once/README.md | 51 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../tar-pack/node_modules/once/once.js | 21 + .../tar-pack/node_modules/once/package.json | 54 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 36 + .../readable-stream/doc/stream.md | 2015 ++++ .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 937 ++ .../readable-stream/lib/_stream_transform.js | 180 + .../readable-stream/lib/_stream_writable.js | 526 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 99 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../tar-pack/node_modules/uid-number/LICENSE | 15 + .../node_modules/uid-number/README.md | 17 + .../node_modules/uid-number/get-uid-gid.js | 24 + .../node_modules/uid-number/package.json | 56 + .../node_modules/uid-number/uid-number.js | 59 + .../node_modules/tar-pack/package.json | 77 + .../tar-pack/test/fixtures/packed-file.txt | 1 + .../tar-pack/test/fixtures/packed.tar | Bin 0 -> 3584 bytes .../tar-pack/test/fixtures/packed.tar.gz | Bin 0 -> 152 bytes .../tar-pack/test/fixtures/to-pack/bar.txt | 1 + .../tar-pack/test/fixtures/to-pack/foo.txt | 1 + .../node_modules/tar-pack/test/index.js | 109 + .../node-pre-gyp/node_modules/tar/LICENSE | 12 + .../node-pre-gyp/node_modules/tar/README.md | 50 + .../node_modules/tar/examples/extracter.js | 19 + .../node_modules/tar/examples/packer.js | 24 + .../node_modules/tar/examples/reader.js | 36 + .../node_modules/tar/lib/buffer-entry.js | 30 + .../node_modules/tar/lib/entry-writer.js | 169 + .../node_modules/tar/lib/entry.js | 220 + .../tar/lib/extended-header-writer.js | 191 + .../node_modules/tar/lib/extended-header.js | 140 + .../node_modules/tar/lib/extract.js | 94 + .../tar/lib/global-header-writer.js | 14 + .../node_modules/tar/lib/header.js | 385 + .../node-pre-gyp/node_modules/tar/lib/pack.js | 236 + .../node_modules/tar/lib/parse.js | 275 + .../tar/node_modules/block-stream/LICENCE | 25 + .../tar/node_modules/block-stream/LICENSE | 15 + .../tar/node_modules/block-stream/README.md | 14 + .../node_modules/block-stream/block-stream.js | 209 + .../node_modules/block-stream/package.json | 69 + .../tar/node_modules/fstream/LICENSE | 15 + .../tar/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../tar/node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar/node_modules/fstream/fstream.js | 35 + .../tar/node_modules/fstream/lib/abstract.js | 85 + .../tar/node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../tar/node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../tar/node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../tar/node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../tar/node_modules/fstream/package.json | 82 + .../tar/node_modules/inherits/LICENSE | 16 + .../tar/node_modules/inherits/README.md | 42 + .../tar/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../tar/node_modules/inherits/package.json | 73 + .../node_modules/tar/package.json | 80 + .../node-pre-gyp/node_modules/tar/tar.js | 173 + .../tar/test/00-setup-fixtures.js | 53 + .../tar/test/cb-never-called-1.0.1.tgz | Bin 0 -> 4096 bytes .../tar/test/dir-normalization.js | 177 + .../tar/test/dir-normalization.tar | Bin 0 -> 4608 bytes .../node_modules/tar/test/error-on-broken.js | 33 + .../node_modules/tar/test/extract-move.js | 132 + .../node_modules/tar/test/extract.js | 367 + .../node_modules/tar/test/fixtures.tgz | Bin 0 -> 19352 bytes .../node_modules/tar/test/header.js | 183 + .../tar/test/pack-no-proprietary.js | 886 ++ .../node_modules/tar/test/pack.js | 952 ++ .../node_modules/tar/test/parse-discard.js | 29 + .../node_modules/tar/test/parse.js | 359 + .../node_modules/tar/test/zz-cleanup.js | 20 + .../node_modules/node-pre-gyp/package.json | 113 + .../node_modules/serialport/package.json | 152 + .../serialport/src/serialport.cpp | 670 ++ .../node_modules/serialport/src/serialport.h | 195 + .../serialport/src/serialport_poller.cpp | 124 + .../serialport/src/serialport_poller.h | 35 + .../serialport/src/serialport_unix.cpp | 729 ++ .../serialport/src/serialport_win.cpp | 560 ++ .../serialport/src/win/AutoHModule.h | 72 + .../serialport/src/win/AutoHandle.h | 62 + .../serialport/src/win/AutoHeapAlloc.h | 72 + .../serialport/src/win/disphelper.c | 1292 +++ .../serialport/src/win/disphelper.h | 731 ++ .../serialport/src/win/enumser.cpp | 1186 +++ .../node_modules/serialport/src/win/enumser.h | 185 + .../node_modules/serialport/src/win/stdafx.h | 51 + .../serialport/src/win/stdstring.h | 4351 +++++++++ .../node_modules/johnny-five/package.json | 676 ++ .../server/node_modules/json3/LICENSE | 20 + .../server/node_modules/json3/README.md | 152 + .../server/node_modules/json3/lib/json3.js | 902 ++ .../node_modules/json3/lib/json3.min.js | 17 + .../server/node_modules/json3/package.json | 148 + .../server/node_modules/lie/README.md | 64 + .../server/node_modules/lie/dist/lie.js | 330 + .../server/node_modules/lie/dist/lie.min.js | 1 + .../node_modules/lie/dist/lie.polyfill.js | 338 + .../node_modules/lie/dist/lie.polyfill.min.js | 1 + .../server/node_modules/lie/lib/browser.js | 253 + .../server/node_modules/lie/lib/index.js | 278 + .../server/node_modules/lie/license.md | 7 + .../server/node_modules/lie/package.json | 145 + .../server/node_modules/lie/polyfill.js | 4 + .../node_modules/lodash.clonedeep/LICENSE | 47 + .../node_modules/lodash.clonedeep/README.md | 18 + .../node_modules/lodash.clonedeep/index.js | 1748 ++++ .../lodash.clonedeep/package.json | 113 + .../node_modules/lodash.debounce/LICENSE | 47 + .../node_modules/lodash.debounce/README.md | 18 + .../node_modules/lodash.debounce/index.js | 377 + .../node_modules/lodash.debounce/package.json | 113 + .../server/node_modules/mime-db/HISTORY.md | 375 + .../server/node_modules/mime-db/LICENSE | 22 + .../server/node_modules/mime-db/README.md | 82 + .../server/node_modules/mime-db/db.json | 6712 +++++++++++++ .../server/node_modules/mime-db/index.js | 11 + .../server/node_modules/mime-db/package.json | 137 + .../server/node_modules/mime-types/HISTORY.md | 210 + .../server/node_modules/mime-types/LICENSE | 23 + .../server/node_modules/mime-types/README.md | 103 + .../server/node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 126 + .../server/node_modules/ms/LICENSE.md | 21 + .../server/node_modules/ms/README.md | 52 + .../server/node_modules/ms/index.js | 149 + .../server/node_modules/ms/package.json | 109 + .../server/node_modules/nan/CHANGELOG.md | 430 + .../server/node_modules/nan/LICENSE.md | 13 + .../server/node_modules/nan/README.md | 403 + .../node_modules/nan/doc/asyncworker.md | 103 + .../server/node_modules/nan/doc/buffers.md | 54 + .../server/node_modules/nan/doc/callback.md | 56 + .../server/node_modules/nan/doc/converters.md | 41 + .../server/node_modules/nan/doc/errors.md | 226 + .../node_modules/nan/doc/maybe_types.md | 512 + .../server/node_modules/nan/doc/methods.md | 659 ++ .../server/node_modules/nan/doc/new.md | 147 + .../server/node_modules/nan/doc/node_misc.md | 63 + .../node_modules/nan/doc/object_wrappers.md | 263 + .../server/node_modules/nan/doc/persistent.md | 295 + .../server/node_modules/nan/doc/scopes.md | 73 + .../server/node_modules/nan/doc/script.md | 38 + .../node_modules/nan/doc/string_bytes.md | 62 + .../node_modules/nan/doc/v8_internals.md | 199 + .../server/node_modules/nan/doc/v8_misc.md | 85 + .../server/node_modules/nan/include_dirs.js | 1 + .../server/node_modules/nan/nan.h | 2274 +++++ .../server/node_modules/nan/nan_callbacks.h | 88 + .../node_modules/nan/nan_callbacks_12_inl.h | 512 + .../nan/nan_callbacks_pre_12_inl.h | 506 + .../server/node_modules/nan/nan_converters.h | 64 + .../node_modules/nan/nan_converters_43_inl.h | 42 + .../nan/nan_converters_pre_43_inl.h | 42 + .../nan/nan_implementation_12_inl.h | 409 + .../nan/nan_implementation_pre_12_inl.h | 264 + .../node_modules/nan/nan_maybe_43_inl.h | 245 + .../node_modules/nan/nan_maybe_pre_43_inl.h | 303 + .../server/node_modules/nan/nan_new.h | 340 + .../server/node_modules/nan/nan_object_wrap.h | 155 + .../node_modules/nan/nan_persistent_12_inl.h | 129 + .../nan/nan_persistent_pre_12_inl.h | 242 + .../node_modules/nan/nan_string_bytes.h | 305 + .../nan/nan_typedarray_contents.h | 87 + .../server/node_modules/nan/nan_weak.h | 432 + .../server/node_modules/nan/package.json | 131 + .../server/node_modules/nan/tools/1to2.js | 412 + .../server/node_modules/nan/tools/README.md | 14 + .../node_modules/nan/tools/package.json | 19 + .../server/node_modules/nanotimer/README.md | 254 + .../node_modules/nanotimer/lib/nanoTimer.js | 393 + .../nanotimer/lib/nanoTimerExp.js | 292 + .../node_modules/nanotimer/package.json | 84 + .../server/node_modules/nanotimer/test-1.js | 10 + .../node_modules/nanotimer/test-kanecko.js | 32 + .../test/nanotimer_0_2_6_test_partial.png | Bin 0 -> 37031 bytes .../nanotimer/test/nanotimer_deferred.png | Bin 0 -> 154489 bytes .../nanotimer/test/nanotimer_non_deferred.png | Bin 0 -> 123569 bytes .../nanotimer/test/test-nanoTimer.js | 290 + .../server/node_modules/negotiator/HISTORY.md | 98 + .../server/node_modules/negotiator/LICENSE | 24 + .../server/node_modules/negotiator/README.md | 203 + .../server/node_modules/negotiator/index.js | 124 + .../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 + .../node_modules/negotiator/package.json | 125 + .../node_modules/object-assign/index.js | 83 + .../server/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 114 + .../node_modules/object-assign/readme.md | 56 + .../node_modules/object-component/History.md | 10 + .../node_modules/object-component/Makefile | 16 + .../node_modules/object-component/Readme.md | 31 + .../object-component/component.json | 10 + .../node_modules/object-component/index.js | 84 + .../object-component/package.json | 69 + .../object-component/test/object.js | 48 + .../node_modules/object-keys/CHANGELOG.md | 216 + .../server/node_modules/object-keys/LICENSE | 21 + .../server/node_modules/object-keys/README.md | 76 + .../server/node_modules/object-keys/index.js | 140 + .../node_modules/object-keys/isArguments.js | 17 + .../node_modules/object-keys/package.json | 156 + .../node_modules/object-keys/test/index.js | 5 + .../node_modules/object.assign/CHANGELOG.md | 171 + .../server/node_modules/object.assign/LICENSE | 21 + .../object.assign/dist/browser.js | 477 + .../node_modules/object.assign/hasSymbols.js | 41 + .../object.assign/implementation.js | 41 + .../node_modules/object.assign/index.js | 17 + .../node_modules/object.assign/package.json | 154 + .../node_modules/object.assign/polyfill.js | 51 + .../server/node_modules/object.assign/shim.js | 14 + .../server/node_modules/object.assign/test.sh | 53 + .../node_modules/object.assign/test/index.js | 17 + .../node_modules/object.assign/test/native.js | 47 + .../object.assign/test/shams/core-js.js | 26 + .../test/shams/get-own-property-symbols.js | 25 + .../object.assign/test/shimmed.js | 50 + .../node_modules/object.assign/test/tests.js | 217 + .../server/node_modules/options/Makefile | 12 + .../server/node_modules/options/README.md | 69 + .../node_modules/options/lib/options.js | 86 + .../server/node_modules/options/package.json | 84 + .../server/node_modules/parsejson/LICENSE | 21 + .../server/node_modules/parsejson/Makefile | 3 + .../server/node_modules/parsejson/README.md | 2 + .../server/node_modules/parsejson/index.js | 32 + .../node_modules/parsejson/package.json | 87 + .../server/node_modules/parsejson/test.js | 21 + .../server/node_modules/parseqs/LICENSE | 21 + .../server/node_modules/parseqs/Makefile | 3 + .../server/node_modules/parseqs/README.md | 1 + .../server/node_modules/parseqs/index.js | 37 + .../server/node_modules/parseqs/package.json | 87 + .../server/node_modules/parseqs/test.js | 27 + .../server/node_modules/parseuri/History.md | 5 + .../server/node_modules/parseuri/LICENSE | 21 + .../server/node_modules/parseuri/Makefile | 3 + .../server/node_modules/parseuri/README.md | 2 + .../server/node_modules/parseuri/index.js | 39 + .../server/node_modules/parseuri/package.json | 86 + .../server/node_modules/parseuri/test.js | 51 + .../server/node_modules/serialport/LICENSE | 18 + .../server/node_modules/serialport/README.md | 576 ++ .../serialport/bin/serialport-list.js | 43 + .../serialport/bin/serialport-terminal.js | 78 + .../node_modules/serialport/binding.gyp | 51 + .../obj.target/serialport/src/serialport.o | Bin 0 -> 421856 bytes .../serialport/src/serialport_poller.o | Bin 0 -> 245740 bytes .../serialport/src/serialport_unix.o | Bin 0 -> 239116 bytes .../serialport/build/Release/serialport.node | Bin 0 -> 66036 bytes .../node_modules/serialport/changelog.md | 306 + .../node_modules/serialport/lib/bindings.js | 34 + .../node_modules/serialport/lib/list-unix.js | 110 + .../node_modules/serialport/lib/parsers.js | 64 + .../node_modules/serialport/lib/serialport.js | 474 + .../node_modules/node-pre-gyp/CHANGELOG.md | 332 + .../node_modules/node-pre-gyp/LICENSE | 27 + .../node_modules/node-pre-gyp/README.md | 574 ++ .../node_modules/node-pre-gyp/appveyor.yml | 42 + .../node-pre-gyp/bin/node-pre-gyp | 131 + .../node-pre-gyp/bin/node-pre-gyp.cmd | 2 + .../node_modules/node-pre-gyp/lib/build.js | 43 + .../node_modules/node-pre-gyp/lib/clean.js | 23 + .../node-pre-gyp/lib/configure.js | 48 + .../node_modules/node-pre-gyp/lib/info.js | 40 + .../node_modules/node-pre-gyp/lib/install.js | 213 + .../node-pre-gyp/lib/node-pre-gyp.js | 192 + .../node_modules/node-pre-gyp/lib/package.js | 46 + .../node-pre-gyp/lib/pre-binding.js | 25 + .../node_modules/node-pre-gyp/lib/publish.js | 77 + .../node_modules/node-pre-gyp/lib/rebuild.js | 13 + .../node-pre-gyp/lib/reinstall.js | 13 + .../node_modules/node-pre-gyp/lib/reveal.js | 31 + .../node-pre-gyp/lib/testbinary.js | 73 + .../node-pre-gyp/lib/testpackage.js | 49 + .../node-pre-gyp/lib/unpublish.js | 41 + .../node-pre-gyp/lib/util/abi_crosswalk.json | 1346 +++ .../node-pre-gyp/lib/util/compile.js | 87 + .../node-pre-gyp/lib/util/handle_gyp_opts.js | 94 + .../lib/util/nw-pre-gyp/index.html | 26 + .../lib/util/nw-pre-gyp/package.json | 9 + .../node-pre-gyp/lib/util/s3_setup.js | 27 + .../node-pre-gyp/lib/util/versioning.js | 308 + .../node-pre-gyp/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/bin/cmd.js | 33 + .../node_modules/mkdirp/bin/usage.txt | 12 + .../node_modules/mkdirp/examples/pow.js | 6 + .../node-pre-gyp/node_modules/mkdirp/index.js | 98 + .../mkdirp/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 75 + .../node_modules/minimist/readme.markdown | 73 + .../mkdirp/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/dotted.js | 16 + .../mkdirp/node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/mkdirp/package.json | 52 + .../node_modules/mkdirp/readme.markdown | 100 + .../node_modules/mkdirp/test/chmod.js | 41 + .../node_modules/mkdirp/test/clobber.js | 38 + .../node_modules/mkdirp/test/mkdirp.js | 28 + .../node_modules/mkdirp/test/opts_fs.js | 29 + .../node_modules/mkdirp/test/opts_fs_sync.js | 27 + .../node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 36 + .../node_modules/mkdirp/test/race.js | 37 + .../node_modules/mkdirp/test/rel.js | 32 + .../node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../node_modules/mkdirp/test/root.js | 19 + .../node_modules/mkdirp/test/sync.js | 32 + .../node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../node-pre-gyp/node_modules/nopt/LICENSE | 15 + .../node-pre-gyp/node_modules/nopt/README.md | 211 + .../node_modules/nopt/bin/nopt.js | 54 + .../node_modules/nopt/examples/my-program.js | 30 + .../node_modules/nopt/lib/nopt.js | 415 + .../nopt/node_modules/abbrev/LICENSE | 15 + .../nopt/node_modules/abbrev/README.md | 23 + .../nopt/node_modules/abbrev/abbrev.js | 62 + .../nopt/node_modules/abbrev/package.json | 63 + .../node_modules/nopt/package.json | 70 + .../node_modules/nopt/test/basic.js | 273 + .../node_modules/npmlog/CHANGELOG.md | 36 + .../node-pre-gyp/node_modules/npmlog/LICENSE | 15 + .../node_modules/npmlog/README.md | 210 + .../node-pre-gyp/node_modules/npmlog/log.js | 301 + .../node_modules/are-we-there-yet/CHANGES.md | 19 + .../node_modules/are-we-there-yet/LICENSE | 5 + .../node_modules/are-we-there-yet/README.md | 194 + .../node_modules/are-we-there-yet/index.js | 4 + .../node_modules/delegates/History.md | 22 + .../node_modules/delegates/License | 20 + .../node_modules/delegates/Makefile | 8 + .../node_modules/delegates/Readme.md | 94 + .../node_modules/delegates/index.js | 121 + .../node_modules/delegates/package.json | 58 + .../node_modules/delegates/test/index.js | 94 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 40 + .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 941 ++ .../readable-stream/lib/_stream_transform.js | 182 + .../readable-stream/lib/_stream_writable.js | 554 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 101 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../are-we-there-yet/package.json | 64 + .../are-we-there-yet/test/lib/test-event.js | 29 + .../are-we-there-yet/test/tracker.js | 57 + .../are-we-there-yet/test/trackergroup.js | 96 + .../are-we-there-yet/test/trackerstream.js | 51 + .../are-we-there-yet/tracker-base.js | 11 + .../are-we-there-yet/tracker-group.js | 107 + .../are-we-there-yet/tracker-stream.js | 35 + .../node_modules/are-we-there-yet/tracker.js | 30 + .../console-control-strings/LICENSE | 13 + .../console-control-strings/README.md | 145 + .../console-control-strings/index.js | 125 + .../console-control-strings/package.json | 70 + .../npmlog/node_modules/gauge/CHANGELOG.md | 131 + .../npmlog/node_modules/gauge/LICENSE | 13 + .../npmlog/node_modules/gauge/README.md | 395 + .../npmlog/node_modules/gauge/base-theme.js | 14 + .../npmlog/node_modules/gauge/error.js | 24 + .../npmlog/node_modules/gauge/has-color.js | 12 + .../npmlog/node_modules/gauge/index.js | 226 + .../gauge/node_modules/aproba/LICENSE | 14 + .../gauge/node_modules/aproba/README.md | 59 + .../gauge/node_modules/aproba/index.js | 62 + .../gauge/node_modules/aproba/package.json | 70 + .../gauge/node_modules/has-color/index.js | 32 + .../gauge/node_modules/has-color/package.json | 79 + .../gauge/node_modules/has-color/readme.md | 30 + .../gauge/node_modules/has-unicode/LICENSE | 14 + .../gauge/node_modules/has-unicode/README.md | 43 + .../gauge/node_modules/has-unicode/index.js | 16 + .../node_modules/has-unicode/package.json | 68 + .../gauge/node_modules/object-assign/index.js | 83 + .../gauge/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 63 + .../node_modules/object-assign/readme.md | 56 + .../node_modules/signal-exit/CHANGELOG.md | 27 + .../node_modules/signal-exit/LICENSE.txt | 16 + .../gauge/node_modules/signal-exit/README.md | 40 + .../gauge/node_modules/signal-exit/index.js | 148 + .../node_modules/signal-exit/package.json | 80 + .../gauge/node_modules/signal-exit/signals.js | 53 + .../gauge/node_modules/string-width/index.js | 37 + .../gauge/node_modules/string-width/license | 21 + .../node_modules/code-point-at/index.js | 32 + .../node_modules/code-point-at/license | 21 + .../node_modules/code-point-at/package.json | 80 + .../node_modules/code-point-at/readme.md | 32 + .../is-fullwidth-code-point/index.js | 46 + .../is-fullwidth-code-point/license | 21 + .../node_modules/number-is-nan/index.js | 4 + .../node_modules/number-is-nan/license | 21 + .../node_modules/number-is-nan/package.json | 77 + .../node_modules/number-is-nan/readme.md | 28 + .../is-fullwidth-code-point/package.json | 65 + .../is-fullwidth-code-point/readme.md | 39 + .../node_modules/string-width/package.json | 98 + .../gauge/node_modules/string-width/readme.md | 42 + .../gauge/node_modules/strip-ansi/index.js | 6 + .../gauge/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 90 + .../gauge/node_modules/strip-ansi/readme.md | 33 + .../gauge/node_modules/wide-align/LICENSE | 14 + .../gauge/node_modules/wide-align/README.md | 47 + .../gauge/node_modules/wide-align/align.js | 65 + .../node_modules/wide-align/package.json | 67 + .../node_modules/wide-align/test/align.js | 37 + .../npmlog/node_modules/gauge/package.json | 100 + .../npmlog/node_modules/gauge/plumbing.js | 47 + .../npmlog/node_modules/gauge/process.js | 3 + .../npmlog/node_modules/gauge/progress-bar.js | 35 + .../node_modules/gauge/render-template.js | 181 + .../node_modules/gauge/set-immediate.js | 7 + .../npmlog/node_modules/gauge/set-interval.js | 3 + .../npmlog/node_modules/gauge/spin.js | 5 + .../node_modules/gauge/template-item.js | 73 + .../npmlog/node_modules/gauge/theme-set.js | 115 + .../npmlog/node_modules/gauge/themes.js | 54 + .../node_modules/gauge/wide-truncate.js | 25 + .../node_modules/set-blocking/CHANGELOG.md | 26 + .../node_modules/set-blocking/LICENSE.txt | 14 + .../node_modules/set-blocking/README.md | 31 + .../npmlog/node_modules/set-blocking/index.js | 7 + .../node_modules/set-blocking/package.json | 80 + .../node_modules/npmlog/package.json | 82 + .../node_modules/rc/LICENSE.APACHE2 | 15 + .../node-pre-gyp/node_modules/rc/LICENSE.BSD | 26 + .../node-pre-gyp/node_modules/rc/LICENSE.MIT | 24 + .../node-pre-gyp/node_modules/rc/README.md | 149 + .../node-pre-gyp/node_modules/rc/browser.js | 7 + .../node-pre-gyp/node_modules/rc/index.js | 60 + .../node-pre-gyp/node_modules/rc/lib/utils.js | 103 + .../rc/node_modules/deep-extend/CHANGELOG.md | 21 + .../rc/node_modules/deep-extend/LICENSE | 20 + .../rc/node_modules/deep-extend/README.md | 90 + .../rc/node_modules/deep-extend/index.js | 1 + .../deep-extend/lib/deep-extend.js | 144 + .../rc/node_modules/deep-extend/package.json | 94 + .../node_modules/rc/node_modules/ini/LICENSE | 15 + .../rc/node_modules/ini/README.md | 102 + .../node_modules/rc/node_modules/ini/ini.js | 190 + .../rc/node_modules/ini/package.json | 63 + .../rc/node_modules/minimist/LICENSE | 18 + .../rc/node_modules/minimist/example/parse.js | 2 + .../rc/node_modules/minimist/index.js | 236 + .../rc/node_modules/minimist/package.json | 79 + .../rc/node_modules/minimist/readme.markdown | 91 + .../rc/node_modules/minimist/test/all_bool.js | 32 + .../rc/node_modules/minimist/test/bool.js | 166 + .../rc/node_modules/minimist/test/dash.js | 31 + .../minimist/test/default_bool.js | 35 + .../rc/node_modules/minimist/test/dotted.js | 22 + .../rc/node_modules/minimist/test/kv_short.js | 16 + .../rc/node_modules/minimist/test/long.js | 31 + .../rc/node_modules/minimist/test/num.js | 36 + .../rc/node_modules/minimist/test/parse.js | 197 + .../minimist/test/parse_modified.js | 9 + .../rc/node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/stop_early.js | 15 + .../rc/node_modules/minimist/test/unknown.js | 102 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/strip-json-comments/cli.js | 41 + .../node_modules/strip-json-comments/license | 21 + .../strip-json-comments/package.json | 69 + .../strip-json-comments/readme.md | 80 + .../strip-json-comments.js | 73 + .../node-pre-gyp/node_modules/rc/package.json | 70 + .../node-pre-gyp/node_modules/rc/test/ini.js | 16 + .../node_modules/rc/test/nested-env-vars.js | 40 + .../node-pre-gyp/node_modules/rc/test/test.js | 59 + .../node_modules/request/CHANGELOG.md | 655 ++ .../node_modules/request/CONTRIBUTING.md | 81 + .../node-pre-gyp/node_modules/request/LICENSE | 55 + .../node_modules/request/README.md | 1098 +++ .../node_modules/request/codecov.yml | 2 + .../node_modules/request/index.js | 156 + .../node_modules/request/lib/auth.js | 168 + .../node_modules/request/lib/cookies.js | 39 + .../request/lib/getProxyFromURI.js | 79 + .../node_modules/request/lib/har.js | 215 + .../node_modules/request/lib/helpers.js | 65 + .../node_modules/request/lib/multipart.js | 112 + .../node_modules/request/lib/oauth.js | 147 + .../node_modules/request/lib/querystring.js | 51 + .../node_modules/request/lib/redirect.js | 157 + .../node_modules/request/lib/tunnel.js | 176 + .../request/node_modules/aws-sign2/LICENSE | 55 + .../request/node_modules/aws-sign2/README.md | 4 + .../request/node_modules/aws-sign2/index.js | 212 + .../node_modules/aws-sign2/package.json | 55 + .../request/node_modules/aws4/LICENSE | 19 + .../request/node_modules/aws4/README.md | 523 ++ .../request/node_modules/aws4/aws4.js | 323 + .../request/node_modules/aws4/lru.js | 96 + .../request/node_modules/aws4/package.json | 114 + .../request/node_modules/caseless/LICENSE | 28 + .../request/node_modules/caseless/README.md | 45 + .../request/node_modules/caseless/index.js | 66 + .../node_modules/caseless/package.json | 70 + .../request/node_modules/caseless/test.js | 40 + .../node_modules/combined-stream/License | 19 + .../node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 188 + .../node_modules/delayed-stream/License | 19 + .../node_modules/delayed-stream/Makefile | 7 + .../node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + .../node_modules/delayed-stream/package.json | 71 + .../node_modules/combined-stream/package.json | 75 + .../request/node_modules/extend/CHANGELOG.md | 69 + .../request/node_modules/extend/LICENSE | 23 + .../request/node_modules/extend/README.md | 62 + .../node_modules/extend/component.json | 32 + .../request/node_modules/extend/index.js | 86 + .../request/node_modules/extend/package.json | 80 + .../node_modules/forever-agent/LICENSE | 55 + .../node_modules/forever-agent/README.md | 4 + .../node_modules/forever-agent/index.js | 138 + .../node_modules/forever-agent/package.json | 62 + .../request/node_modules/form-data/License | 19 + .../request/node_modules/form-data/README.md | 217 + .../node_modules/form-data/lib/browser.js | 2 + .../node_modules/form-data/lib/form_data.js | 440 + .../node_modules/form-data/lib/populate.js | 10 + .../form-data/node_modules/asynckit/LICENSE | 21 + .../form-data/node_modules/asynckit/README.md | 233 + .../form-data/node_modules/asynckit/bench.js | 76 + .../form-data/node_modules/asynckit/index.js | 6 + .../node_modules/asynckit/lib/abort.js | 29 + .../node_modules/asynckit/lib/async.js | 34 + .../node_modules/asynckit/lib/defer.js | 26 + .../node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + .../asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + .../node_modules/asynckit/lib/state.js | 37 + .../node_modules/asynckit/lib/streamify.js | 141 + .../node_modules/asynckit/lib/terminator.js | 29 + .../node_modules/asynckit/package.json | 100 + .../node_modules/asynckit/parallel.js | 43 + .../form-data/node_modules/asynckit/serial.js | 17 + .../node_modules/asynckit/serialOrdered.js | 75 + .../form-data/node_modules/asynckit/stream.js | 21 + .../node_modules/form-data/package.json | 119 + .../node_modules/har-validator/LICENSE | 13 + .../node_modules/har-validator/README.md | 309 + .../har-validator/bin/har-validator | 56 + .../node_modules/har-validator/lib/async.js | 14 + .../node_modules/har-validator/lib/error.js | 10 + .../node_modules/har-validator/lib/index.js | 22 + .../node_modules/har-validator/lib/runner.js | 29 + .../har-validator/lib/schemas/cache.json | 13 + .../har-validator/lib/schemas/cacheEntry.json | 31 + .../har-validator/lib/schemas/content.json | 27 + .../har-validator/lib/schemas/cookie.json | 34 + .../har-validator/lib/schemas/creator.json | 18 + .../har-validator/lib/schemas/entry.json | 51 + .../har-validator/lib/schemas/har.json | 11 + .../har-validator/lib/schemas/index.js | 49 + .../har-validator/lib/schemas/log.json | 34 + .../har-validator/lib/schemas/page.json | 30 + .../lib/schemas/pageTimings.json | 16 + .../har-validator/lib/schemas/postData.json | 41 + .../har-validator/lib/schemas/record.json | 18 + .../har-validator/lib/schemas/request.json | 55 + .../har-validator/lib/schemas/response.json | 52 + .../har-validator/lib/schemas/timings.json | 40 + .../har-validator/node_modules/chalk/index.js | 116 + .../har-validator/node_modules/chalk/license | 21 + .../chalk/node_modules/ansi-styles/index.js | 65 + .../chalk/node_modules/ansi-styles/license | 21 + .../node_modules/ansi-styles/package.json | 79 + .../chalk/node_modules/ansi-styles/readme.md | 86 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 83 + .../escape-string-regexp/readme.md | 27 + .../chalk/node_modules/has-ansi/index.js | 4 + .../chalk/node_modules/has-ansi/license | 21 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../has-ansi/node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../chalk/node_modules/has-ansi/package.json | 83 + .../chalk/node_modules/has-ansi/readme.md | 36 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../chalk/node_modules/strip-ansi/license | 21 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 31 + .../node_modules/strip-ansi/package.json | 89 + .../chalk/node_modules/strip-ansi/readme.md | 33 + .../node_modules/supports-color/index.js | 50 + .../chalk/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 78 + .../node_modules/supports-color/readme.md | 36 + .../node_modules/chalk/package.json | 102 + .../node_modules/chalk/readme.md | 213 + .../node_modules/is-my-json-valid/LICENSE | 21 + .../node_modules/is-my-json-valid/README.md | 173 + .../node_modules/is-my-json-valid/example.js | 18 + .../node_modules/is-my-json-valid/formats.js | 14 + .../node_modules/is-my-json-valid/index.js | 594 ++ .../node_modules/generate-function/README.md | 72 + .../node_modules/generate-function/example.js | 27 + .../node_modules/generate-function/index.js | 61 + .../generate-function/package.json | 45 + .../node_modules/generate-function/test.js | 33 + .../generate-object-property/LICENSE | 21 + .../generate-object-property/README.md | 19 + .../generate-object-property/index.js | 12 + .../node_modules/is-property/LICENSE | 22 + .../node_modules/is-property/README.md | 28 + .../node_modules/is-property/is-property.js | 5 + .../node_modules/is-property/package.json | 51 + .../generate-object-property/package.json | 41 + .../generate-object-property/test.js | 12 + .../node_modules/jsonpointer/LICENSE.md | 21 + .../node_modules/jsonpointer/README.md | 39 + .../node_modules/jsonpointer/benchmark.js | 56 + .../node_modules/jsonpointer/jsonpointer.js | 93 + .../node_modules/jsonpointer/package.json | 83 + .../node_modules/jsonpointer/test.js | 131 + .../node_modules/xtend/LICENCE | 19 + .../node_modules/xtend/Makefile | 4 + .../node_modules/xtend/README.md | 32 + .../node_modules/xtend/immutable.js | 19 + .../node_modules/xtend/mutable.js | 17 + .../node_modules/xtend/package.json | 74 + .../node_modules/xtend/test.js | 83 + .../is-my-json-valid/package.json | 90 + .../node_modules/is-my-json-valid/require.js | 12 + .../is-my-json-valid/test/fixtures/cosmic.js | 84 + .../json-schema-draft4/additionalItems.json | 82 + .../additionalProperties.json | 88 + .../test/json-schema-draft4/allOf.json | 112 + .../test/json-schema-draft4/anyOf.json | 68 + .../test/json-schema-draft4/bignum.json | 107 + .../test/json-schema-draft4/default.json | 49 + .../test/json-schema-draft4/definitions.json | 32 + .../test/json-schema-draft4/dependencies.json | 113 + .../test/json-schema-draft4/enum.json | 72 + .../test/json-schema-draft4/format.json | 143 + .../test/json-schema-draft4/items.json | 46 + .../test/json-schema-draft4/maxItems.json | 28 + .../test/json-schema-draft4/maxLength.json | 28 + .../json-schema-draft4/maxProperties.json | 28 + .../test/json-schema-draft4/maximum.json | 42 + .../test/json-schema-draft4/minItems.json | 28 + .../test/json-schema-draft4/minLength.json | 28 + .../json-schema-draft4/minProperties.json | 28 + .../test/json-schema-draft4/minimum.json | 42 + .../test/json-schema-draft4/multipleOf.json | 96 + .../test/json-schema-draft4/not.json | 96 + .../json-schema-draft4/nullAndFormat.json | 18 + .../json-schema-draft4/nullAndObject.json | 18 + .../test/json-schema-draft4/oneOf.json | 68 + .../test/json-schema-draft4/pattern.json | 23 + .../json-schema-draft4/patternProperties.json | 110 + .../test/json-schema-draft4/properties.json | 92 + .../test/json-schema-draft4/ref.json | 128 + .../test/json-schema-draft4/refRemote.json | 74 + .../test/json-schema-draft4/required.json | 39 + .../test/json-schema-draft4/type.json | 330 + .../test/json-schema-draft4/uniqueItems.json | 79 + .../is-my-json-valid/test/json-schema.js | 23 + .../is-my-json-valid/test/misc.js | 471 + .../node_modules/pinkie-promise/index.js | 3 + .../node_modules/pinkie-promise/license | 21 + .../node_modules/pinkie/index.js | 292 + .../node_modules/pinkie/license | 21 + .../node_modules/pinkie/package.json | 57 + .../node_modules/pinkie/readme.md | 83 + .../node_modules/pinkie-promise/package.json | 55 + .../node_modules/pinkie-promise/readme.md | 28 + .../node_modules/har-validator/package.json | 94 + .../request/node_modules/hawk/LICENSE | 28 + .../request/node_modules/hawk/README.md | 634 ++ .../request/node_modules/hawk/bower.json | 24 + .../request/node_modules/hawk/component.json | 19 + .../request/node_modules/hawk/dist/client.js | 343 + .../node_modules/hawk/example/usage.js | 78 + .../request/node_modules/hawk/images/hawk.png | Bin 0 -> 6945 bytes .../request/node_modules/hawk/images/logo.png | Bin 0 -> 71732 bytes .../request/node_modules/hawk/lib/browser.js | 637 ++ .../request/node_modules/hawk/lib/client.js | 369 + .../request/node_modules/hawk/lib/crypto.js | 126 + .../request/node_modules/hawk/lib/index.js | 15 + .../request/node_modules/hawk/lib/server.js | 548 ++ .../request/node_modules/hawk/lib/utils.js | 184 + .../hawk/node_modules/boom/CONTRIBUTING.md | 1 + .../hawk/node_modules/boom/LICENSE | 28 + .../hawk/node_modules/boom/README.md | 652 ++ .../hawk/node_modules/boom/images/boom.png | Bin 0 -> 29479 bytes .../hawk/node_modules/boom/lib/index.js | 318 + .../hawk/node_modules/boom/package.json | 72 + .../hawk/node_modules/boom/test/index.js | 654 ++ .../hawk/node_modules/cryptiles/LICENSE | 28 + .../hawk/node_modules/cryptiles/README.md | 16 + .../hawk/node_modules/cryptiles/lib/index.js | 68 + .../hawk/node_modules/cryptiles/package.json | 68 + .../hawk/node_modules/cryptiles/test/index.js | 102 + .../hawk/node_modules/hoek/CONTRIBUTING.md | 1 + .../hawk/node_modules/hoek/LICENSE | 31 + .../hawk/node_modules/hoek/README.md | 584 ++ .../hawk/node_modules/hoek/images/hoek.png | Bin 0 -> 37939 bytes .../hawk/node_modules/hoek/lib/escape.js | 132 + .../hawk/node_modules/hoek/lib/index.js | 993 ++ .../hawk/node_modules/hoek/package.json | 70 + .../hawk/node_modules/hoek/test/escaper.js | 88 + .../hawk/node_modules/hoek/test/index.js | 2513 +++++ .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 + .../node_modules/hoek/test/modules/test2.js | 1 + .../node_modules/hoek/test/modules/test3.js | 1 + .../hawk/node_modules/sntp/LICENSE | 28 + .../hawk/node_modules/sntp/Makefile | 9 + .../hawk/node_modules/sntp/README.md | 68 + .../hawk/node_modules/sntp/examples/offset.js | 16 + .../hawk/node_modules/sntp/examples/time.js | 25 + .../hawk/node_modules/sntp/index.js | 1 + .../hawk/node_modules/sntp/lib/index.js | 412 + .../hawk/node_modules/sntp/package.json | 72 + .../hawk/node_modules/sntp/test/index.js | 435 + .../request/node_modules/hawk/package.json | 75 + .../request/node_modules/hawk/test/browser.js | 1492 +++ .../request/node_modules/hawk/test/client.js | 440 + .../request/node_modules/hawk/test/crypto.js | 70 + .../request/node_modules/hawk/test/index.js | 378 + .../request/node_modules/hawk/test/readme.js | 95 + .../request/node_modules/hawk/test/server.js | 1329 +++ .../request/node_modules/hawk/test/uri.js | 838 ++ .../request/node_modules/hawk/test/utils.js | 149 + .../node_modules/http-signature/CHANGES.md | 46 + .../node_modules/http-signature/LICENSE | 18 + .../node_modules/http-signature/README.md | 79 + .../http-signature/http_signing.md | 363 + .../node_modules/http-signature/lib/index.js | 29 + .../node_modules/http-signature/lib/parser.js | 318 + .../node_modules/http-signature/lib/signer.js | 399 + .../node_modules/http-signature/lib/utils.js | 112 + .../node_modules/http-signature/lib/verify.js | 88 + .../node_modules/assert-plus/AUTHORS | 6 + .../node_modules/assert-plus/CHANGES.md | 8 + .../node_modules/assert-plus/README.md | 155 + .../node_modules/assert-plus/assert.js | 206 + .../node_modules/assert-plus/package.json | 89 + .../node_modules/jsprim/CHANGES.md | 39 + .../node_modules/jsprim/LICENSE | 19 + .../node_modules/jsprim/README.md | 237 + .../node_modules/jsprim/lib/jsprim.js | 488 + .../jsprim/node_modules/extsprintf/LICENSE | 19 + .../jsprim/node_modules/extsprintf/Makefile | 23 + .../node_modules/extsprintf/Makefile.deps | 39 + .../node_modules/extsprintf/Makefile.targ | 285 + .../jsprim/node_modules/extsprintf/README.md | 39 + .../extsprintf/examples/simple.js | 2 + .../node_modules/extsprintf/jsl.node.conf | 137 + .../node_modules/extsprintf/lib/extsprintf.js | 166 + .../node_modules/extsprintf/package.json | 48 + .../jsprim/node_modules/json-schema/README.md | 5 + .../json-schema/draft-00/hyper-schema | 68 + .../json-schema/draft-00/json-ref | 26 + .../node_modules/json-schema/draft-00/links | 33 + .../node_modules/json-schema/draft-00/schema | 155 + .../json-schema/draft-01/hyper-schema | 68 + .../json-schema/draft-01/json-ref | 26 + .../node_modules/json-schema/draft-01/links | 33 + .../node_modules/json-schema/draft-01/schema | 155 + .../json-schema/draft-02/hyper-schema | 68 + .../json-schema/draft-02/json-ref | 26 + .../node_modules/json-schema/draft-02/links | 35 + .../node_modules/json-schema/draft-02/schema | 166 + .../json-schema/draft-03/examples/address | 20 + .../json-schema/draft-03/examples/calendar | 53 + .../json-schema/draft-03/examples/card | 105 + .../json-schema/draft-03/examples/geo | 8 + .../json-schema/draft-03/examples/interfaces | 23 + .../json-schema/draft-03/hyper-schema | 60 + .../json-schema/draft-03/json-ref | 26 + .../node_modules/json-schema/draft-03/links | 35 + .../node_modules/json-schema/draft-03/schema | 174 + .../json-schema/draft-04/hyper-schema | 60 + .../node_modules/json-schema/draft-04/links | 41 + .../node_modules/json-schema/draft-04/schema | 189 + .../json-schema/draft-zyp-json-schema-03.xml | 1120 +++ .../json-schema/draft-zyp-json-schema-04.xml | 1072 +++ .../node_modules/json-schema/lib/links.js | 66 + .../node_modules/json-schema/lib/validate.js | 273 + .../node_modules/json-schema/package.json | 74 + .../node_modules/json-schema/test/tests.js | 95 + .../jsprim/node_modules/verror/LICENSE | 19 + .../jsprim/node_modules/verror/Makefile | 35 + .../jsprim/node_modules/verror/Makefile.targ | 285 + .../jsprim/node_modules/verror/README.md | 120 + .../verror/examples/levels-verror.js | 36 + .../verror/examples/levels-werror.js | 34 + .../node_modules/verror/examples/varargs.js | 6 + .../node_modules/verror/examples/verror.js | 13 + .../node_modules/verror/examples/werror.js | 14 + .../jsprim/node_modules/verror/jsl.node.conf | 139 + .../jsprim/node_modules/verror/lib/verror.js | 157 + .../jsprim/node_modules/verror/package.json | 52 + .../node_modules/verror/tests/tst.inherit.js | 100 + .../node_modules/verror/tests/tst.verror.js | 156 + .../node_modules/verror/tests/tst.werror.js | 179 + .../node_modules/jsprim/package.json | 59 + .../http-signature/node_modules/sshpk/LICENSE | 18 + .../node_modules/sshpk/README.md | 666 ++ .../node_modules/sshpk/bin/sshpk-conv | 201 + .../node_modules/sshpk/bin/sshpk-sign | 191 + .../node_modules/sshpk/bin/sshpk-verify | 166 + .../node_modules/sshpk/lib/algs.js | 168 + .../node_modules/sshpk/lib/certificate.js | 291 + .../node_modules/sshpk/lib/dhe.js | 311 + .../node_modules/sshpk/lib/ed-compat.js | 96 + .../node_modules/sshpk/lib/errors.js | 84 + .../node_modules/sshpk/lib/fingerprint.js | 161 + .../node_modules/sshpk/lib/formats/auto.js | 73 + .../sshpk/lib/formats/openssh-cert.js | 289 + .../node_modules/sshpk/lib/formats/pem.js | 186 + .../node_modules/sshpk/lib/formats/pkcs1.js | 320 + .../node_modules/sshpk/lib/formats/pkcs8.js | 505 + .../node_modules/sshpk/lib/formats/rfc4253.js | 146 + .../sshpk/lib/formats/ssh-private.js | 261 + .../node_modules/sshpk/lib/formats/ssh.js | 114 + .../sshpk/lib/formats/x509-pem.js | 77 + .../node_modules/sshpk/lib/formats/x509.js | 484 + .../node_modules/sshpk/lib/identity.js | 255 + .../node_modules/sshpk/lib/index.js | 38 + .../node_modules/sshpk/lib/key.js | 270 + .../node_modules/sshpk/lib/private-key.js | 231 + .../node_modules/sshpk/lib/signature.js | 245 + .../node_modules/sshpk/lib/ssh-buffer.js | 148 + .../node_modules/sshpk/lib/utils.js | 288 + .../node_modules/sshpk/man/man1/sshpk-conv.1 | 135 + .../node_modules/sshpk/man/man1/sshpk-sign.1 | 81 + .../sshpk/man/man1/sshpk-verify.1 | 68 + .../sshpk/node_modules/asn1/LICENSE | 19 + .../sshpk/node_modules/asn1/README.md | 50 + .../sshpk/node_modules/asn1/lib/ber/errors.js | 13 + .../sshpk/node_modules/asn1/lib/ber/index.js | 27 + .../sshpk/node_modules/asn1/lib/ber/reader.js | 261 + .../sshpk/node_modules/asn1/lib/ber/types.js | 36 + .../sshpk/node_modules/asn1/lib/ber/writer.js | 316 + .../sshpk/node_modules/asn1/lib/index.js | 20 + .../sshpk/node_modules/asn1/package.json | 72 + .../node_modules/asn1/tst/ber/reader.test.js | 208 + .../node_modules/asn1/tst/ber/writer.test.js | 370 + .../sshpk/node_modules/assert-plus/AUTHORS | 6 + .../sshpk/node_modules/assert-plus/CHANGES.md | 14 + .../sshpk/node_modules/assert-plus/README.md | 162 + .../sshpk/node_modules/assert-plus/assert.js | 211 + .../node_modules/assert-plus/package.json | 91 + .../sshpk/node_modules/bcrypt-pbkdf/README.md | 39 + .../sshpk/node_modules/bcrypt-pbkdf/index.js | 559 ++ .../node_modules/bcrypt-pbkdf/package.json | 46 + .../sshpk/node_modules/dashdash/README.md | 574 ++ .../dashdash/etc/dashdash.bash_completion.in | 388 + .../node_modules/dashdash/lib/dashdash.js | 1055 +++ .../sshpk/node_modules/dashdash/package.json | 98 + .../sshpk/node_modules/ecc-jsbn/LICENSE | 21 + .../sshpk/node_modules/ecc-jsbn/README.md | 8 + .../sshpk/node_modules/ecc-jsbn/index.js | 57 + .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 + .../sshpk/node_modules/ecc-jsbn/lib/ec.js | 561 ++ .../sshpk/node_modules/ecc-jsbn/lib/sec.js | 170 + .../sshpk/node_modules/ecc-jsbn/package.json | 64 + .../sshpk/node_modules/ecc-jsbn/test.js | 14 + .../sshpk/node_modules/getpass/LICENSE | 18 + .../sshpk/node_modules/getpass/README.md | 32 + .../sshpk/node_modules/getpass/lib/index.js | 123 + .../sshpk/node_modules/getpass/package.json | 64 + .../sshpk/node_modules/jodid25519/AUTHORS.md | 3 + .../sshpk/node_modules/jodid25519/LICENSE | 23 + .../sshpk/node_modules/jodid25519/README.md | 51 + .../sshpk/node_modules/jodid25519/almond.0 | 42 + .../sshpk/node_modules/jodid25519/almond.1 | 13 + .../sshpk/node_modules/jodid25519/index.js | 35 + .../sshpk/node_modules/jodid25519/jsdoc.json | 19 + .../sshpk/node_modules/jodid25519/lib/core.js | 481 + .../node_modules/jodid25519/lib/curve255.js | 221 + .../sshpk/node_modules/jodid25519/lib/dh.js | 111 + .../node_modules/jodid25519/lib/eddsa.js | 573 ++ .../node_modules/jodid25519/lib/utils.js | 198 + .../node_modules/jodid25519/package.json | 78 + .../sshpk/node_modules/jsbn/LICENSE | 40 + .../sshpk/node_modules/jsbn/README.md | 175 + .../sshpk/node_modules/jsbn/example.html | 12 + .../sshpk/node_modules/jsbn/example.js | 3 + .../sshpk/node_modules/jsbn/index.js | 1358 +++ .../sshpk/node_modules/jsbn/package.json | 61 + .../sshpk/node_modules/tweetnacl/CHANGELOG.md | 181 + .../sshpk/node_modules/tweetnacl/COPYING.txt | 9 + .../sshpk/node_modules/tweetnacl/README.md | 445 + .../sshpk/node_modules/tweetnacl/nacl-fast.js | 2388 +++++ .../node_modules/tweetnacl/nacl-fast.min.js | 2 + .../sshpk/node_modules/tweetnacl/nacl.js | 1175 +++ .../sshpk/node_modules/tweetnacl/nacl.min.js | 1 + .../sshpk/node_modules/tweetnacl/package.json | 94 + .../node_modules/sshpk/package.json | 109 + .../node_modules/http-signature/package.json | 90 + .../node_modules/is-typedarray/LICENSE.md | 18 + .../node_modules/is-typedarray/README.md | 16 + .../node_modules/is-typedarray/index.js | 41 + .../node_modules/is-typedarray/package.json | 64 + .../node_modules/is-typedarray/test.js | 34 + .../request/node_modules/isstream/LICENSE.md | 11 + .../request/node_modules/isstream/README.md | 66 + .../request/node_modules/isstream/isstream.js | 27 + .../node_modules/isstream/package.json | 67 + .../request/node_modules/isstream/test.js | 168 + .../json-stringify-safe/CHANGELOG.md | 14 + .../node_modules/json-stringify-safe/LICENSE | 15 + .../node_modules/json-stringify-safe/Makefile | 35 + .../json-stringify-safe/README.md | 52 + .../json-stringify-safe/package.json | 76 + .../json-stringify-safe/stringify.js | 27 + .../json-stringify-safe/test/mocha.opts | 2 + .../test/stringify_test.js | 246 + .../node_modules/mime-types/HISTORY.md | 204 + .../request/node_modules/mime-types/LICENSE | 23 + .../request/node_modules/mime-types/README.md | 103 + .../request/node_modules/mime-types/index.js | 188 + .../node_modules/mime-db/HISTORY.md | 365 + .../mime-types/node_modules/mime-db/LICENSE | 22 + .../mime-types/node_modules/mime-db/README.md | 82 + .../mime-types/node_modules/mime-db/db.json | 6692 +++++++++++++ .../mime-types/node_modules/mime-db/index.js | 11 + .../node_modules/mime-db/package.json | 107 + .../node_modules/mime-types/package.json | 102 + .../request/node_modules/node-uuid/LICENSE.md | 21 + .../request/node_modules/node-uuid/README.md | 254 + .../node-uuid/benchmark/README.md | 53 + .../node-uuid/benchmark/bench.gnu | 174 + .../node_modules/node-uuid/benchmark/bench.sh | 34 + .../node-uuid/benchmark/benchmark-native.c | 34 + .../node-uuid/benchmark/benchmark.js | 84 + .../request/node_modules/node-uuid/bin/uuid | 26 + .../request/node_modules/node-uuid/bower.json | 23 + .../node_modules/node-uuid/component.json | 25 + .../node_modules/node-uuid/package.json | 87 + .../node_modules/node-uuid/test/compare_v1.js | 63 + .../node_modules/node-uuid/test/test.html | 17 + .../node_modules/node-uuid/test/test.js | 231 + .../request/node_modules/node-uuid/uuid.js | 272 + .../request/node_modules/oauth-sign/LICENSE | 55 + .../request/node_modules/oauth-sign/README.md | 4 + .../request/node_modules/oauth-sign/index.js | 136 + .../node_modules/oauth-sign/package.json | 72 + .../request/node_modules/qs/CHANGELOG.md | 144 + .../request/node_modules/qs/CONTRIBUTING.md | 1 + .../request/node_modules/qs/LICENSE | 28 + .../request/node_modules/qs/README.md | 398 + .../request/node_modules/qs/dist/qs.js | 574 ++ .../request/node_modules/qs/lib/formats.js | 18 + .../request/node_modules/qs/lib/index.js | 11 + .../request/node_modules/qs/lib/parse.js | 166 + .../request/node_modules/qs/lib/stringify.js | 187 + .../request/node_modules/qs/lib/utils.js | 180 + .../request/node_modules/qs/package.json | 95 + .../request/node_modules/qs/test/index.js | 7 + .../request/node_modules/qs/test/parse.js | 459 + .../request/node_modules/qs/test/stringify.js | 538 ++ .../request/node_modules/qs/test/utils.js | 22 + .../node_modules/stringstream/LICENSE.txt | 22 + .../node_modules/stringstream/README.md | 38 + .../node_modules/stringstream/example.js | 27 + .../node_modules/stringstream/package.json | 59 + .../node_modules/stringstream/stringstream.js | 102 + .../request/node_modules/tough-cookie/LICENSE | 27 + .../node_modules/tough-cookie/README.md | 506 + .../node_modules/tough-cookie/lib/cookie.js | 1336 +++ .../node_modules/tough-cookie/lib/memstore.js | 170 + .../tough-cookie/lib/pathMatch.js | 61 + .../tough-cookie/lib/permuteDomain.js | 56 + .../tough-cookie/lib/pubsuffix.js | 98 + .../node_modules/tough-cookie/lib/store.js | 71 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 176 + .../node_modules/punycode/package.json | 76 + .../node_modules/punycode/punycode.js | 533 ++ .../node_modules/tough-cookie/package.json | 109 + .../request/node_modules/tunnel-agent/LICENSE | 55 + .../node_modules/tunnel-agent/README.md | 4 + .../node_modules/tunnel-agent/index.js | 243 + .../node_modules/tunnel-agent/package.json | 74 + .../node_modules/request/package.json | 134 + .../node_modules/request/request.js | 1471 +++ .../node-pre-gyp/node_modules/rimraf/LICENSE | 15 + .../node_modules/rimraf/README.md | 101 + .../node-pre-gyp/node_modules/rimraf/bin.js | 40 + .../rimraf/node_modules/glob/LICENSE | 15 + .../rimraf/node_modules/glob/README.md | 368 + .../rimraf/node_modules/glob/changelog.md | 67 + .../rimraf/node_modules/glob/common.js | 240 + .../rimraf/node_modules/glob/glob.js | 792 ++ .../glob/node_modules/fs.realpath/LICENSE | 43 + .../glob/node_modules/fs.realpath/README.md | 33 + .../glob/node_modules/fs.realpath/index.js | 66 + .../glob/node_modules/fs.realpath/old.js | 303 + .../node_modules/fs.realpath/package.json | 47 + .../glob/node_modules/inflight/LICENSE | 15 + .../glob/node_modules/inflight/README.md | 37 + .../glob/node_modules/inflight/inflight.js | 54 + .../inflight/node_modules/wrappy/LICENSE | 15 + .../inflight/node_modules/wrappy/README.md | 36 + .../inflight/node_modules/wrappy/package.json | 46 + .../inflight/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/inflight/package.json | 79 + .../glob/node_modules/inherits/LICENSE | 16 + .../glob/node_modules/inherits/README.md | 42 + .../glob/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../glob/node_modules/inherits/package.json | 71 + .../glob/node_modules/minimatch/LICENSE | 15 + .../glob/node_modules/minimatch/README.md | 209 + .../glob/node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../glob/node_modules/minimatch/package.json | 71 + .../glob/node_modules/once/LICENSE | 15 + .../glob/node_modules/once/README.md | 79 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/once/once.js | 42 + .../glob/node_modules/once/package.json | 75 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 85 + .../node_modules/path-is-absolute/readme.md | 59 + .../rimraf/node_modules/glob/package.json | 85 + .../rimraf/node_modules/glob/sync.js | 486 + .../node_modules/rimraf/package.json | 76 + .../node_modules/rimraf/rimraf.js | 343 + .../node-pre-gyp/node_modules/semver/LICENSE | 15 + .../node_modules/semver/README.md | 350 + .../node_modules/semver/bin/semver | 133 + .../node_modules/semver/package.json | 68 + .../node_modules/semver/range.bnf | 16 + .../node_modules/semver/semver.js | 1203 +++ .../node_modules/tar-pack/LICENSE | 23 + .../node_modules/tar-pack/README.md | 84 + .../node_modules/tar-pack/index.js | 245 + .../tar-pack/node_modules/debug/History.md | 195 + .../tar-pack/node_modules/debug/Makefile | 36 + .../tar-pack/node_modules/debug/Readme.md | 188 + .../tar-pack/node_modules/debug/bower.json | 28 + .../tar-pack/node_modules/debug/browser.js | 168 + .../node_modules/debug/component.json | 19 + .../tar-pack/node_modules/debug/debug.js | 197 + .../tar-pack/node_modules/debug/node.js | 209 + .../debug/node_modules/ms/History.md | 66 + .../debug/node_modules/ms/LICENSE | 20 + .../debug/node_modules/ms/README.md | 35 + .../debug/node_modules/ms/index.js | 125 + .../debug/node_modules/ms/package.json | 56 + .../tar-pack/node_modules/debug/package.json | 58 + .../node_modules/fstream-ignore/LICENSE | 15 + .../node_modules/fstream-ignore/README.md | 22 + .../node_modules/fstream-ignore/ignore.js | 275 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/minimatch/LICENSE | 15 + .../node_modules/minimatch/README.md | 209 + .../node_modules/minimatch/minimatch.js | 923 ++ .../node_modules/brace-expansion/README.md | 122 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 58 + .../node_modules/balanced-match/package.json | 84 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 77 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 86 + .../node_modules/minimatch/package.json | 71 + .../node_modules/fstream-ignore/package.json | 78 + .../tar-pack/node_modules/fstream/LICENSE | 15 + .../tar-pack/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar-pack/node_modules/fstream/fstream.js | 35 + .../node_modules/fstream/lib/abstract.js | 85 + .../node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../fstream/node_modules/inherits/LICENSE | 16 + .../fstream/node_modules/inherits/README.md | 42 + .../fstream/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/fstream/package.json | 83 + .../tar-pack/node_modules/once/LICENSE | 15 + .../tar-pack/node_modules/once/README.md | 51 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 46 + .../once/node_modules/wrappy/wrappy.js | 33 + .../tar-pack/node_modules/once/once.js | 21 + .../tar-pack/node_modules/once/package.json | 54 + .../node_modules/readable-stream/LICENSE | 18 + .../node_modules/readable-stream/README.md | 36 + .../readable-stream/doc/stream.md | 2015 ++++ .../doc/wg-meetings/2015-01-30.md | 60 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 75 + .../lib/_stream_passthrough.js | 26 + .../readable-stream/lib/_stream_readable.js | 937 ++ .../readable-stream/lib/_stream_transform.js | 180 + .../readable-stream/lib/_stream_writable.js | 526 ++ .../lib/internal/streams/BufferList.js | 64 + .../node_modules/buffer-shims/index.js | 108 + .../node_modules/buffer-shims/license.md | 19 + .../node_modules/buffer-shims/package.json | 38 + .../node_modules/buffer-shims/readme.md | 21 + .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/float.patch | 604 ++ .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 51 + .../node_modules/core-util-is/test.js | 68 + .../node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../node_modules/inherits/package.json | 71 + .../node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 61 + .../node_modules/isarray/test.js | 20 + .../process-nextick-args/index.js | 43 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 36 + .../process-nextick-args/readme.md | 18 + .../node_modules/process-nextick-args/test.js | 24 + .../node_modules/string_decoder/LICENSE | 20 + .../node_modules/string_decoder/README.md | 7 + .../node_modules/string_decoder/index.js | 221 + .../node_modules/string_decoder/package.json | 41 + .../node_modules/util-deprecate/History.md | 16 + .../node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + .../node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 46 + .../node_modules/readable-stream/package.json | 99 + .../readable-stream/passthrough.js | 1 + .../node_modules/readable-stream/readable.js | 16 + .../node_modules/readable-stream/transform.js | 1 + .../node_modules/readable-stream/writable.js | 1 + .../tar-pack/node_modules/uid-number/LICENSE | 15 + .../node_modules/uid-number/README.md | 17 + .../node_modules/uid-number/get-uid-gid.js | 24 + .../node_modules/uid-number/package.json | 56 + .../node_modules/uid-number/uid-number.js | 59 + .../node_modules/tar-pack/package.json | 77 + .../tar-pack/test/fixtures/packed-file.txt | 1 + .../tar-pack/test/fixtures/packed.tar | Bin 0 -> 3584 bytes .../tar-pack/test/fixtures/packed.tar.gz | Bin 0 -> 152 bytes .../tar-pack/test/fixtures/to-pack/bar.txt | 1 + .../tar-pack/test/fixtures/to-pack/foo.txt | 1 + .../node_modules/tar-pack/test/index.js | 109 + .../node-pre-gyp/node_modules/tar/LICENSE | 12 + .../node-pre-gyp/node_modules/tar/README.md | 50 + .../node_modules/tar/examples/extracter.js | 19 + .../node_modules/tar/examples/packer.js | 24 + .../node_modules/tar/examples/reader.js | 36 + .../node_modules/tar/lib/buffer-entry.js | 30 + .../node_modules/tar/lib/entry-writer.js | 169 + .../node_modules/tar/lib/entry.js | 220 + .../tar/lib/extended-header-writer.js | 191 + .../node_modules/tar/lib/extended-header.js | 140 + .../node_modules/tar/lib/extract.js | 94 + .../tar/lib/global-header-writer.js | 14 + .../node_modules/tar/lib/header.js | 385 + .../node-pre-gyp/node_modules/tar/lib/pack.js | 236 + .../node_modules/tar/lib/parse.js | 275 + .../tar/node_modules/block-stream/LICENCE | 25 + .../tar/node_modules/block-stream/LICENSE | 15 + .../tar/node_modules/block-stream/README.md | 14 + .../node_modules/block-stream/block-stream.js | 209 + .../node_modules/block-stream/package.json | 69 + .../tar/node_modules/fstream/LICENSE | 15 + .../tar/node_modules/fstream/README.md | 76 + .../fstream/examples/filter-pipe.js | 134 + .../tar/node_modules/fstream/examples/pipe.js | 118 + .../node_modules/fstream/examples/reader.js | 68 + .../fstream/examples/symlink-write.js | 27 + .../tar/node_modules/fstream/fstream.js | 35 + .../tar/node_modules/fstream/lib/abstract.js | 85 + .../tar/node_modules/fstream/lib/collect.js | 70 + .../node_modules/fstream/lib/dir-reader.js | 252 + .../node_modules/fstream/lib/dir-writer.js | 174 + .../node_modules/fstream/lib/file-reader.js | 150 + .../node_modules/fstream/lib/file-writer.js | 107 + .../tar/node_modules/fstream/lib/get-type.js | 33 + .../node_modules/fstream/lib/link-reader.js | 53 + .../node_modules/fstream/lib/link-writer.js | 95 + .../node_modules/fstream/lib/proxy-reader.js | 95 + .../node_modules/fstream/lib/proxy-writer.js | 111 + .../tar/node_modules/fstream/lib/reader.js | 255 + .../node_modules/fstream/lib/socket-reader.js | 36 + .../tar/node_modules/fstream/lib/writer.js | 390 + .../fstream/node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../fstream/node_modules/graceful-fs/fs.js | 21 + .../node_modules/graceful-fs/graceful-fs.js | 262 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 85 + .../node_modules/graceful-fs/polyfills.js | 322 + .../tar/node_modules/fstream/package.json | 82 + .../tar/node_modules/inherits/LICENSE | 16 + .../tar/node_modules/inherits/README.md | 42 + .../tar/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../tar/node_modules/inherits/package.json | 73 + .../node_modules/tar/package.json | 80 + .../node-pre-gyp/node_modules/tar/tar.js | 173 + .../tar/test/00-setup-fixtures.js | 53 + .../tar/test/cb-never-called-1.0.1.tgz | Bin 0 -> 4096 bytes .../tar/test/dir-normalization.js | 177 + .../tar/test/dir-normalization.tar | Bin 0 -> 4608 bytes .../node_modules/tar/test/error-on-broken.js | 33 + .../node_modules/tar/test/extract-move.js | 132 + .../node_modules/tar/test/extract.js | 367 + .../node_modules/tar/test/fixtures.tgz | Bin 0 -> 19352 bytes .../node_modules/tar/test/header.js | 183 + .../tar/test/pack-no-proprietary.js | 886 ++ .../node_modules/tar/test/pack.js | 952 ++ .../node_modules/tar/test/parse-discard.js | 29 + .../node_modules/tar/test/parse.js | 359 + .../node_modules/tar/test/zz-cleanup.js | 20 + .../node_modules/node-pre-gyp/package.json | 113 + .../node_modules/serialport/package.json | 153 + .../serialport/src/serialport.cpp | 670 ++ .../node_modules/serialport/src/serialport.h | 195 + .../serialport/src/serialport_poller.cpp | 124 + .../serialport/src/serialport_poller.h | 35 + .../serialport/src/serialport_unix.cpp | 729 ++ .../serialport/src/serialport_win.cpp | 560 ++ .../serialport/src/win/AutoHModule.h | 72 + .../serialport/src/win/AutoHandle.h | 62 + .../serialport/src/win/AutoHeapAlloc.h | 72 + .../serialport/src/win/disphelper.c | 1292 +++ .../serialport/src/win/disphelper.h | 731 ++ .../serialport/src/win/enumser.cpp | 1186 +++ .../node_modules/serialport/src/win/enumser.h | 185 + .../node_modules/serialport/src/win/stdafx.h | 51 + .../serialport/src/win/stdstring.h | 4351 +++++++++ .../node_modules/socket.io-adapter/History.md | 41 + .../node_modules/socket.io-adapter/LICENSE | 20 + .../node_modules/socket.io-adapter/Readme.md | 16 + .../node_modules/socket.io-adapter/index.js | 249 + .../socket.io-adapter/package.json | 84 + .../node_modules/socket.io-client/History.md | 505 + .../node_modules/socket.io-client/LICENSE | 22 + .../node_modules/socket.io-client/README.md | 190 + .../socket.io-client/dist/socket.io.js | 8284 +++++++++++++++++ .../socket.io-client/dist/socket.io.js.map | 1 + .../socket.io-client/dist/socket.io.min.js | 3 + .../socket.io-client/dist/socket.io.slim.js | 6136 ++++++++++++ .../dist/socket.io.slim.js.map | 1 + .../dist/socket.io.slim.min.js | 2 + .../socket.io-client/lib/index.js | 109 + .../socket.io-client/lib/manager.js | 560 ++ .../node_modules/socket.io-client/lib/on.js | 24 + .../socket.io-client/lib/socket.js | 419 + .../node_modules/socket.io-client/lib/url.js | 75 + .../node_modules/component-emitter/History.md | 68 + .../node_modules/component-emitter/LICENSE | 24 + .../node_modules/component-emitter/Readme.md | 74 + .../node_modules/component-emitter/index.js | 163 + .../component-emitter/package.json | 216 + .../socket.io-client/package.json | 156 + .../node_modules/socket.io-parser/History.md | 127 + .../node_modules/socket.io-parser/LICENSE | 20 + .../node_modules/socket.io-parser/Readme.md | 73 + .../node_modules/socket.io-parser/binary.js | 141 + .../node_modules/socket.io-parser/index.js | 404 + .../socket.io-parser/is-buffer.js | 13 + .../node_modules/debug/History.md | 195 + .../node_modules/debug/Makefile | 36 + .../node_modules/debug/Readme.md | 188 + .../node_modules/debug/bower.json | 28 + .../node_modules/debug/browser.js | 168 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/debug.js | 197 + .../node_modules/debug/node.js | 209 + .../node_modules/debug/package.json | 106 + .../node_modules/ms/History.md | 66 + .../socket.io-parser/node_modules/ms/LICENSE | 20 + .../node_modules/ms/README.md | 35 + .../socket.io-parser/node_modules/ms/index.js | 125 + .../node_modules/ms/package.json | 82 + .../socket.io-parser/package.json | 101 + .../server/node_modules/socket.io/History.md | 632 ++ .../server/node_modules/socket.io/LICENSE | 22 + .../server/node_modules/socket.io/Readme.md | 489 + .../node_modules/socket.io/lib/client.js | 254 + .../node_modules/socket.io/lib/index.js | 443 + .../node_modules/socket.io/lib/namespace.js | 275 + .../node_modules/socket.io/lib/socket.js | 546 ++ .../node_modules/socket.io/package.json | 136 + .../server/node_modules/strip-ansi/index.js | 6 + .../server/node_modules/strip-ansi/license | 21 + .../node_modules/strip-ansi/package.json | 123 + .../server/node_modules/strip-ansi/readme.md | 33 + .../node_modules/supports-color/index.js | 50 + .../node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 113 + .../node_modules/supports-color/readme.md | 36 + .../server/node_modules/temporal/Gruntfile.js | 69 + .../server/node_modules/temporal/LICENSE-MIT | 22 + .../server/node_modules/temporal/README.md | 112 + .../node_modules/temporal/lib/temporal.js | 277 + .../node_modules/temporal/lib/timeout.js | 14 + .../server/node_modules/temporal/package.json | 121 + .../server/node_modules/temporal/test/demo.js | 46 + .../node_modules/temporal/test/queue.js | 44 + .../server/node_modules/temporal/test/test.js | 493 + .../server/node_modules/temporal/uvrun.js | 69 + .../server/node_modules/to-array/LICENCE | 19 + .../server/node_modules/to-array/README.md | 22 + .../server/node_modules/to-array/index.js | 13 + .../server/node_modules/to-array/package.json | 98 + .../server/node_modules/ultron/LICENSE | 22 + .../server/node_modules/ultron/README.md | 97 + .../server/node_modules/ultron/index.js | 129 + .../server/node_modules/ultron/package.json | 108 + .../server/node_modules/ultron/test.js | 327 + .../server/node_modules/ws/Makefile | 45 + .../server/node_modules/ws/README.md | 235 + .../server/node_modules/ws/SECURITY.md | 33 + .../server/node_modules/ws/index.js | 49 + .../server/node_modules/ws/lib/BufferPool.js | 63 + .../ws/lib/BufferUtil.fallback.js | 47 + .../server/node_modules/ws/lib/BufferUtil.js | 13 + .../server/node_modules/ws/lib/ErrorCodes.js | 24 + .../server/node_modules/ws/lib/Extensions.js | 70 + .../node_modules/ws/lib/PerMessageDeflate.js | 337 + .../node_modules/ws/lib/Receiver.hixie.js | 194 + .../server/node_modules/ws/lib/Receiver.js | 793 ++ .../node_modules/ws/lib/Sender.hixie.js | 124 + .../server/node_modules/ws/lib/Sender.js | 324 + .../ws/lib/Validation.fallback.js | 11 + .../server/node_modules/ws/lib/Validation.js | 13 + .../server/node_modules/ws/lib/WebSocket.js | 987 ++ .../node_modules/ws/lib/WebSocketServer.js | 554 ++ .../server/node_modules/ws/package.json | 117 + .../server/node_modules/wtf-8/LICENSE-MIT.txt | 20 + .../server/node_modules/wtf-8/README.md | 105 + .../server/node_modules/wtf-8/package.json | 98 + .../server/node_modules/wtf-8/wtf-8.js | 234 + .../node_modules/xmlhttprequest-ssl/LICENSE | 22 + .../node_modules/xmlhttprequest-ssl/README.md | 61 + .../xmlhttprequest-ssl/autotest.watchr | 8 + .../xmlhttprequest-ssl/example/demo.js | 16 + .../xmlhttprequest-ssl/lib/XMLHttpRequest.js | 650 ++ .../xmlhttprequest-ssl/package.json | 98 + .../tests/test-constants.js | 13 + .../xmlhttprequest-ssl/tests/test-events.js | 50 + .../tests/test-exceptions.js | 59 + .../xmlhttprequest-ssl/tests/test-headers.js | 76 + .../tests/test-redirect-302.js | 41 + .../tests/test-redirect-303.js | 41 + .../tests/test-redirect-307.js | 43 + .../tests/test-request-methods.js | 62 + .../tests/test-request-protocols.js | 32 + .../xmlhttprequest-ssl/tests/testdata.txt | 1 + .../server/node_modules/yeast/LICENSE | 22 + .../server/node_modules/yeast/README.md | 82 + .../server/node_modules/yeast/index.js | 68 + .../server/node_modules/yeast/package.json | 100 + src/p29-arduino-server/server/package.json | 16 + src/p29-arduino-server/sketch.js | 31 + 3997 files changed, 565619 insertions(+), 6 deletions(-) create mode 100644 src/p28-image-field/agent.js create mode 100644 src/p28-image-field/field-image.js create mode 100644 src/p28-image-field/img/x.jpg create mode 100644 src/p28-image-field/index.html create mode 100644 src/p28-image-field/lib/p5.min.js create mode 100644 src/p28-image-field/sketch.js create mode 100644 src/p29-arduino-server/agent.js create mode 100644 src/p29-arduino-server/index.html create mode 100644 src/p29-arduino-server/lib/dat.gui.min.js create mode 100644 src/p29-arduino-server/lib/p5.min.js create mode 100644 src/p29-arduino-server/server/app.js create mode 100644 src/p29-arduino-server/server/node_modules/accepts/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/accepts/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/accepts/README.md create mode 100644 src/p29-arduino-server/server/node_modules/accepts/index.js create mode 100644 src/p29-arduino-server/server/node_modules/accepts/package.json create mode 100644 src/p29-arduino-server/server/node_modules/after/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/after/README.md create mode 100644 src/p29-arduino-server/server/node_modules/after/index.js create mode 100644 src/p29-arduino-server/server/node_modules/after/package.json create mode 100644 src/p29-arduino-server/server/node_modules/after/test/after-test.js create mode 100644 src/p29-arduino-server/server/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/ansi-styles/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ansi-styles/license create mode 100644 src/p29-arduino-server/server/node_modules/ansi-styles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/ansi-styles/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/arraybuffer.slice/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/arraybuffer.slice/README.md create mode 100644 src/p29-arduino-server/server/node_modules/arraybuffer.slice/index.js create mode 100644 src/p29-arduino-server/server/node_modules/arraybuffer.slice/package.json create mode 100644 src/p29-arduino-server/server/node_modules/arraybuffer.slice/test/slice-buffer.js create mode 100644 src/p29-arduino-server/server/node_modules/backo2/History.md create mode 100644 src/p29-arduino-server/server/node_modules/backo2/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/backo2/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/backo2/component.json create mode 100644 src/p29-arduino-server/server/node_modules/backo2/index.js create mode 100644 src/p29-arduino-server/server/node_modules/backo2/package.json create mode 100644 src/p29-arduino-server/server/node_modules/backo2/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/base64-arraybuffer/LICENSE-MIT create mode 100644 src/p29-arduino-server/server/node_modules/base64-arraybuffer/README.md create mode 100644 src/p29-arduino-server/server/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js create mode 100644 src/p29-arduino-server/server/node_modules/base64-arraybuffer/package.json create mode 100644 src/p29-arduino-server/server/node_modules/base64id/README.md create mode 100644 src/p29-arduino-server/server/node_modules/base64id/lib/base64id.js create mode 100644 src/p29-arduino-server/server/node_modules/base64id/package.json create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/History.md create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/example.js create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/index.js create mode 100644 src/p29-arduino-server/server/node_modules/better-assert/package.json create mode 100644 src/p29-arduino-server/server/node_modules/bindings/README.md create mode 100644 src/p29-arduino-server/server/node_modules/bindings/bindings.js create mode 100644 src/p29-arduino-server/server/node_modules/bindings/package.json create mode 100644 src/p29-arduino-server/server/node_modules/blob/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/blob/README.md create mode 100644 src/p29-arduino-server/server/node_modules/blob/index.js create mode 100644 src/p29-arduino-server/server/node_modules/blob/package.json create mode 100644 src/p29-arduino-server/server/node_modules/blob/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/README.md create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/index.js create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/package.json create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/test/parsers.js create mode 100644 src/p29-arduino-server/server/node_modules/browser-serialport/test/serialport-basic.js create mode 100644 src/p29-arduino-server/server/node_modules/callsite/History.md create mode 100644 src/p29-arduino-server/server/node_modules/callsite/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/callsite/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/callsite/index.js create mode 100644 src/p29-arduino-server/server/node_modules/callsite/package.json create mode 100644 src/p29-arduino-server/server/node_modules/chalk/index.js create mode 100644 src/p29-arduino-server/server/node_modules/chalk/license create mode 100644 src/p29-arduino-server/server/node_modules/chalk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/chalk/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/README.md create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/conversions.js create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/css-keywords.js create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/index.js create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/package.json create mode 100644 src/p29-arduino-server/server/node_modules/color-convert/route.js create mode 100644 src/p29-arduino-server/server/node_modules/commander/History.md create mode 100644 src/p29-arduino-server/server/node_modules/commander/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/commander/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/commander/index.js create mode 100644 src/p29-arduino-server/server/node_modules/commander/package.json create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/History.md create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/component.json create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/index.js create mode 100644 src/p29-arduino-server/server/node_modules/component-bind/package.json create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/History.md create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/component.json create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/index.js create mode 100644 src/p29-arduino-server/server/node_modules/component-emitter/package.json create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/History.md create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/component.json create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/component-inherit/test/inherit.js create mode 100644 src/p29-arduino-server/server/node_modules/cookie/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/cookie/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/cookie/README.md create mode 100644 src/p29-arduino-server/server/node_modules/cookie/index.js create mode 100644 src/p29-arduino-server/server/node_modules/cookie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/debug/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/debug/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/debug/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/debug/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/debug/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/debug/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/debug/component.json create mode 100644 src/p29-arduino-server/server/node_modules/debug/debug.js create mode 100644 src/p29-arduino-server/server/node_modules/debug/index.js create mode 100644 src/p29-arduino-server/server/node_modules/debug/node.js create mode 100644 src/p29-arduino-server/server/node_modules/debug/package.json create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/README.md create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/index.js create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/package.json create mode 100644 src/p29-arduino-server/server/node_modules/define-properties/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/component.json create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/example.html create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ease-component/package.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/History.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/README.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/engine.io.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/socket.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transport.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transports/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transports/polling-jsonp.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transports/polling-xhr.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transports/polling.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/transports/websocket.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/lib/xmlhttprequest.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/node_modules/component-emitter/History.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/node_modules/component-emitter/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/node_modules/component-emitter/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/node_modules/component-emitter/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/node_modules/component-emitter/package.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-client/package.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/History.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/lib/keys.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/History.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/README.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/fixtures/big.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/package.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/node_modules/has-binary/test.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io-parser/package.json create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/History.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/README.md create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/engine.io.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/server.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/socket.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transport.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transports/index.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transports/polling-jsonp.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transports/polling-xhr.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transports/polling.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/lib/transports/websocket.js create mode 100644 src/p29-arduino-server/server/node_modules/engine.io/package.json create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/Gruntfile.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/README.md create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/component.json create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-sham.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-sham.map create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-sham.min.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-shim.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-shim.map create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/es6-shim.min.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/full.html create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/min.html create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/package.json create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test-sham/function.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test-sham/index.html create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test-sham/set-prototype-of.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/array.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/browser-onload.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/browser-setup.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/date.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/index.html create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/json.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/math.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/mocha.opts create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/native.html create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/number.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/object.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/all.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/evil-promises.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-aplus.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-es6.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/race.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/reject.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/resolve.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/simple.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/promise/subclass.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/reflect.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/regexp.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/set.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/string.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/test_helpers.js create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/worker-runner.workerjs create mode 100644 src/p29-arduino-server/server/node_modules/es6-shim/test/worker-test.js create mode 100644 src/p29-arduino-server/server/node_modules/escape-string-regexp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/escape-string-regexp/license create mode 100644 src/p29-arduino-server/server/node_modules/escape-string-regexp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/escape-string-regexp/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/changelog create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/adxl345.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/blink.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/close-events.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/digital-read-pullup.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/etherport.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/hw-serial-read-gps.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/johnny-five-io-plugin.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/k22.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/lsm303dlhc.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/mma8452.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/ping-read.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized-0.3.3.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/reporting-analog.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/reporting-and-writing.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/reporting.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/servo-config.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/servosweep.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sp-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sp.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-read-gps.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-test-basic.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-from-analog-in.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-meastro-6.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/test-analog-read.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/test-i2c-read.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/examples/test-serial-read.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/lib/com.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/lib/encoder7bit.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/lib/firmata.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/lib/onewireutils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-list.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-terminal.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/binding.gyp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/obj.target/serialport/src/serialport.o create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_poller.o create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_unix.o create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/serialport.node create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/lib/bindings.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/lib/list-unix.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/lib/parsers.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/lib/serialport.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/appveyor.yml create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/build.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/clean.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/configure.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/info.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/install.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/node-pre-gyp.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/package.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/pre-binding.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/publish.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/rebuild.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/reinstall.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/reveal.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/testbinary.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/testpackage.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/unpublish.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/s3_setup.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/lib/util/versioning.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/log.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/History.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/License create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackerstream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/base-theme.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/error.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/has-color.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/signals.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/align.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/test/align.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/plumbing.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/process.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/progress-bar.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/render-template.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-immediate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-interval.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/spin.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/template-item.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/theme-set.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/themes.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/wide-truncate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.APACHE2 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.BSD create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.MIT create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/all_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/kv_short.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/stop_early.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/unknown.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/codecov.yml create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/auth.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/getProxyFromURI.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/har.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/multipart.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/oauth.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/querystring.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/redirect.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/tunnel.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/aws4.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/lru.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/populate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/bench.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_asynckit.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/streamify.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/stream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/bin/har-validator create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/error.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/runner.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cache.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cacheEntry.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/content.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cookie.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/creator.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/entry.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/har.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/log.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/page.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/pageTimings.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/postData.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/record.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/request.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/response.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/timings.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/dist/client.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/example/usage.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/hawk.png create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/logo.png create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/client.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/server.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/client.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/readme.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/server.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/uri.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/http_signing.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/parser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/signer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/verify.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.deps create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/examples/simple.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/links create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/links create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/links create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/address create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/calendar create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/card create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/geo create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/interfaces create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/links create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/links create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/schema create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-03.xml create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-04.xml create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/links.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-verror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-werror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/varargs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/werror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.inherit.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.werror.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-sign create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-verify create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-conv.1 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-sign.1 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-verify.1 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/etc/dashdash.bash_completion.in create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/lib/dashdash.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/LICENSE-jsbn create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/AUTHORS.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.0 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.1 create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/jsdoc.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/core.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/curve255.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/dh.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/eddsa.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.html create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/COPYING.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/isstream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bin/uuid create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/dist/qs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/request.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/bin.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/common.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/glob.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/old.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/bin/semver create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/range.bnf create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/semver.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/History.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/History.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar.gz create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/buffer-entry.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/header.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/tar.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/cb-never-called-1.0.1.tgz create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.tar create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/error-on-broken.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/header.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse-discard.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/node_modules/node-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport.cpp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport_poller.cpp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport_poller.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport_unix.cpp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/serialport_win.cpp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/AutoHModule.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/AutoHandle.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/AutoHeapAlloc.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/disphelper.c create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/disphelper.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/enumser.cpp create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/enumser.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/stdafx.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/src/win/stdstring.h create mode 100644 src/p29-arduino-server/server/node_modules/firmata/package.json create mode 100644 src/p29-arduino-server/server/node_modules/firmata/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/firmata/repl.js create mode 100644 src/p29-arduino-server/server/node_modules/foreach/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/foreach/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/foreach/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/foreach/component.json create mode 100644 src/p29-arduino-server/server/node_modules/foreach/index.js create mode 100644 src/p29-arduino-server/server/node_modules/foreach/package.json create mode 100644 src/p29-arduino-server/server/node_modules/foreach/test.js create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/README.md create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/implementation.js create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/index.js create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/package.json create mode 100644 src/p29-arduino-server/server/node_modules/function-bind/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/graceful-readlink/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/graceful-readlink/README.md create mode 100644 src/p29-arduino-server/server/node_modules/graceful-readlink/index.js create mode 100644 src/p29-arduino-server/server/node_modules/graceful-readlink/package.json create mode 100644 src/p29-arduino-server/server/node_modules/has-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/has-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/has-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/has-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/History.md create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/README.md create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/index.js create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/package.json create mode 100644 src/p29-arduino-server/server/node_modules/has-binary/test.js create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/History.md create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/component.json create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/index.js create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/package.json create mode 100644 src/p29-arduino-server/server/node_modules/has-cors/test.js create mode 100644 src/p29-arduino-server/server/node_modules/immediate/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/immediate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/immediate/dist/immediate.js create mode 100644 src/p29-arduino-server/server/node_modules/immediate/dist/immediate.min.js create mode 100644 src/p29-arduino-server/server/node_modules/immediate/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/immediate/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/immediate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/indexof/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/indexof/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/indexof/component.json create mode 100644 src/p29-arduino-server/server/node_modules/indexof/index.js create mode 100644 src/p29-arduino-server/server/node_modules/indexof/package.json create mode 100644 src/p29-arduino-server/server/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/isarray/build/build.js create mode 100644 src/p29-arduino-server/server/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/egs-markdown.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/accelerometer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/altimeter.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/animation.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/array-includes-shim.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/barometer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/board.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/board.options.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/board.pins.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/button.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/color.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/compass.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/definitions/mpr121.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/esc.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/evshield.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/expander.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/fn.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/gps.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/gripper.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/gyro.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/hygrometer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/imu.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/johnny-five.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/joystick.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/keypad.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/lcd-chars.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/lcd.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/callbacks.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/digits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/led-chars.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/led.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/ledcontrol.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/leds.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/matrix.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/rgb.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/led/rgbs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/light.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/mixins/collection.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/mixins/within.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/motion.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/motor.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/orientation.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/piezo.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/pin.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/ping.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/proximity.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/reflectancearray.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/relay.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/repl.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/sensor.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/servo.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/shiftregister.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/sleep.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/sonar.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/stepper.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/switch.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/thermometer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/lib/wii.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/bin/serialport-list.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/bin/serialport-terminal.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/binding.gyp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/build/Release/obj.target/serialport/src/serialport.o create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_poller.o create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_unix.o create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/build/Release/serialport.node create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/lib/bindings.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/lib/list-unix.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/lib/parsers.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/lib/serialport.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/appveyor.yml create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/build.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/clean.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/configure.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/info.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/install.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/node-pre-gyp.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/package.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/pre-binding.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/publish.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/rebuild.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/reinstall.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/reveal.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/testbinary.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/testpackage.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/unpublish.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/s3_setup.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/lib/util/versioning.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/log.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/History.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/License create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackerstream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/base-theme.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/error.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/has-color.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/signals.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/align.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/test/align.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/plumbing.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/process.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/progress-bar.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/render-template.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-immediate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-interval.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/spin.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/template-item.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/theme-set.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/themes.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/wide-truncate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.APACHE2 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.BSD create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.MIT create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/all_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/kv_short.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/stop_early.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/unknown.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/codecov.yml create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/auth.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/getProxyFromURI.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/har.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/multipart.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/oauth.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/querystring.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/redirect.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/tunnel.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/aws4.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/lru.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/populate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/bench.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_asynckit.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/streamify.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/stream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/bin/har-validator create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/error.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/runner.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cache.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cacheEntry.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/content.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cookie.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/creator.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/entry.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/har.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/log.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/page.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/pageTimings.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/postData.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/record.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/request.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/response.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/timings.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/dist/client.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/example/usage.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/hawk.png create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/logo.png create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/client.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/server.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/client.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/readme.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/server.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/uri.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/http_signing.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/parser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/signer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/verify.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.deps create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/examples/simple.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/links create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/links create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/links create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/address create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/calendar create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/card create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/geo create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/interfaces create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/links create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/links create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/schema create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-03.xml create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-04.xml create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/links.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-verror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-werror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/varargs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/werror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.inherit.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.werror.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-sign create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-verify create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-conv.1 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-sign.1 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-verify.1 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/etc/dashdash.bash_completion.in create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/lib/dashdash.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/LICENSE-jsbn create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/AUTHORS.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.0 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.1 create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/jsdoc.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/core.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/curve255.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/dh.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/eddsa.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.html create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/COPYING.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/isstream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bin/uuid create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/dist/qs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/request.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/bin.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/common.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/glob.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/old.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/bin/semver create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/range.bnf create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/semver.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/History.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/History.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar.gz create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/buffer-entry.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/header.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/tar.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/cb-never-called-1.0.1.tgz create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.tar create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/error-on-broken.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/header.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse-discard.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/node_modules/node-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/package.json create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport.cpp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport_poller.cpp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport_poller.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport_unix.cpp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/serialport_win.cpp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/AutoHModule.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/AutoHandle.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/AutoHeapAlloc.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/disphelper.c create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/disphelper.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/enumser.cpp create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/enumser.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/stdafx.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/node_modules/serialport/src/win/stdstring.h create mode 100644 src/p29-arduino-server/server/node_modules/johnny-five/package.json create mode 100644 src/p29-arduino-server/server/node_modules/json3/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/json3/README.md create mode 100644 src/p29-arduino-server/server/node_modules/json3/lib/json3.js create mode 100644 src/p29-arduino-server/server/node_modules/json3/lib/json3.min.js create mode 100644 src/p29-arduino-server/server/node_modules/json3/package.json create mode 100644 src/p29-arduino-server/server/node_modules/lie/README.md create mode 100644 src/p29-arduino-server/server/node_modules/lie/dist/lie.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/dist/lie.min.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/dist/lie.polyfill.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/dist/lie.polyfill.min.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/lie/license.md create mode 100644 src/p29-arduino-server/server/node_modules/lie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/lie/polyfill.js create mode 100644 src/p29-arduino-server/server/node_modules/lodash.clonedeep/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/lodash.clonedeep/README.md create mode 100644 src/p29-arduino-server/server/node_modules/lodash.clonedeep/index.js create mode 100644 src/p29-arduino-server/server/node_modules/lodash.clonedeep/package.json create mode 100644 src/p29-arduino-server/server/node_modules/lodash.debounce/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/lodash.debounce/README.md create mode 100644 src/p29-arduino-server/server/node_modules/lodash.debounce/index.js create mode 100644 src/p29-arduino-server/server/node_modules/lodash.debounce/package.json create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/README.md create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/db.json create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/index.js create mode 100644 src/p29-arduino-server/server/node_modules/mime-db/package.json create mode 100644 src/p29-arduino-server/server/node_modules/mime-types/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/mime-types/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/mime-types/README.md create mode 100644 src/p29-arduino-server/server/node_modules/mime-types/index.js create mode 100644 src/p29-arduino-server/server/node_modules/mime-types/package.json create mode 100644 src/p29-arduino-server/server/node_modules/ms/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/ms/README.md create mode 100644 src/p29-arduino-server/server/node_modules/ms/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ms/package.json create mode 100644 src/p29-arduino-server/server/node_modules/nan/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/README.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/asyncworker.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/buffers.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/callback.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/converters.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/errors.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/maybe_types.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/methods.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/new.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/node_misc.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/object_wrappers.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/persistent.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/scopes.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/script.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/string_bytes.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/v8_internals.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/doc/v8_misc.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/include_dirs.js create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_callbacks.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_callbacks_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_callbacks_pre_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_converters.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_converters_43_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_converters_pre_43_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_implementation_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_implementation_pre_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_maybe_43_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_maybe_pre_43_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_new.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_object_wrap.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_persistent_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_persistent_pre_12_inl.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_string_bytes.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_typedarray_contents.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/nan_weak.h create mode 100644 src/p29-arduino-server/server/node_modules/nan/package.json create mode 100644 src/p29-arduino-server/server/node_modules/nan/tools/1to2.js create mode 100644 src/p29-arduino-server/server/node_modules/nan/tools/README.md create mode 100644 src/p29-arduino-server/server/node_modules/nan/tools/package.json create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/README.md create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/lib/nanoTimer.js create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/lib/nanoTimerExp.js create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/package.json create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test-1.js create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test-kanecko.js create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test/nanotimer_0_2_6_test_partial.png create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test/nanotimer_deferred.png create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test/nanotimer_non_deferred.png create mode 100644 src/p29-arduino-server/server/node_modules/nanotimer/test/test-nanoTimer.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/README.md create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/index.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/lib/charset.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/lib/encoding.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/lib/language.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/lib/mediaType.js create mode 100644 src/p29-arduino-server/server/node_modules/negotiator/package.json create mode 100644 src/p29-arduino-server/server/node_modules/object-assign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object-assign/license create mode 100644 src/p29-arduino-server/server/node_modules/object-assign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/object-assign/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/object-component/History.md create mode 100644 src/p29-arduino-server/server/node_modules/object-component/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/object-component/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/object-component/component.json create mode 100644 src/p29-arduino-server/server/node_modules/object-component/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object-component/package.json create mode 100644 src/p29-arduino-server/server/node_modules/object-component/test/object.js create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/README.md create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/isArguments.js create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/package.json create mode 100644 src/p29-arduino-server/server/node_modules/object-keys/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/dist/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/hasSymbols.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/implementation.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/polyfill.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/shim.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test.sh create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/native.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/shams/core-js.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/shams/get-own-property-symbols.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/shimmed.js create mode 100644 src/p29-arduino-server/server/node_modules/object.assign/test/tests.js create mode 100644 src/p29-arduino-server/server/node_modules/options/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/options/README.md create mode 100644 src/p29-arduino-server/server/node_modules/options/lib/options.js create mode 100644 src/p29-arduino-server/server/node_modules/options/package.json create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/README.md create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/index.js create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/package.json create mode 100644 src/p29-arduino-server/server/node_modules/parsejson/test.js create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/index.js create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/parseqs/test.js create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/History.md create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/README.md create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/index.js create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/package.json create mode 100644 src/p29-arduino-server/server/node_modules/parseuri/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/bin/serialport-list.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/bin/serialport-terminal.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/binding.gyp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/build/Release/obj.target/serialport/src/serialport.o create mode 100644 src/p29-arduino-server/server/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_poller.o create mode 100644 src/p29-arduino-server/server/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_unix.o create mode 100644 src/p29-arduino-server/server/node_modules/serialport/build/Release/serialport.node create mode 100644 src/p29-arduino-server/server/node_modules/serialport/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/lib/bindings.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/lib/list-unix.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/lib/parsers.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/lib/serialport.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/appveyor.yml create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/build.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/clean.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/configure.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/info.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/install.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/node-pre-gyp.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/package.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/pre-binding.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/publish.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/rebuild.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/reinstall.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/reveal.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/testbinary.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/testpackage.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/unpublish.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/s3_setup.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/lib/util/versioning.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/cmd.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/bin/usage.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/examples/pow.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/chmod.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/clobber.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/mkdirp.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/perm_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/race.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/rel.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/return_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/root.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/mkdirp/test/umask_sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/bin/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/examples/my-program.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/abbrev.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/log.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/History.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/License create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/test/trackerstream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/console-control-strings/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/base-theme.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/error.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/has-color.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/aproba/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/object-assign/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit/signals.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/string-width/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/align.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/node_modules/wide-align/test/align.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/plumbing.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/process.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/progress-bar.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/render-template.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-immediate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/set-interval.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/spin.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/template-item.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/theme-set.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/themes.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/gauge/wide-truncate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/node_modules/set-blocking/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/npmlog/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.APACHE2 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.BSD create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/LICENSE.MIT create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/deep-extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/ini/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/example/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/readme.markdown create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/all_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/bool.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dash.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/default_bool.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/dotted.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/kv_short.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/long.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/num.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/parse_modified.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/short.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/stop_early.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/unknown.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/minimist/test/whitespace.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/cli.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/ini.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/nested-env-vars.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rc/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/codecov.yml create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/auth.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/cookies.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/getProxyFromURI.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/har.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/helpers.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/multipart.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/oauth.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/querystring.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/redirect.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/lib/tunnel.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws-sign2/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/aws4.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/lru.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/aws4/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/caseless/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/lib/combined_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/combined-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/extend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/forever-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/License create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/form_data.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/lib/populate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/bench.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/abort.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/defer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/iterate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_asynckit.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/state.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/streamify.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/lib/terminator.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/parallel.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serial.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/serialOrdered.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/node_modules/asynckit/stream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/form-data/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/bin/har-validator create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/async.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/error.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/runner.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cache.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cacheEntry.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/content.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/cookie.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/creator.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/entry.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/har.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/log.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/page.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/pageTimings.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/postData.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/record.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/request.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/response.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/lib/schemas/timings.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/har-validator/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/dist/client.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/example/usage.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/hawk.png create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/images/logo.png create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/client.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/server.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/client.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/crypto.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/readme.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/server.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/uri.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/hawk/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/http_signing.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/parser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/signer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/lib/verify.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.deps create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/examples/simple.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/links create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/links create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/links create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/address create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/calendar create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/card create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/geo create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/interfaces create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/json-ref create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/links create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/hyper-schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/links create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/schema create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-03.xml create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-04.xml create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/links.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile.targ create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-verror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-werror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/varargs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/werror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/jsl.node.conf create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.inherit.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.werror.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-sign create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-verify create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/certificate.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/openssh-cert.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509-pem.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/x509.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/identity.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-conv.1 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-sign.1 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/man/man1/sshpk-verify.1 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/AUTHORS create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/CHANGES.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/etc/dashdash.bash_completion.in create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/lib/dashdash.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/LICENSE-jsbn create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/AUTHORS.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.0 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.1 create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/jsdoc.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/core.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/curve255.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/dh.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/eddsa.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.html create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/COPYING.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/http-signature/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/is-typedarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/isstream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/isstream/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/mime-types/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/bench.sh create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bin/uuid create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/compare_v1.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.html create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/node-uuid/uuid.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/oauth-sign/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CHANGELOG.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/CONTRIBUTING.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/dist/qs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/formats.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/lib/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/stringify.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/qs/test/utils.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/LICENSE.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/example.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream/stringstream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/cookie.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/memstore.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/lib/store.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/request/request.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/bin.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/changelog.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/common.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/glob.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/old.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/sync.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/rimraf/rimraf.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/bin/semver create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/range.bnf create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/semver/semver.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/History.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/debug.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/History.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/node_modules/ms/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/debug/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/ignore.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/node_modules/minimatch/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream-ignore/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/once.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/once/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/license.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/buffer-shims/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/float.patch create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/component.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/isarray/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/license.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/process-nextick-args/test.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/History.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/node.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/util-deprecate/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/passthrough.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/readable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/transform.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/writable.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/get-uid-gid.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/uid-number/uid-number.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed-file.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/packed.tar.gz create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/bar.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/fixtures/to-pack/foo.txt create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/test/index.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/extracter.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/packer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/buffer-entry.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/entry.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extended-header.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/global-header-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/header.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/lib/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/block-stream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/block-stream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/filter-pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/pipe.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/examples/symlink-write.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/fstream.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/abstract.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/collect.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/dir-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/file-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/get-type.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/link-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/proxy-writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/socket-reader.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/lib/writer.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/fs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/legacy-streams.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/fstream/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/README.md create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/inherits_browser.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/node_modules/inherits/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/tar.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/00-setup-fixtures.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/cb-never-called-1.0.1.tgz create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/dir-normalization.tar create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/error-on-broken.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract-move.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/extract.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/fixtures.tgz create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/header.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack-no-proprietary.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/pack.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse-discard.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/parse.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar/test/zz-cleanup.js create mode 100644 src/p29-arduino-server/server/node_modules/serialport/node_modules/node-pre-gyp/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/package.json create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport.cpp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport_poller.cpp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport_poller.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport_unix.cpp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/serialport_win.cpp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/AutoHModule.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/AutoHandle.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/AutoHeapAlloc.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/disphelper.c create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/disphelper.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/enumser.cpp create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/enumser.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/stdafx.h create mode 100644 src/p29-arduino-server/server/node_modules/serialport/src/win/stdstring.h create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-adapter/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-adapter/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-adapter/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-adapter/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-adapter/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/README.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.js.map create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.min.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.slim.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.slim.js.map create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/dist/socket.io.slim.min.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/lib/manager.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/lib/on.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/lib/socket.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/lib/url.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/node_modules/component-emitter/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/node_modules/component-emitter/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/node_modules/component-emitter/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/node_modules/component-emitter/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/node_modules/component-emitter/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-client/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/binary.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/is-buffer.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/bower.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/browser.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/component.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/debug.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/node.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/debug/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/ms/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/ms/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/ms/README.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/ms/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/node_modules/ms/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io-parser/package.json create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/History.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/Readme.md create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/lib/client.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/lib/index.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/lib/namespace.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/lib/socket.js create mode 100644 src/p29-arduino-server/server/node_modules/socket.io/package.json create mode 100644 src/p29-arduino-server/server/node_modules/strip-ansi/index.js create mode 100644 src/p29-arduino-server/server/node_modules/strip-ansi/license create mode 100644 src/p29-arduino-server/server/node_modules/strip-ansi/package.json create mode 100644 src/p29-arduino-server/server/node_modules/strip-ansi/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/supports-color/index.js create mode 100644 src/p29-arduino-server/server/node_modules/supports-color/license create mode 100644 src/p29-arduino-server/server/node_modules/supports-color/package.json create mode 100644 src/p29-arduino-server/server/node_modules/supports-color/readme.md create mode 100644 src/p29-arduino-server/server/node_modules/temporal/Gruntfile.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/LICENSE-MIT create mode 100644 src/p29-arduino-server/server/node_modules/temporal/README.md create mode 100644 src/p29-arduino-server/server/node_modules/temporal/lib/temporal.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/lib/timeout.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/package.json create mode 100644 src/p29-arduino-server/server/node_modules/temporal/test/demo.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/test/queue.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/test/test.js create mode 100644 src/p29-arduino-server/server/node_modules/temporal/uvrun.js create mode 100644 src/p29-arduino-server/server/node_modules/to-array/LICENCE create mode 100644 src/p29-arduino-server/server/node_modules/to-array/README.md create mode 100644 src/p29-arduino-server/server/node_modules/to-array/index.js create mode 100644 src/p29-arduino-server/server/node_modules/to-array/package.json create mode 100644 src/p29-arduino-server/server/node_modules/ultron/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/ultron/README.md create mode 100644 src/p29-arduino-server/server/node_modules/ultron/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ultron/package.json create mode 100644 src/p29-arduino-server/server/node_modules/ultron/test.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/Makefile create mode 100644 src/p29-arduino-server/server/node_modules/ws/README.md create mode 100644 src/p29-arduino-server/server/node_modules/ws/SECURITY.md create mode 100644 src/p29-arduino-server/server/node_modules/ws/index.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/BufferPool.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/BufferUtil.fallback.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/BufferUtil.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/ErrorCodes.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Extensions.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/PerMessageDeflate.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Receiver.hixie.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Receiver.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Sender.hixie.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Sender.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Validation.fallback.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/Validation.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/WebSocket.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/lib/WebSocketServer.js create mode 100644 src/p29-arduino-server/server/node_modules/ws/package.json create mode 100644 src/p29-arduino-server/server/node_modules/wtf-8/LICENSE-MIT.txt create mode 100644 src/p29-arduino-server/server/node_modules/wtf-8/README.md create mode 100644 src/p29-arduino-server/server/node_modules/wtf-8/package.json create mode 100644 src/p29-arduino-server/server/node_modules/wtf-8/wtf-8.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/README.md create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/autotest.watchr create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/example/demo.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/package.json create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-constants.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-events.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-exceptions.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-headers.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-redirect-302.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-redirect-303.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-redirect-307.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-request-methods.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/test-request-protocols.js create mode 100644 src/p29-arduino-server/server/node_modules/xmlhttprequest-ssl/tests/testdata.txt create mode 100644 src/p29-arduino-server/server/node_modules/yeast/LICENSE create mode 100644 src/p29-arduino-server/server/node_modules/yeast/README.md create mode 100644 src/p29-arduino-server/server/node_modules/yeast/index.js create mode 100644 src/p29-arduino-server/server/node_modules/yeast/package.json create mode 100644 src/p29-arduino-server/server/package.json create mode 100644 src/p29-arduino-server/sketch.js diff --git a/.gitignore b/.gitignore index 7176cc9..77a3b0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ .DS_Store -cours-hetic-2016.zip -node_modules/ - -# Ignore course packages until they are ready ;) -p28-image-field/ -p29-arduino-server/ \ No newline at end of file +cours-hetic-2016.zip \ No newline at end of file diff --git a/src/p28-image-field/agent.js b/src/p28-image-field/agent.js new file mode 100644 index 0000000..ed87765 --- /dev/null +++ b/src/p28-image-field/agent.js @@ -0,0 +1,60 @@ +// Un fonction 'usine' fabriquant un agent. Les options d'initialisation +// sont volontairement restreintes au maximum : la fonction ne prend +// qu'un argument (optionnel), permettant de spécifier la position +// de l'agent lors de sa création. +// +// La philosophie derrière ce choix est qu'il est très facile, +// si le besoin s'en fait sentir, de modifier 'manuellement' les +// propriétés de l'objet après sa création. L'option de créer directement +// l'agent à la position souhaitée est en revanche fournie car l'édition +// manuelle de la propriété 'position' présente des risques : on pourrait +// oublier de mettre à jour la copie 'previousPosition'. + +function createAgent(position) { + + // Création du nouvel objet 'Agent' + var a = {}; + + // Initialisation + a.position = typeof position !== 'undefined' ? position : createVector(random(width), random(height)); // Si aucune position n'est fournie, initialisation avec une position aléatoire + a.previousPosition = a.position.copy(); + a.angle = random(TWO_PI); + a.stepSize = 1; + a.isPositionResetWhenOutside = true; + + // Une méthode mettant à jour de la position de l'agent en fonction de son angle actuel + a.updatePosition = function() { + a.previousPosition = a.position.copy(); + a.position.x += cos(a.angle) * a.stepSize; + a.position.y += sin(a.angle) * a.stepSize; + if (a.isPositionResetWhenOutside && a.isOutsideSketch() > 0) { + a.position = createVector(random(width), random(height)); + a.previousPosition = a.position.copy(); + } + }; + + // Une méthode permettant de vérifier si l'agent est sorti des limites de l'espace du sketch (+ marges) + // La méthode renvoie les valeurs suivantes : + // 0: l'agent n'est pas sorti des limites de l'espace du sketch + // 1: l'agent est sorti par le haut + // 2: l'agent est sorti par la droite + // 3: l'agent est sorti par le bas + // 4: l'agent est sorti par la gauche + a.isOutsideSketch = function() { + if (a.position.y < 0) { + return 1; + } else if (a.position.x > width) { + return 2; + } else if (a.position.y > height) { + return 3; + } else if (a.position.x < 0) { + return 4; + } else { + return 0; + } + }; + + // Retour de l'objet 'Agent' + return a; + +} \ No newline at end of file diff --git a/src/p28-image-field/field-image.js b/src/p28-image-field/field-image.js new file mode 100644 index 0000000..9a71396 --- /dev/null +++ b/src/p28-image-field/field-image.js @@ -0,0 +1,26 @@ +// Une fonction 'usine' fabriquant un champ de force basé sur la luminosité des pixels d'une image + +function createImageField(fieldIntensity, image) { + + // Création du nouvel objet 'Image Field' + var f = {}; + + // Initialisation + f.fieldIntensity = fieldIntensity; + f.image = image; + + // Une méthode permettant d'obtenir la valeur du champ de force à une position donnée + f.getFieldValue = function(position) { + var c = f.image.get(floor(position.x/width * image.width), floor(position.y/height * image.height)); // Obtention de la couleur de l'image à une position donnée. L'image est automatiquement ajustée aux dimensions du canvas. + return brightness(c) * f.fieldIntensity; + }; + + // Une méthode permettant d'appliquer un flou à l'image + f.applyBlur = function(level) { + f.image.filter(BLUR, level); + } + + // Retour de l'object 'Image Field' + return f; + +} \ No newline at end of file diff --git a/src/p28-image-field/img/x.jpg b/src/p28-image-field/img/x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0480118969a1d4b587a1d11e8d844bae5a9ed651 GIT binary patch literal 81704 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¬&!-tG$5kg-N#mJhzT>RC{5vatc3fCYN$F& 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

xvEgqC6z%8MgGpplgz8Tg{n(^gLD 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 BAX)$b literal 0 HcmV?d00001 diff --git a/src/p28-image-field/index.html b/src/p28-image-field/index.html new file mode 100644 index 0000000..6ea5f98 --- /dev/null +++ b/src/p28-image-field/index.html @@ -0,0 +1,14 @@ + + + + + image-field + + + + + + + + + \ No newline at end of file diff --git a/src/p28-image-field/lib/p5.min.js b/src/p28-image-field/lib/p5.min.js new file mode 100644 index 0000000..4205309 --- /dev/null +++ b/src/p28-image-field/lib/p5.min.js @@ -0,0 +1,9 @@ +/*! p5.js v0.5.4 October 01, 2016 */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.p5=a()}}(function(){var define,module,exports;return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0,"No "+b+" specified.")}var c=[],d=this;b("familyName"),b("weightName"),b("manufacturer"),b("copyright"),b("version"),a(this.unitsPerEm>0,"No unitsPerEm specified.")},d.prototype.toTables=function(){return f.fontToTable(this)},d.prototype.toBuffer=function(){for(var a=this.toTables(),b=a.encode(),c=new ArrayBuffer(b.length),d=new Uint8Array(c),e=0;eD;D+=1){var E=l.getTag(m,C),F=l.getULong(m,C+8);switch(E){case"cmap":k.tables.cmap=n.parse(m,F),k.encoding=new i.CmapEncoding(k.tables.cmap),k.encoding||(k.supported=!1);break;case"head":k.tables.head=r.parse(m,F),k.unitsPerEm=k.tables.head.unitsPerEm,b=k.tables.head.indexToLocFormat;break;case"hhea":k.tables.hhea=s.parse(m,F),k.ascender=k.tables.hhea.ascender,k.descender=k.tables.hhea.descender,k.numberOfHMetrics=k.tables.hhea.numberOfHMetrics;break;case"hmtx":c=F;break;case"maxp":k.tables.maxp=w.parse(m,F),k.numGlyphs=k.tables.maxp.numGlyphs;break;case"name":k.tables.name=x.parse(m,F),k.familyName=k.tables.name.fontFamily,k.styleName=k.tables.name.fontSubfamily;break;case"OS/2":k.tables.os2=y.parse(m,F);break;case"post":k.tables.post=z.parse(m,F),k.glyphNames=new i.GlyphNames(k.tables.post);break;case"glyf":d=F;break;case"loca":e=F;break;case"CFF ":f=F;break;case"kern":g=F;break;case"GPOS":h=F}C+=16}if(d&&e){var G=0===b,H=v.parse(m,e,k.numGlyphs,G);k.glyphs=p.parse(m,d,H,k),t.parse(m,c,k.numberOfHMetrics,k.numGlyphs,k.glyphs),i.addGlyphNames(k)}else f?(o.parse(m,f,k),i.addGlyphNames(k)):k.supported=!1;return k.supported&&(g?k.kerningPairs=u.parse(m,g):k.kerningPairs={},h&&q.parse(m,h,k)),k}function h(a,b){var c="undefined"==typeof window,d=c?e:f;d(a,function(a,c){if(a)return b(a);var d=g(c);return d.supported?b(null,d):b("Font is not supported (is this a Postscript font?)")})}var i=a("./encoding"),j=a("./font"),k=a("./glyph"),l=a("./parse"),m=a("./path"),n=a("./tables/cmap"),o=a("./tables/cff"),p=a("./tables/glyf"),q=a("./tables/gpos"),r=a("./tables/head"),s=a("./tables/hhea"),t=a("./tables/hmtx"),u=a("./tables/kern"),v=a("./tables/loca"),w=a("./tables/maxp"),x=a("./tables/name"),y=a("./tables/os2"),z=a("./tables/post");c._parse=l,c.Font=j.Font,c.Glyph=k.Glyph,c.Path=m.Path,c.parse=g,c.load=h},{"./encoding":4,"./font":5,"./glyph":6,"./parse":9,"./path":10,"./tables/cff":12,"./tables/cmap":13,"./tables/glyf":14,"./tables/gpos":15,"./tables/head":16,"./tables/hhea":17,"./tables/hmtx":18,"./tables/kern":19,"./tables/loca":20,"./tables/maxp":21,"./tables/name":22,"./tables/os2":23,"./tables/post":24,fs:1}],9:[function(a,b,c){"use strict";function d(a,b){this.data=a,this.offset=b,this.relativeOffset=0}c.getByte=function(a,b){return a.getUint8(b)},c.getCard8=c.getByte,c.getUShort=function(a,b){return a.getUint16(b,!1)},c.getCard16=c.getUShort,c.getShort=function(a,b){return a.getInt16(b,!1)},c.getULong=function(a,b){return a.getUint32(b,!1)},c.getFixed=function(a,b){var c=a.getInt16(b,!1),d=a.getUint16(b+2,!1);return c+d/65535},c.getTag=function(a,b){for(var c="",d=b;b+4>d;d+=1)c+=String.fromCharCode(a.getInt8(d));return c},c.getOffset=function(a,b,c){for(var d=0,e=0;c>e;e+=1)d<<=8,d+=a.getUint8(b+e);return d},c.getBytes=function(a,b,c){for(var d=[],e=b;c>e;e+=1)d.push(a.getUint8(e));return d},c.bytesToString=function(a){for(var b="",c=0;cf;f++)b[f]=c.getUShort(d,e),e+=2;return this.relativeOffset+=2*a,b},d.prototype.parseString=function(a){var b=this.data,c=this.offset+this.relativeOffset,d="";this.relativeOffset+=a;for(var e=0;a>e;e++)d+=String.fromCharCode(b.getUint8(c+e));return d},d.prototype.parseTag=function(){return this.parseString(4)},d.prototype.parseLongDateTime=function(){var a=c.getULong(this.data,this.offset+this.relativeOffset+4);return this.relativeOffset+=8,a},d.prototype.parseFixed=function(){var a=c.getULong(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,a/65536},d.prototype.parseVersion=function(){var a=c.getUShort(this.data,this.offset+this.relativeOffset),b=c.getUShort(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,a+b/4096/10},d.prototype.skip=function(a,b){void 0===b&&(b=1),this.relativeOffset+=e[a]*b},c.Parser=d},{}],10:[function(a,b,c){"use strict";function d(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}d.prototype.moveTo=function(a,b){this.commands.push({type:"M",x:a,y:b})},d.prototype.lineTo=function(a,b){this.commands.push({type:"L",x:a,y:b})},d.prototype.curveTo=d.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.commands.push({type:"C",x1:a,y1:b,x2:c,y2:d,x:e,y:f})},d.prototype.quadTo=d.prototype.quadraticCurveTo=function(a,b,c,d){this.commands.push({type:"Q",x1:a,y1:b,x:c,y:d})},d.prototype.close=d.prototype.closePath=function(){this.commands.push({type:"Z"})},d.prototype.extend=function(a){a.commands&&(a=a.commands),Array.prototype.push.apply(this.commands,a)},d.prototype.draw=function(a){a.beginPath();for(var b=0;b=0&&c>0&&(a+=" "),a+=b(d)}return a}a=void 0!==a?a:2;for(var d="",e=0;ed;d+=1)g.push(J.getOffset(a,k,j)),k+=j;f=e+g[i]}else f=b+2;for(d=0;d>4,g=15&e;if(f===c)break;if(b+=d[f],g===c)break;b+=d[g]}return parseFloat(b)}function g(a,b){var c,d,e,g;if(28===b)return c=a.parseByte(),d=a.parseByte(),c<<8|d;if(29===b)return c=a.parseByte(),d=a.parseByte(),e=a.parseByte(),g=a.parseByte(),c<<24|d<<16|e<<8|g;if(30===b)return f(a);if(b>=32&&246>=b)return b-139;if(b>=247&&250>=b)return c=a.parseByte(),256*(b-247)+c+108;if(b>=251&&254>=b)return c=a.parseByte(),256*-(b-251)-c-108;throw new Error("Invalid b0 "+b)}function h(a){for(var b={},c=0;c=i?(12===i&&(i=1200+d.parseByte()),e.push([i,f]),f=[]):f.push(g(d,i))}return h(e)}function j(a,b){return b=390>=b?H.cffStandardStrings[b]:a[b-391]}function k(a,b,c){for(var d={},e=0;ee;e+=1)f=h.parseSID(),i.push(j(d,f));else if(1===k)for(;i.length<=c;)for(f=h.parseSID(),g=h.parseCard8(),e=0;g>=e;e+=1)i.push(j(d,f)),f+=1;else{if(2!==k)throw new Error("Unknown charset format "+k);for(;i.length<=c;)for(f=h.parseSID(),g=h.parseCard16(),e=0;g>=e;e+=1)i.push(j(d,f)),f+=1}return i}function p(a,b,c){var d,e,f={},g=new J.Parser(a,b),h=g.parseCard8();if(0===h){var i=g.parseCard8();for(d=0;i>d;d+=1)e=g.parseCard8(),f[e]=d}else{if(1!==h)throw new Error("Unknown encoding format "+h);var j=g.parseCard8();for(e=1,d=0;j>d;d+=1)for(var k=g.parseCard8(),l=g.parseCard8(),m=k;k+l>=m;m+=1)f[m]=e,e+=1}return new H.CffEncoding(f,c)}function q(a,b,c){function d(a,b){p&&k.closePath(),k.moveTo(a,b),p=!0}function e(){ +var b;b=l.length%2!==0,b&&!n&&(o=l.shift()+a.nominalWidthX),m+=l.length>>1,l.length=0,n=!0}function f(c){for(var s,t,u,v,w,x,y,z,A,B,C,D,E=0;E1&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),r+=l.pop(),d(q,r);break;case 5:for(;l.length>0;)q+=l.shift(),r+=l.shift(),k.lineTo(q,r);break;case 6:for(;l.length>0&&(q+=l.shift(),k.lineTo(q,r),0!==l.length);)r+=l.shift(),k.lineTo(q,r);break;case 7:for(;l.length>0&&(r+=l.shift(),k.lineTo(q,r),0!==l.length);)q+=l.shift(),k.lineTo(q,r);break;case 8:for(;l.length>0;)g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 10:w=l.pop()+a.subrsBias,x=a.subrs[w],x&&f(x);break;case 11:return;case 12:switch(F=c[E],E+=1,F){case 35:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j+l.shift(),A=y+l.shift(),B=z+l.shift(),C=A+l.shift(),D=B+l.shift(),q=C+l.shift(),r=D+l.shift(),l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 34:g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j,A=y+l.shift(),B=j,C=A+l.shift(),D=r,q=C+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 36:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j,A=y+l.shift(),B=j,C=A+l.shift(),D=B+l.shift(),q=C+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 37:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j+l.shift(),A=y+l.shift(),B=z+l.shift(),C=A+l.shift(),D=B+l.shift(),Math.abs(C-q)>Math.abs(D-r)?q=C+l.shift():r=D+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;default:console.log("Glyph "+b.index+": unknown operator 1200"+F),l.length=0}break;case 14:l.length>0&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),p&&(k.closePath(),p=!1);break;case 18:e();break;case 19:case 20:e(),E+=m+7>>3;break;case 21:l.length>2&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),r+=l.pop(),q+=l.pop(),d(q,r);break;case 22:l.length>1&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),q+=l.pop(),d(q,r);break;case 23:e();break;case 24:for(;l.length>2;)g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);q+=l.shift(),r+=l.shift(),k.lineTo(q,r);break;case 25:for(;l.length>6;)q+=l.shift(),r+=l.shift(),k.lineTo(q,r);g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 26:for(l.length%2&&(q+=l.shift());l.length>0;)g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i,r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 27:for(l.length%2&&(r+=l.shift());l.length>0;)g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j,k.curveTo(g,h,i,j,q,r);break;case 28:s=c[E],t=c[E+1],l.push((s<<24|t<<16)>>16),E+=2;break;case 29:w=l.pop()+a.gsubrsBias,x=a.gsubrs[w],x&&f(x);break;case 30:for(;l.length>0&&(g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r),0!==l.length);)g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),r=j+l.shift(),q=i+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r);break;case 31:for(;l.length>0&&(g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),r=j+l.shift(),q=i+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r),0!==l.length);)g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r);break;default:32>F?console.log("Glyph "+b.index+": unknown operator "+F):247>F?l.push(F-139):251>F?(s=c[E],E+=1,l.push(256*(F-247)+s+108)):255>F?(s=c[E],E+=1,l.push(256*-(F-251)-s-108)):(s=c[E],t=c[E+1],u=c[E+2],v=c[E+3],E+=4,l.push((s<<24|t<<16|u<<8|v)/65536))}}}var g,h,i,j,k=new K.Path,l=[],m=0,n=!1,o=a.defaultWidthX,p=!1,q=0,r=0;return f(c),b.advanceWidth=o,k}function r(a){var b;return b=a.length<1240?107:a.length<33900?1131:32768}function s(a,b,c){c.tables.cff={};var d=l(a,b),f=e(a,d.endOffset,J.bytesToString),g=e(a,f.endOffset),h=e(a,g.endOffset,J.bytesToString),i=e(a,h.endOffset);c.gsubrs=i.objects,c.gsubrsBias=r(c.gsubrs);var j=new DataView(new Uint8Array(g.objects[0]).buffer),k=m(j,h.objects);c.tables.cff.topDict=k;var s=b+k["private"][1],t=n(a,s,k["private"][0],h.objects);if(c.defaultWidthX=t.defaultWidthX,c.nominalWidthX=t.nominalWidthX,0!==t.subrs){var u=s+t.subrs,v=e(a,u);c.subrs=v.objects,c.subrsBias=r(c.subrs)}else c.subrs=[],c.subrsBias=0;var w=e(a,b+k.charStrings);c.nGlyphs=w.objects.length;var x=o(a,b+k.charset,c.nGlyphs,h.objects);0===k.encoding?c.cffEncoding=new H.CffEncoding(H.cffStandardEncoding,x):1===k.encoding?c.cffEncoding=new H.CffEncoding(H.cffExpertEncoding,x):c.cffEncoding=p(a,b+k.encoding,x),c.encoding=c.encoding||c.cffEncoding,c.glyphs=new I.GlyphSet(c);for(var y=0;y=0&&(c=d),d=b.indexOf(a),d>=0?c=d+H.cffStandardStrings.length:(c=H.cffStandardStrings.length+b.length,b.push(a)),c}function u(){return new L.Table("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function v(a){var b=new L.Table("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);b.names=[];for(var c=0;c>1,j.skip("uShort",3),d.glyphIndexMap={};var l=new i.Parser(a,b+e+14),m=new i.Parser(a,b+e+16+2*k),n=new i.Parser(a,b+e+16+4*k),o=new i.Parser(a,b+e+16+6*k),p=b+e+16+8*k;for(c=0;k-1>c;c+=1)for(var q,r=l.parseUShort(),s=m.parseUShort(),t=n.parseShort(),u=o.parseUShort(),v=s;r>=v;v+=1)0!==u?(p=o.offset+o.relativeOffset-2,p+=u,p+=2*(v-s),q=i.getUShort(a,p),0!==q&&(q=q+t&65535)):q=v+t&65535,d.glyphIndexMap[v]=q;return d}function e(a,b,c){a.segments.push({end:b,start:b,delta:-(b-c),offset:0})}function f(a){a.segments.push({end:65535,start:65535,delta:1,offset:0})}function g(a){var b,c=new j.Table("cmap",[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:1},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:12},{name:"format",type:"USHORT",value:4},{name:"length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);for(c.segments=[],b=0;bb;b+=1){var o=c.segments[b];i=i.concat({name:"end_"+b,type:"USHORT",value:o.end}),k=k.concat({name:"start_"+b,type:"USHORT",value:o.start}),l=l.concat({name:"idDelta_"+b,type:"SHORT",value:o.delta}),m=m.concat({name:"idRangeOffset_"+b,type:"USHORT",value:o.offset}),void 0!==o.glyphId&&(n=n.concat({name:"glyph_"+b,type:"USHORT",value:o.glyphId}))}return c.fields=c.fields.concat(i),c.fields.push({name:"reservedPad",type:"USHORT",value:0}),c.fields=c.fields.concat(k),c.fields=c.fields.concat(l),c.fields=c.fields.concat(m),c.fields=c.fields.concat(n),c.length=14+2*i.length+2+2*k.length+2*l.length+2*m.length+2*n.length,c}var h=a("../check"),i=a("../parse"),j=a("../table");c.parse=d,c.make=g},{"../check":2,"../parse":9,"../table":11}],14:[function(a,b,c){"use strict";function d(a,b,c,d,e){var f;return(b&d)>0?(f=a.parseByte(),0===(b&e)&&(f=-f),f=c+f):f=(b&e)>0?c:c+a.parseShort(),f}function e(a,b,c){var e=new m.Parser(b,c);a.numberOfContours=e.parseShort(),a.xMin=e.parseShort(),a.yMin=e.parseShort(),a.xMax=e.parseShort(),a.yMax=e.parseShort();var f,g;if(a.numberOfContours>0){var h,i=a.endPointIndices=[];for(h=0;hh;h+=1)if(g=e.parseByte(),f.push(g),(8&g)>0)for(var l=e.parseByte(),n=0;l>n;n+=1)f.push(g),h+=1;if(k.argument(f.length===j,"Bad flags."),i.length>0){var o,p=[];if(j>0){for(h=0;j>h;h+=1)g=f[h],o={},o.onCurve=!!(1&g),o.lastPointOfContour=i.indexOf(h)>=0,p.push(o);var q=0;for(h=0;j>h;h+=1)g=f[h],o=p[h],o.x=d(e,g,q,2,16),q=o.x;var r=0;for(h=0;j>h;h+=1)g=f[h],o=p[h],o.y=d(e,g,r,4,32),r=o.y}a.points=p}else a.points=[]}else if(0===a.numberOfContours)a.points=[];else{a.isComposite=!0,a.points=[],a.components=[];for(var s=!0;s;){f=e.parseUShort();var t={glyphIndex:e.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(1&f)>0?(t.dx=e.parseShort(),t.dy=e.parseShort()):(t.dx=e.parseChar(),t.dy=e.parseChar()),(8&f)>0?t.xScale=t.yScale=e.parseF2Dot14():(64&f)>0?(t.xScale=e.parseF2Dot14(),t.yScale=e.parseF2Dot14()):(128&f)>0&&(t.xScale=e.parseF2Dot14(),t.scale01=e.parseF2Dot14(),t.scale10=e.parseF2Dot14(),t.yScale=e.parseF2Dot14()),a.components.push(t),s=!!(32&f)}}}function f(a,b){for(var c=[],d=0;df;f++)e[c.parseTag()]={offset:c.parseUShort()};return e}function e(a,b){var c=new k.Parser(a,b),d=c.parseUShort(),e=c.parseUShort();if(1===d)return c.parseUShortList(e);if(2===d){for(var f=[];e--;)for(var g=c.parseUShort(),h=c.parseUShort(),i=c.parseUShort(),j=g;h>=j;j++)f[i++]=j;return f}}function f(a,b){var c=new k.Parser(a,b),d=c.parseUShort();if(1===d){var e=c.parseUShort(),f=c.parseUShort(),g=c.parseUShortList(f);return function(a){return g[a-e]||0}}if(2===d){for(var h=c.parseUShort(),i=[],j=[],l=[],m=0;h>m;m++)i[m]=c.parseUShort(),j[m]=c.parseUShort(),l[m]=c.parseUShort();return function(a){for(var b=0,c=i.length-1;c>b;){var d=b+c+1>>1;ar;r++){var s=q[r],t=n[s];if(!t){t={},g.relativeOffset=s;for(var u=g.parseUShort();u--;){var v=g.parseUShort();l&&(c=g.parseShort()),m&&(d=g.parseShort()),t[v]=c}}p[j[r]]=t}return function(a,b){var c=p[a];return c?c[b]:void 0}}if(2===h){for(var w=g.parseUShort(),x=g.parseUShort(),y=g.parseUShort(),z=g.parseUShort(),A=f(a,b+w),B=f(a,b+x),C=[],D=0;y>D;D++)for(var E=C[D]=[],F=0;z>F;F++)l&&(c=g.parseShort()),m&&(d=g.parseShort()),E[F]=c;var G={};for(D=0;Dm;m++)l.push(g(a,b+i[m]));j.getKerningValue=function(a,b){for(var c=l.length;c--;){var d=l[c](a,b);if(void 0!==d)return d}return 0}}return j}function i(a,b,c){var e=new k.Parser(a,b),f=e.parseFixed();j.argument(1===f,"Unsupported GPOS table version."),d(a,b+e.parseUShort()),d(a,b+e.parseUShort());var g=e.parseUShort();e.relativeOffset=g;for(var i=e.parseUShort(),l=e.parseOffset16List(i),m=b+g,n=0;i>n;n++){var o=h(a,m+l[n]);2!==o.lookupType||c.getGposKerningValue||(c.getGposKerningValue=o.getKerningValue)}}var j=a("../check"),k=a("../parse");c.parse=i},{"../check":2,"../parse":9}],16:[function(a,b,c){"use strict";function d(a,b){var c={},d=new g.Parser(a,b);return c.version=d.parseVersion(),c.fontRevision=Math.round(1e3*d.parseFixed())/1e3,c.checkSumAdjustment=d.parseULong(),c.magicNumber=d.parseULong(),f.argument(1594834165===c.magicNumber,"Font header has wrong magic number."),c.flags=d.parseUShort(),c.unitsPerEm=d.parseUShort(),c.created=d.parseLongDateTime(),c.modified=d.parseLongDateTime(),c.xMin=d.parseShort(),c.yMin=d.parseShort(),c.xMax=d.parseShort(),c.yMax=d.parseShort(),c.macStyle=d.parseUShort(),c.lowestRecPPEM=d.parseUShort(),c.fontDirectionHint=d.parseShort(),c.indexToLocFormat=d.parseShort(),c.glyphDataFormat=d.parseShort(),c}function e(a){return new h.Table("head",[{name:"version",type:"FIXED",value:65536},{name:"fontRevision",type:"FIXED",value:65536},{name:"checkSumAdjustment",type:"ULONG",value:0},{name:"magicNumber",type:"ULONG",value:1594834165},{name:"flags",type:"USHORT",value:0},{name:"unitsPerEm",type:"USHORT",value:1e3},{name:"created",type:"LONGDATETIME",value:0},{name:"modified",type:"LONGDATETIME",value:0},{name:"xMin",type:"SHORT",value:0},{name:"yMin",type:"SHORT",value:0},{name:"xMax",type:"SHORT",value:0},{name:"yMax",type:"SHORT",value:0},{name:"macStyle",type:"USHORT",value:0},{name:"lowestRecPPEM",type:"USHORT",value:0},{name:"fontDirectionHint",type:"SHORT",value:2},{name:"indexToLocFormat",type:"SHORT",value:0},{name:"glyphDataFormat",type:"SHORT",value:0}],a)}var f=a("../check"),g=a("../parse"),h=a("../table");c.parse=d,c.make=e},{"../check":2,"../parse":9,"../table":11}],17:[function(a,b,c){"use strict";function d(a,b){var c={},d=new f.Parser(a,b);return c.version=d.parseVersion(),c.ascender=d.parseShort(),c.descender=d.parseShort(),c.lineGap=d.parseShort(),c.advanceWidthMax=d.parseUShort(),c.minLeftSideBearing=d.parseShort(),c.minRightSideBearing=d.parseShort(),c.xMaxExtent=d.parseShort(),c.caretSlopeRise=d.parseShort(),c.caretSlopeRun=d.parseShort(),c.caretOffset=d.parseShort(),d.relativeOffset+=8,c.metricDataFormat=d.parseShort(),c.numberOfHMetrics=d.parseUShort(),c}function e(a){return new g.Table("hhea",[{name:"version",type:"FIXED",value:65536},{name:"ascender",type:"FWORD",value:0},{name:"descender",type:"FWORD",value:0},{name:"lineGap",type:"FWORD",value:0},{name:"advanceWidthMax",type:"UFWORD",value:0},{name:"minLeftSideBearing",type:"FWORD",value:0},{name:"minRightSideBearing",type:"FWORD",value:0},{name:"xMaxExtent",type:"FWORD",value:0},{name:"caretSlopeRise",type:"SHORT",value:1},{name:"caretSlopeRun",type:"SHORT",value:0},{name:"caretOffset",type:"SHORT",value:0},{name:"reserved1",type:"SHORT",value:0},{name:"reserved2",type:"SHORT",value:0},{name:"reserved3",type:"SHORT",value:0},{name:"reserved4",type:"SHORT",value:0},{name:"metricDataFormat",type:"SHORT",value:0},{name:"numberOfHMetrics",type:"USHORT",value:0}],a)}var f=a("../parse"),g=a("../table");c.parse=d,c.make=e},{"../parse":9,"../table":11}],18:[function(a,b,c){"use strict";function d(a,b,c,d,e){for(var g,h,i=new f.Parser(a,b),j=0;d>j;j+=1){c>j&&(g=i.parseUShort(),h=i.parseShort());var k=e.get(j);k.advanceWidth=g,k.leftSideBearing=h}}function e(a){for(var b=new g.Table("hmtx",[]),c=0;cj;j+=1){var k=d.parseUShort(),l=d.parseUShort(),m=d.parseShort();c[k+","+l]=m}return c}var e=a("../check"),f=a("../parse");c.parse=d},{"../check":2,"../parse":9}],20:[function(a,b,c){"use strict";function d(a,b,c,d){for(var f=new e.Parser(a,b),g=d?f.parseUShort:f.parseULong,h=[],i=0;c+1>i;i+=1){var j=g.call(f);d&&(j*=2),h.push(j)}return h}var e=a("../parse");c.parse=d},{"../parse":9}],21:[function(a,b,c){"use strict";function d(a,b){var c={},d=new f.Parser(a,b);return c.version=d.parseVersion(),c.numGlyphs=d.parseUShort(),1===c.version&&(c.maxPoints=d.parseUShort(),c.maxContours=d.parseUShort(),c.maxCompositePoints=d.parseUShort(),c.maxCompositeContours=d.parseUShort(),c.maxZones=d.parseUShort(),c.maxTwilightPoints=d.parseUShort(),c.maxStorage=d.parseUShort(),c.maxFunctionDefs=d.parseUShort(),c.maxInstructionDefs=d.parseUShort(),c.maxStackElements=d.parseUShort(),c.maxSizeOfInstructions=d.parseUShort(),c.maxComponentElements=d.parseUShort(),c.maxComponentDepth=d.parseUShort()),c}function e(a){return new g.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:a}])}var f=a("../parse"),g=a("../table");c.parse=d,c.make=e},{"../parse":9,"../table":11}],22:[function(a,b,c){"use strict";function d(a,b){var c={},d=new j.Parser(a,b);c.format=d.parseUShort();for(var e=d.parseUShort(),f=d.offset+d.parseUShort(),g=0,h=0;e>h;h++){var i=d.parseUShort(),k=d.parseUShort(),m=d.parseUShort(),n=d.parseUShort(),o=l[n],p=d.parseUShort(),q=d.parseUShort();if(3===i&&1===k&&1033===m){for(var r=[],s=p/2,t=0;s>t;t++,q+=2)r[t]=j.getShort(a,f+q);var u=String.fromCharCode.apply(null,r);o?c[o]=u:(g++,c["unknown"+g]=u)}}return 1===c.format&&(c.langTagCount=d.parseUShort()),c}function e(a,b,c,d,e,f){return new k.Table("NameRecord",[{name:"platformID",type:"USHORT",value:a},{name:"encodingID",type:"USHORT",value:b},{name:"languageID",type:"USHORT",value:c},{name:"nameID",type:"USHORT",value:d},{name:"length",type:"USHORT",value:e},{name:"offset",type:"USHORT",value:f}])}function f(a,b,c,d){var f=i.STRING(c);return a.records.push(e(1,0,0,b,f.length,d)),a.strings.push(f),d+=f.length}function g(a,b,c,d){var f=i.UTF16(c);return a.records.push(e(3,1,1033,b,f.length,d)),a.strings.push(f),d+=f.length}function h(a){var b=new k.Table("name",[{name:"format",type:"USHORT",value:0},{name:"count",type:"USHORT",value:0},{name:"stringOffset",type:"USHORT",value:0}]);b.records=[],b.strings=[];var c,d,e=0;for(c=0;c=c.begin&&ae;e++)c.panose[e]=d.parseByte();return c.ulUnicodeRange1=d.parseULong(),c.ulUnicodeRange2=d.parseULong(),c.ulUnicodeRange3=d.parseULong(),c.ulUnicodeRange4=d.parseULong(),c.achVendID=String.fromCharCode(d.parseByte(),d.parseByte(),d.parseByte(),d.parseByte()),c.fsSelection=d.parseUShort(),c.usFirstCharIndex=d.parseUShort(),c.usLastCharIndex=d.parseUShort(),c.sTypoAscender=d.parseShort(),c.sTypoDescender=d.parseShort(),c.sTypoLineGap=d.parseShort(),c.usWinAscent=d.parseUShort(),c.usWinDescent=d.parseUShort(),c.version>=1&&(c.ulCodePageRange1=d.parseULong(),c.ulCodePageRange2=d.parseULong()),c.version>=2&&(c.sxHeight=d.parseShort(),c.sCapHeight=d.parseShort(),c.usDefaultChar=d.parseUShort(),c.usBreakChar=d.parseUShort(),c.usMaxContent=d.parseUShort()),c}function f(a){return new h.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],a)}var g=a("../parse"),h=a("../table"),i=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584, +end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];c.unicodeRanges=i,c.getUnicodeRange=d,c.parse=e,c.make=f},{"../parse":9,"../table":11}],24:[function(a,b,c){"use strict";function d(a,b){var c,d={},e=new g.Parser(a,b);switch(d.version=e.parseVersion(),d.italicAngle=e.parseFixed(),d.underlinePosition=e.parseShort(),d.underlineThickness=e.parseShort(),d.isFixedPitch=e.parseULong(),d.minMemType42=e.parseULong(),d.maxMemType42=e.parseULong(),d.minMemType1=e.parseULong(),d.maxMemType1=e.parseULong(),d.version){case 1:d.names=f.standardNames.slice();break;case 2:for(d.numberOfGlyphs=e.parseUShort(),d.glyphNameIndex=new Array(d.numberOfGlyphs),c=0;c=f.standardNames.length){var h=e.parseChar();d.names.push(e.parseString(h))}break;case 2.5:for(d.numberOfGlyphs=e.parseUShort(),d.offset=new Array(d.numberOfGlyphs),c=0;cb.value.tag?1:-1}),b.fields=b.fields.concat(g),b.fields=b.fields.concat(h),b}function h(a,b,c){for(var d=0;d0){var f=a.glyphs.get(e);return f.getMetrics()}}return c}function i(a){for(var b=0,c=0;cD||null===b)&&(b=D),D>w&&(w=D);var E=t.getUnicodeRange(D);if(32>E)x|=1<E)y|=1<E)z|=1<E))throw new Error("Unicode ranges bits > 123 are reserved for internal usage");A|=1<=0&&255>=a,"Byte value should be between 0 and 255."),[a]},j.BYTE=d(1),i.CHAR=function(a){return[a.charCodeAt(0)]},j.BYTE=d(1),i.CHARARRAY=function(a){for(var b=[],c=0;c>8&255,255&a]},j.USHORT=d(2),i.SHORT=function(a){return a>=f&&(a=-(2*f-a)),[a>>8&255,255&a]},j.SHORT=d(2),i.UINT24=function(a){return[a>>16&255,a>>8&255,255&a]},j.UINT24=d(3),i.ULONG=function(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]},j.ULONG=d(4),i.LONG=function(a){return a>=g&&(a=-(2*g-a)),[a>>24&255,a>>16&255,a>>8&255,255&a]},j.LONG=d(4),i.FIXED=i.ULONG,j.FIXED=j.ULONG,i.FWORD=i.SHORT,j.FWORD=j.SHORT,i.UFWORD=i.USHORT,j.UFWORD=j.USHORT,i.LONGDATETIME=function(){return[0,0,0,0,0,0,0,0]},j.LONGDATETIME=d(8),i.TAG=function(a){return e.argument(4===a.length,"Tag should be exactly 4 ASCII characters."),[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)]},j.TAG=d(4),i.Card8=i.BYTE,j.Card8=j.BYTE,i.Card16=i.USHORT,j.Card16=j.USHORT,i.OffSize=i.BYTE,j.OffSize=j.BYTE,i.SID=i.USHORT,j.SID=j.USHORT,i.NUMBER=function(a){return a>=-107&&107>=a?[a+139]:a>=108&&1131>=a?(a-=108,[(a>>8)+247,255&a]):a>=-1131&&-108>=a?(a=-a-108,[(a>>8)+251,255&a]):a>=-32768&&32767>=a?i.NUMBER16(a):i.NUMBER32(a)},j.NUMBER=function(a){return i.NUMBER(a).length},i.NUMBER16=function(a){return[28,a>>8&255,255&a]},j.NUMBER16=d(2),i.NUMBER32=function(a){return[29,a>>24&255,a>>16&255,a>>8&255,255&a]},j.NUMBER32=d(4),i.REAL=function(a){var b=a.toString(),c=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(b);if(c){var d=parseFloat("1e"+((c[2]?+c[2]:0)+c[1].length));b=(Math.round(a*d)/d).toString()}var e,f,g="";for(e=0,f=b.length;f>e;e+=1){var h=b[e];g+="e"===h?"-"===b[++e]?"c":"b":"."===h?"a":"-"===h?"e":h}g+=1&g.length?"f":"ff";var i=[30];for(e=0,f=g.length;f>e;e+=2)i.push(parseInt(g.substr(e,2),16));return i},j.REAL=function(a){return i.REAL(a).length},i.NAME=i.CHARARRAY,j.NAME=j.CHARARRAY,i.STRING=i.CHARARRAY,j.STRING=j.CHARARRAY,i.UTF16=function(a){for(var b=[],c=0;ce;e+=1){var f=parseInt(c[e],0),g=a[f];b=b.concat(i.OPERAND(g.value,g.type)),b=b.concat(i.OPERATOR(f))}return b},j.DICT=function(a){return i.DICT(a).length},i.OPERATOR=function(a){return 1200>a?[a]:[12,a-1200]},i.OPERAND=function(a,b){var c=[];if(Array.isArray(b))for(var d=0;dd;d+=1){var e=a[d];b=b.concat(i[e.type](e.value))}return k&&k.set(a,b),b},j.CHARSTRING=function(a){return i.CHARSTRING(a).length},i.OBJECT=function(a){var b=i[a.type];return e.argument(void 0!==b,"No encoding function for type "+a.type),b(a.value)},i.TABLE=function(a){for(var b=[],c=a.fields.length,d=0;c>d;d+=1){var f=a.fields[d],g=i[f.type];e.argument(void 0!==g,"No encoding function for field type "+f.type);var h=a[f.name];void 0===h&&(h=f.value);var j=g(h);b=b.concat(j)}return b},i.LITERAL=function(a){return a},j.LITERAL=function(a){return a.length},c.decode=h,c.encode=i,c.sizeOf=j},{"./check":2}],27:[function(_dereq_,module,exports){!function(a,b,c){"undefined"!=typeof module&&module.exports?module.exports=c():"function"==typeof define&&define.amd?define(c):b[a]=c()}("reqwest",this,function(){function succeed(a){var b=protocolRe.exec(a.url);return b=b&&b[1]||window.location.protocol,httpsRe.test(b)?twoHundo.test(a.request.status):!!a.request.response}function handleReadyState(a,b,c){return function(){return a._aborted?c(a.request):a._timedOut?c(a.request,"Request is aborted: timeout"):void(a.request&&4==a.request[readyState]&&(a.request.onreadystatechange=noop,succeed(a)?b(a.request):c(a.request)))}}function setHeaders(a,b){var c,d=b.headers||{};d.Accept=d.Accept||defaultHeaders.accept[b.type]||defaultHeaders.accept["*"];var e="function"==typeof FormData&&b.data instanceof FormData;b.crossOrigin||d[requestedWith]||(d[requestedWith]=defaultHeaders.requestedWith),d[contentType]||e||(d[contentType]=b.contentType||defaultHeaders.contentType);for(c in d)d.hasOwnProperty(c)&&"setRequestHeader"in a&&a.setRequestHeader(c,d[c])}function setCredentials(a,b){"undefined"!=typeof b.withCredentials&&"undefined"!=typeof a.withCredentials&&(a.withCredentials=!!b.withCredentials)}function generalCallback(a){lastValue=a}function urlappend(a,b){return a+(/\?/.test(a)?"&":"?")+b}function handleJsonp(a,b,c,d){var e=uniqid++,f=a.jsonpCallback||"callback",g=a.jsonpCallbackName||reqwest.getcallbackPrefix(e),h=new RegExp("((^|\\?|&)"+f+")=([^&]+)"),i=d.match(h),j=doc.createElement("script"),k=0,l=-1!==navigator.userAgent.indexOf("MSIE 10.0");return i?"?"===i[3]?d=d.replace(h,"$1="+g):g=i[3]:d=urlappend(d,f+"="+g),win[g]=generalCallback,j.type="text/javascript",j.src=d,j.async=!0,"undefined"==typeof j.onreadystatechange||l||(j.htmlFor=j.id="_reqwest_"+e),j.onload=j.onreadystatechange=function(){return j[readyState]&&"complete"!==j[readyState]&&"loaded"!==j[readyState]||k?!1:(j.onload=j.onreadystatechange=null,j.onclick&&j.onclick(),b(lastValue),lastValue=void 0,head.removeChild(j),void(k=1))},head.appendChild(j),{abort:function(){j.onload=j.onreadystatechange=null,c({},"Request is aborted: timeout",{}),lastValue=void 0,head.removeChild(j),k=1}}}function getRequest(a,b){var c,d=this.o,e=(d.method||"GET").toUpperCase(),f="string"==typeof d?d:d.url,g=d.processData!==!1&&d.data&&"string"!=typeof d.data?reqwest.toQueryString(d.data):d.data||null,h=!1;return"jsonp"!=d.type&&"GET"!=e||!g||(f=urlappend(f,g),g=null),"jsonp"==d.type?handleJsonp(d,a,b,f):(c=d.xhr&&d.xhr(d)||xhr(d),c.open(e,f,d.async===!1?!1:!0),setHeaders(c,d),setCredentials(c,d),win[xDomainRequest]&&c instanceof win[xDomainRequest]?(c.onload=a,c.onerror=b,c.onprogress=function(){},h=!0):c.onreadystatechange=handleReadyState(this,a,b),d.before&&d.before(c),h?setTimeout(function(){c.send(g)},200):c.send(g),c)}function Reqwest(a,b){this.o=a,this.fn=b,init.apply(this,arguments)}function setType(a){return a.match("json")?"json":a.match("javascript")?"js":a.match("text")?"html":a.match("xml")?"xml":void 0}function init(o,fn){function complete(a){for(o.timeout&&clearTimeout(self.timeout),self.timeout=null;self._completeHandlers.length>0;)self._completeHandlers.shift()(a)}function success(resp){var type=o.type||resp&&setType(resp.getResponseHeader("Content-Type"));resp="jsonp"!==type?self.request:resp;var filteredResponse=globalSetupOptions.dataFilter(resp.responseText,type),r=filteredResponse;try{resp.responseText=r}catch(e){}if(r)switch(type){case"json":try{resp=win.JSON?win.JSON.parse(r):eval("("+r+")")}catch(err){return error(resp,"Could not parse JSON in response",err)}break;case"js":resp=eval(r);break;case"html":resp=r;break;case"xml":resp=resp.responseXML&&resp.responseXML.parseError&&resp.responseXML.parseError.errorCode&&resp.responseXML.parseError.reason?null:resp.responseXML}for(self._responseArgs.resp=resp,self._fulfilled=!0,fn(resp),self._successHandler(resp);self._fulfillmentHandlers.length>0;)resp=self._fulfillmentHandlers.shift()(resp);complete(resp)}function timedOut(){self._timedOut=!0,self.request.abort()}function error(a,b,c){for(a=self.request,self._responseArgs.resp=a,self._responseArgs.msg=b,self._responseArgs.t=c,self._erred=!0;self._errorHandlers.length>0;)self._errorHandlers.shift()(a,b,c);complete(a)}this.url="string"==typeof o?o:o.url,this.timeout=null,this._fulfilled=!1,this._successHandler=function(){},this._fulfillmentHandlers=[],this._errorHandlers=[],this._completeHandlers=[],this._erred=!1,this._responseArgs={};var self=this;fn=fn||function(){},o.timeout&&(this.timeout=setTimeout(function(){timedOut()},o.timeout)),o.success&&(this._successHandler=function(){o.success.apply(o,arguments)}),o.error&&this._errorHandlers.push(function(){o.error.apply(o,arguments)}),o.complete&&this._completeHandlers.push(function(){o.complete.apply(o,arguments)}),this.request=getRequest.call(this,success,error)}function reqwest(a,b){return new Reqwest(a,b)}function normalize(a){return a?a.replace(/\r?\n/g,"\r\n"):""}function serial(a,b){var c,d,e,f,g=a.name,h=a.tagName.toLowerCase(),i=function(a){a&&!a.disabled&&b(g,normalize(a.attributes.value&&a.attributes.value.specified?a.value:a.text))};if(!a.disabled&&g)switch(h){case"input":/reset|button|image|file/i.test(a.type)||(c=/checkbox/i.test(a.type),d=/radio/i.test(a.type),e=a.value,(!(c||d)||a.checked)&&b(g,normalize(c&&""===e?"on":e)));break;case"textarea":b(g,normalize(a.value));break;case"select":if("select-one"===a.type.toLowerCase())i(a.selectedIndex>=0?a.options[a.selectedIndex]:null);else for(f=0;a.length&&fe?c/=2-c:c=c*d/(2-2*e)),[b,c,e,a[3]]},d.ColorConversion._hsbaToRGBA=function(a){var b=6*a[0],c=a[1],d=a[2],e=[];if(0===c)e=[d,d,d,a[3]];else{var f,g,h,i=Math.floor(b),j=d*(1-c),k=d*(1-c*(b-i)),l=d*(1-c*(1+i-b));1===i?(f=k,g=d,h=j):2===i?(f=j,g=d,h=l):3===i?(f=j,g=k,h=d):4===i?(f=l,g=j,h=d):5===i?(f=d,g=j,h=k):(f=d,g=l,h=j),e=[f,g,h,a[3]]}return e},d.ColorConversion._hslaToHSBA=function(a){var b,c=a[0],d=a[1],e=a[2];return b=.5>e?(1+d)*e:e+d-e*d,d=2*(b-e)/b,[c,d,b,a[3]]},d.ColorConversion._hslaToRGBA=function(a){var b=6*a[0],c=a[1],d=a[2],e=[];if(0===c)e=[d,d,d,a[3]];else{var f;f=.5>d?(1+c)*d:d+c-d*c;var g=2*d-f,h=function(a,b,c){return 0>a?a+=6:a>=6&&(a-=6),1>a?b+(c-b)*a:3>a?c:4>a?b+(c-b)*(4-a):b};e=[h(b+2,g,f),h(b,g,f),h(b-2,g,f),a[3]]}return e},d.ColorConversion._rgbaToHSBA=function(a){var b,c,d=a[0],e=a[1],f=a[2],g=Math.max(d,e,f),h=g-Math.min(d,e,f);return 0===h?(b=0,c=0):(c=h/g,d===g?b=(e-f)/h:e===g?b=2+(f-d)/h:f===g&&(b=4+(d-e)/h),0>b?b+=6:b>=6&&(b-=6)),[b/6,c,g,a[3]]},d.ColorConversion._rgbaToHSLA=function(a){var b,c,d=a[0],e=a[1],f=a[2],g=Math.max(d,e,f),h=Math.min(d,e,f),i=g+h,j=g-h;return 0===j?(b=0,c=0):(c=1>i?j/i:j/(2-j),d===g?b=(e-f)/j:e===g?b=2+(f-d)/j:f===g&&(b=4+(d-e)/j),0>b?b+=6:b>=6&&(b-=6)),[b/6,c,i/2,a[3]]},b.exports=d.ColorConversion},{"../core/core":37}],30:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("./p5.Color"),d.prototype.alpha=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getAlpha();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.blue=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getBlue();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.brightness=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getBrightness();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.color=function(){return arguments[0]instanceof d.Color?arguments[0]:arguments[0]instanceof Array?this instanceof d.Renderer?new d.Color(this,arguments[0]):new d.Color(this._renderer,arguments[0]):this instanceof d.Renderer?new d.Color(this,arguments):new d.Color(this._renderer,arguments)},d.prototype.green=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getGreen();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.hue=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getHue();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.lerpColor=function(a,b,c){var d,f,g,h,i,j,k=this._renderer._colorMode,l=this._renderer._colorMaxes;if(k===e.RGB)i=a.levels.map(function(a){return a/255}),j=b.levels.map(function(a){return a/255});else if(k===e.HSB)a._getBrightness(),b._getBrightness(),i=a.hsba,j=b.hsba;else{if(k!==e.HSL)throw new Error(k+"cannot be used for interpolation.");a._getLightness(),b._getLightness(),i=a.hsla,j=b.hsla}return c=Math.max(Math.min(c,1),0),d=this.lerp(i[0],j[0],c),f=this.lerp(i[1],j[1],c),g=this.lerp(i[2],j[2],c),h=this.lerp(i[3],j[3],c),d*=l[k][0],f*=l[k][1],g*=l[k][2],h*=l[k][3],this.color(d,f,g,h)},d.prototype.lightness=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getLightness();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.red=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getRed();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.saturation=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getSaturation();throw new Error("Needs p5.Color or pixel array as argument.")},b.exports=d},{"../core/constants":36,"../core/core":37,"./p5.Color":31}],31:[function(a,b,c){var d=a("../core/core"),e=a("../core/constants"),f=a("./color_conversion");d.Color=function(a,b){if(this.mode=a._colorMode,this.maxes=a._colorMaxes,this.mode!==e.RGB&&this.mode!==e.HSL&&this.mode!==e.HSB)throw new Error(this.mode+" is an invalid colorMode.");return this._array=d.Color._parseInputs.apply(a,b),this.levels=this._array.map(function(a){return Math.round(255*a)}),this},d.Color.prototype.toString=function(){var a=this.levels,b=this._array[3];return"rgba("+a[0]+","+a[1]+","+a[2]+","+b+")"},d.Color.prototype._getAlpha=function(){return this._array[3]*this.maxes[this.mode][3]},d.Color.prototype._getBlue=function(){return this._array[2]*this.maxes[e.RGB][2]},d.Color.prototype._getBrightness=function(){return this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[2]*this.maxes[e.HSB][2]},d.Color.prototype._getGreen=function(){return this._array[1]*this.maxes[e.RGB][1]},d.Color.prototype._getHue=function(){return this.mode===e.HSB?(this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[0]*this.maxes[e.HSB][0]):(this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[0]*this.maxes[e.HSL][0])},d.Color.prototype._getLightness=function(){return this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[2]*this.maxes[e.HSL][2]},d.Color.prototype._getRed=function(){return this._array[0]*this.maxes[e.RGB][0]},d.Color.prototype._getSaturation=function(){return this.mode===e.HSB?(this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[1]*this.maxes[e.HSB][1]):(this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[1]*this.maxes[e.HSL][1])};var g={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},h=/\s*/,i=/(\d{1,3})/,j=/((?:\d+(?:\.\d+)?)|(?:\.\d+))/,k=new RegExp(j.source+"%"),l={HEX3:/^#([a-f0-9])([a-f0-9])([a-f0-9])$/i,HEX6:/^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,RGB:new RegExp(["^rgb\\(",i.source,",",i.source,",",i.source,"\\)$"].join(h.source),"i"),RGB_PERCENT:new RegExp(["^rgb\\(",k.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),RGBA:new RegExp(["^rgba\\(",i.source,",",i.source,",",i.source,",",j.source,"\\)$"].join(h.source),"i"), +RGBA_PERCENT:new RegExp(["^rgba\\(",k.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i"),HSL:new RegExp(["^hsl\\(",i.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),HSLA:new RegExp(["^hsla\\(",i.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i"),HSB:new RegExp(["^hsb\\(",i.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),HSBA:new RegExp(["^hsba\\(",i.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i")};d.Color._parseInputs=function(){var a=arguments.length,b=this._colorMode,c=this._colorMaxes,h=[];if(a>=3)return h[0]=arguments[0]/c[b][0],h[1]=arguments[1]/c[b][1],h[2]=arguments[2]/c[b][2],"number"==typeof arguments[3]?h[3]=arguments[3]/c[b][3]:h[3]=1,h=h.map(function(a){return Math.max(Math.min(a,1),0)}),b===e.HSL?f._hslaToRGBA(h):b===e.HSB?f._hsbaToRGBA(h):h;if(1===a&&"string"==typeof arguments[0]){var i=arguments[0].trim().toLowerCase();if(g[i])return d.Color._parseInputs.apply(this,[g[i]]);if(l.HEX3.test(i))return h=l.HEX3.exec(i).slice(1).map(function(a){return parseInt(a+a,16)/255}),h[3]=1,h;if(l.HEX6.test(i))return h=l.HEX6.exec(i).slice(1).map(function(a){return parseInt(a,16)/255}),h[3]=1,h;if(l.RGB.test(i))return h=l.RGB.exec(i).slice(1).map(function(a){return a/255}),h[3]=1,h;if(l.RGB_PERCENT.test(i))return h=l.RGB_PERCENT.exec(i).slice(1).map(function(a){return parseFloat(a)/100}),h[3]=1,h;if(l.RGBA.test(i))return h=l.RGBA.exec(i).slice(1).map(function(a,b){return 3===b?parseFloat(a):a/255});if(l.RGBA_PERCENT.test(i))return h=l.RGBA_PERCENT.exec(i).slice(1).map(function(a,b){return 3===b?parseFloat(a):parseFloat(a)/100});if(l.HSL.test(i)?(h=l.HSL.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:parseInt(a,10)/100}),h[3]=1):l.HSLA.test(i)&&(h=l.HSLA.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:3===b?parseFloat(a):parseInt(a,10)/100})),h.length)return f._hslaToRGBA(h);if(l.HSB.test(i)?(h=l.HSB.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:parseInt(a,10)/100}),h[3]=1):l.HSBA.test(i)&&(h=l.HSBA.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:3===b?parseFloat(a):parseInt(a,10)/100})),h.length)return f._hsbaToRGBA(h);h=[1,1,1,1]}else{if(1!==a&&2!==a||"number"!=typeof arguments[0])throw new Error(arguments+"is not a valid color representation.");h[0]=arguments[0]/c[b][2],h[1]=arguments[0]/c[b][2],h[2]=arguments[0]/c[b][2],"number"==typeof arguments[1]?h[3]=arguments[1]/c[b][3]:h[3]=1,h=h.map(function(a){return Math.max(Math.min(a,1),0)})}return h},b.exports=d.Color},{"../core/constants":36,"../core/core":37,"./color_conversion":29}],32:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("./p5.Color"),d.prototype.background=function(){return arguments[0]instanceof d.Image?this.image(arguments[0],0,0,this.width,this.height):this._renderer.background.apply(this._renderer,arguments),this},d.prototype.clear=function(){return this._renderer.clear(),this},d.prototype.colorMode=function(){if(arguments[0]===e.RGB||arguments[0]===e.HSB||arguments[0]===e.HSL){this._renderer._colorMode=arguments[0];var a=this._renderer._colorMaxes[this._renderer._colorMode];2===arguments.length?(a[0]=arguments[1],a[1]=arguments[1],a[2]=arguments[1],a[3]=arguments[1]):4===arguments.length?(a[0]=arguments[1],a[1]=arguments[2],a[2]=arguments[3]):5===arguments.length&&(a[0]=arguments[1],a[1]=arguments[2],a[2]=arguments[3],a[3]=arguments[4])}return this},d.prototype.fill=function(){return this._renderer._setProperty("_fillSet",!0),this._renderer._setProperty("_doFill",!0),this._renderer.fill.apply(this._renderer,arguments),this},d.prototype.noFill=function(){return this._renderer._setProperty("_doFill",!1),this},d.prototype.noStroke=function(){return this._renderer._setProperty("_doStroke",!1),this},d.prototype.stroke=function(){return this._renderer._setProperty("_strokeSet",!0),this._renderer._setProperty("_doStroke",!0),this._renderer.stroke.apply(this._renderer,arguments),this},b.exports=d},{"../core/constants":36,"../core/core":37,"./p5.Color":31}],33:[function(a,b,c){"use strict";var d=a("./core"),e=a("./constants"),f=a("./canvas");a("./error_helpers"),d.prototype.arc=function(a,b,c,d,f,g,h){for(var i=new Array(arguments.length),j=0;jf;)f+=e.TWO_PI;for(;0>g;)g+=e.TWO_PI;return f%=e.TWO_PI,g%=e.TWO_PI,g===f&&(g+=e.TWO_PI),f=f<=e.HALF_PI?Math.atan(c/d*Math.tan(f)):f>e.HALF_PI&&f<=3*e.HALF_PI?Math.atan(c/d*Math.tan(f))+e.PI:Math.atan(c/d*Math.tan(f))+e.TWO_PI,g=g<=e.HALF_PI?Math.atan(c/d*Math.tan(g)):g>e.HALF_PI&&g<=3*e.HALF_PI?Math.atan(c/d*Math.tan(g))+e.PI:Math.atan(c/d*Math.tan(g))+e.TWO_PI,f>g&&(g+=e.TWO_PI),c=Math.abs(c),d=Math.abs(d),this._renderer.arc(a,b,c,d,f,g,h),this},d.prototype.ellipse=function(){for(var a=new Array(arguments.length),b=0;b=c-d)&&(this._setProperty("frameCount",this.frameCount+1),this.redraw(),this._updateMouseCoords(),this._updateTouchCoords(),this._frameRate=1e3/(a-this._lastFrameTime),this._lastFrameTime=a),this._loop&&(this._requestAnimId=window.requestAnimationFrame(this._draw))}.bind(this),this._runFrames=function(){this._updateInterval&&clearInterval(this._updateInterval)}.bind(this),this._setProperty=function(a,b){this[a]=b,this._isGlobal&&(window[a]=b)}.bind(this),this.remove=function(){if(this._curElement){this._loop=!1,this._requestAnimId&&window.cancelAnimationFrame(this._requestAnimId);for(var a in this._events)window.removeEventListener(a,this._events[a]);for(var b=0;b1)console.log.apply(console,arguments);else{var b=JSON.parse(JSON.stringify(a));console.log(b)}}catch(c){console.log(a)}}:h.prototype.print=function(){},h.prototype.frameCount=0,h.prototype.focused=document.hasFocus(),h.prototype.cursor=function(a,b,c){var d="auto",e=this._curElement.elt;if(j.indexOf(a)>-1)d=a;else if("string"==typeof a){var f="";b&&c&&"number"==typeof b&&"number"==typeof c&&(f=b+" "+c),d="http://"!==a.substring(0,6)?"url("+a+") "+f+", auto":/\.(cur|jpg|jpeg|gif|png|CUR|JPG|JPEG|GIF|PNG)$/.test(a)?"url("+a+") "+f+", auto":a}e.style.cursor=d},h.prototype.frameRate=function(a){return"number"!=typeof a||0>=a?this._frameRate:(this._setProperty("_targetFrameRate",a),this._runFrames(),this)},h.prototype.getFrameRate=function(){return this.frameRate()},h.prototype.setFrameRate=function(a){return this.frameRate(a)},h.prototype.noCursor=function(){this._curElement.elt.style.cursor="none"},h.prototype.displayWidth=screen.width,h.prototype.displayHeight=screen.height,h.prototype.windowWidth=d(),h.prototype.windowHeight=e(),h.prototype._onresize=function(a){this._setProperty("windowWidth",d()),this._setProperty("windowHeight",e());var b,c=this._isGlobal?window:this;"function"==typeof c.windowResized&&(b=c.windowResized(a),void 0===b||b||a.preventDefault())},h.prototype.width=0,h.prototype.height=0,h.prototype.fullscreen=function(a){return"undefined"==typeof a?document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement:void(a?f(document.documentElement):g())},h.prototype.pixelDensity=function(a){return"number"!=typeof a?this._pixelDensity:(this._pixelDensity=a,void this.resizeCanvas(this.width,this.height,!0))},h.prototype.displayDensity=function(){return window.devicePixelRatio},h.prototype.getURL=function(){return location.href},h.prototype.getURLPath=function(){return location.pathname.split("/").filter(function(a){return""!==a})},h.prototype.getURLParams=function(){for(var a,b=/[?&]([^&=]+)(?:[&=])([^&=]+)/gim,c={};null!=(a=b.exec(location.search));)a.index===b.lastIndex&&b.lastIndex++,c[a[1]]=a[2];return c},b.exports=h},{"./constants":36,"./core":37}],40:[function(a,b,c){"use strict";function d(a,b,c){if(a.match(/^p5\./)){var d=a.split(".");return c instanceof i[d[1]]}return"Boolean"===a||a.toLowerCase()===b||r.indexOf(a)>-1&&q(c)}function e(a,b,c){j&&(f(),j=!1),"undefined"===o(c)?c="#B40033":"number"===o(c)&&(c=w[c])}function f(){var a="transparent",b="#ED225D",c="#ED225D",d="white";console.log("%c _ \n /\\| |/\\ \n \\ ` ' / \n / , . \\ \n \\/|_|\\/ \n\n%c> p5.js says: Welcome! This is your friendly debugger. To turn me off switch to using “p5.min.js”.","background-color:"+a+";color:"+b+";","background-color:"+c+";color:"+d+";")}function g(){var b={},c=function(a){return Object.getOwnPropertyNames(a).filter(function(a){return"_"===a[0]?!1:a in b?!1:(b[a]=!0,!0)}).map(function(b){var c;return c="function"==typeof a[b]?"function":b===b.toUpperCase()?"constant":"variable",{name:b,type:c}})};y=[].concat(c(i.prototype),c(a("./constants"))),y.sort(function(a,b){return b.name.length-a.name.length})}function h(a,b){b||(b=console.log.bind(console)),y||g(),y.some(function(c){return a.message&&-1!==a.message.indexOf(c.name)?(b("%cDid you just try to use p5.js's "+c.name+("function"===c.type?"() ":" ")+c.type+"? If so, you may want to move it into your sketch's setup() function.\n\nFor more details, see: "+z,"color: #B40033"),!0):void 0})}for(var i=a("./core"),j=!1,k={},l=k.toString,m=["Boolean","Number","String","Function","Array","Date","RegExp","Object","Error"],n=0;n=0},r=["Number","Integer","Number/Constant"],s=0,t=1,u=2,v=3,w=["#2D7BB6","#EE9900","#4DB200","#C83C00"];i.prototype._validateParameters=function(a,b,c){p(c[0])||(c=[c]);for(var f,g=Math.abs(b.length-c[0].length),h=0,i=1,j=c.length;j>i;i++){var k=Math.abs(b.length-c[i].length);g>=k&&(h=i,g=k)}var l="X";g>0&&(f="You wrote "+a+"(",b.length>0&&(f+=l+Array(b.length).join(","+l)),f+="). "+a+" was expecting "+c[h].length+" parameters. Try "+a+"(",c[h].length>0&&(f+=l+Array(c[h].length).join(","+l)),f+=").",c.length>1&&(f+=" "+a+" takes different numbers of parameters depending on what you want to do. Click this link to learn more: "),e(f,a,s));for(var m=0;m1&&(f+=" "+a+" takes different numbers of parameters depending on what you want to do. Click this link to learn more:"),e(f,a,u))}},i.prototype._validateParameters=function(){return!0};var x={0:{fileType:"image",method:"loadImage",message:" hosting the image online,"},1:{fileType:"XML file",method:"loadXML"},2:{fileType:"table file",method:"loadTable"},3:{fileType:"text file",method:"loadStrings"},4:{fileType:"font",method:"loadFont",message:" hosting the font online,"}};i._friendlyFileLoadError=function(a,b){var c=x[a],d="It looks like there was a problem loading your "+c.fileType+". Try checking if the file path%c ["+b+"] %cis correct,"+(c.message||"")+" or running a local server.";e(d,c.method,v)};var y=null,z="https://github.com/processing/p5.js/wiki/Frequently-Asked-Questions#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup";i.prototype._helpForMisusedAtTopLevelCode=h,"complete"!==document.readyState&&(window.addEventListener("error",h,!1),window.addEventListener("load",function(){window.removeEventListener("error",h,!1)})),b.exports=i},{"./constants":36,"./core":37}],41:[function(a,b,c){function d(a,b,c){var d=b.bind(c);c.elt.addEventListener(a,d,!1),c._events[a]=d}var e=a("./core");e.Element=function(a,b){this.elt=a,this._pInst=b,this._events={},this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight},e.Element.prototype.parent=function(a){return 0===arguments.length?this.elt.parentNode:("string"==typeof a?("#"===a[0]&&(a=a.substring(1)),a=document.getElementById(a)):a instanceof e.Element&&(a=a.elt),a.appendChild(this.elt),this)},e.Element.prototype.id=function(a){return 0===arguments.length?this.elt.id:(this.elt.id=a,this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight,this)},e.Element.prototype["class"]=function(a){return 0===arguments.length?this.elt.className:(this.elt.className=a,this)},e.Element.prototype.mousePressed=function(a){return d("mousedown",a,this),d("touchstart",a,this),this},e.Element.prototype.mouseWheel=function(a){return d("wheel",a,this),this},e.Element.prototype.mouseReleased=function(a){return d("mouseup",a,this),d("touchend",a,this),this},e.Element.prototype.mouseClicked=function(a){return d("click",a,this),this},e.Element.prototype.mouseMoved=function(a){return d("mousemove",a,this),d("touchmove",a,this),this},e.Element.prototype.mouseOver=function(a){return d("mouseover",a,this),this},e.Element.prototype.changed=function(a){return d("change",a,this),this},e.Element.prototype.input=function(a){return d("input",a,this),this},e.Element.prototype.mouseOut=function(a){return d("mouseout",a,this),this},e.Element.prototype.touchStarted=function(a){return d("touchstart",a,this),d("mousedown",a,this),this},e.Element.prototype.touchMoved=function(a){return d("touchmove",a,this),d("mousemove",a,this),this},e.Element.prototype.touchEnded=function(a){return d("touchend",a,this),d("mouseup",a,this),this},e.Element.prototype.dragOver=function(a){return d("dragover",a,this),this},e.Element.prototype.dragLeave=function(a){return d("dragleave",a,this),this},e.Element.prototype.drop=function(a,b){function c(b){var c=new e.File(b);return function(b){c.data=b.target.result,a(c)}}return window.File&&window.FileReader&&window.FileList&&window.Blob?(d("dragover",function(a){a.stopPropagation(),a.preventDefault()},this),d("dragleave",function(a){a.stopPropagation(),a.preventDefault()},this),arguments.length>1&&d("drop",b,this),d("drop",function(a){a.stopPropagation(),a.preventDefault();for(var b=a.dataTransfer.files,d=0;d-1?f.readAsText(e):f.readAsDataURL(e)}},this)):console.log("The File APIs are not fully supported in this browser."),this},e.Element.prototype._setProperty=function(a,b){this[a]=b},b.exports=e.Element},{"./core":37}],42:[function(a,b,c){var d=a("./core"),e=a("./constants");d.Graphics=function(a,b,c,f){var g=c||e.P2D,h=document.createElement("canvas"),i=this._userNode||document.body;i.appendChild(h),d.Element.call(this,h,f,!1),this._styles=[],this.width=a,this.height=b,this._pixelDensity=f._pixelDensity,g===e.WEBGL?this._renderer=new d.RendererGL(h,this,!1):this._renderer=new d.Renderer2D(h,this,!1),this._renderer.resize(a,b),this._renderer._applyDefaults(),f._elements.push(this);for(var j in d.prototype)this[j]||("function"==typeof d.prototype[j]?this[j]=d.prototype[j].bind(this):this[j]=d.prototype[j]);return this},d.Graphics.prototype=Object.create(d.Element.prototype),b.exports=d.Graphics},{"./constants":36,"./core":37}],43:[function(a,b,c){function d(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}else b+=a.offsetLeft,c+=a.offsetTop;return[b,c]}var e=a("./core"),f=a("../core/constants");e.Renderer=function(a,b,c){e.Element.call(this,a,b),this.canvas=a,this._pInst=b,c?(this._isMainCanvas=!0,this._pInst._setProperty("_curElement",this),this._pInst._setProperty("canvas",this.canvas),this._pInst._setProperty("width",this.width),this._pInst._setProperty("height",this.height)):(this.canvas.style.display="none",this._styles=[]),this._textSize=12,this._textLeading=15,this._textFont="sans-serif",this._textStyle=f.NORMAL,this._textAscent=null,this._textDescent=null,this._rectMode=f.CORNER,this._ellipseMode=f.CENTER,this._curveTightness=0,this._imageMode=f.CORNER,this._tint=null,this._doStroke=!0,this._doFill=!0,this._strokeSet=!1,this._fillSet=!1,this._colorMode=f.RGB,this._colorMaxes={rgb:[255,255,255,255],hsb:[360,100,100,1],hsl:[360,100,100,1]}},e.Renderer.prototype=Object.create(e.Element.prototype),e.Renderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.elt.width=a*this._pInst._pixelDensity,this.elt.height=b*this._pInst._pixelDensity,this.elt.style.width=a+"px",this.elt.style.height=b+"px",this._isMainCanvas&&(this._pInst._setProperty("width",this.width),this._pInst._setProperty("height",this.height))},e.Renderer.prototype.textLeading=function(a){return arguments.length&&arguments[0]?(this._setProperty("_textLeading",a),this):this._textLeading},e.Renderer.prototype.textSize=function(a){return arguments.length&&arguments[0]?(this._setProperty("_textSize",a),this._setProperty("_textLeading",a*f._DEFAULT_LEADMULT),this._applyTextProperties()):this._textSize},e.Renderer.prototype.textStyle=function(a){return arguments.length&&arguments[0]?((a===f.NORMAL||a===f.ITALIC||a===f.BOLD)&&this._setProperty("_textStyle",a),this._applyTextProperties()):this._textStyle},e.Renderer.prototype.textAscent=function(){return null===this._textAscent&&this._updateTextMetrics(),this._textAscent},e.Renderer.prototype.textDescent=function(){return null===this._textDescent&&this._updateTextMetrics(),this._textDescent},e.Renderer.prototype._applyDefaults=function(){return this},e.Renderer.prototype._isOpenType=function(a){return a=a||this._textFont,"object"==typeof a&&a.font&&a.font.supported},e.Renderer.prototype._updateTextMetrics=function(){if(this._isOpenType())return this._setProperty("_textAscent",this._textFont._textAscent()),this._setProperty("_textDescent",this._textFont._textDescent()),this;var a=document.createElement("span");a.style.fontFamily=this._textFont,a.style.fontSize=this._textSize+"px",a.innerHTML="ABCjgq|";var b=document.createElement("div");b.style.display="inline-block",b.style.width="1px",b.style.height="0px";var c=document.createElement("div");c.appendChild(a),c.appendChild(b),c.style.height="0px",c.style.overflow="hidden",document.body.appendChild(c),b.style.verticalAlign="baseline";var e=d(b),f=d(a),g=e[1]-f[1];b.style.verticalAlign="bottom",e=d(b),f=d(a);var h=e[1]-f[1],i=h-g; +return document.body.removeChild(c),this._setProperty("_textAscent",g),this._setProperty("_textDescent",i),this},b.exports=e.Renderer},{"../core/constants":36,"./core":37}],44:[function(a,b,c){var d=a("./core"),e=a("./canvas"),f=a("./constants"),g=a("../image/filters");a("./p5.Renderer");var h="rgba(0,0,0,0)";d.Renderer2D=function(a,b,c){return d.Renderer.call(this,a,b,c),this.drawingContext=this.canvas.getContext("2d"),this._pInst._setProperty("drawingContext",this.drawingContext),this},d.Renderer2D.prototype=Object.create(d.Renderer.prototype),d.Renderer2D.prototype._applyDefaults=function(){this.drawingContext.fillStyle=f._DEFAULT_FILL,this.drawingContext.strokeStyle=f._DEFAULT_STROKE,this.drawingContext.lineCap=f.ROUND,this.drawingContext.font="normal 12px sans-serif"},d.Renderer2D.prototype.resize=function(a,b){d.Renderer.prototype.resize.call(this,a,b),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity)},d.Renderer2D.prototype.background=function(){if(this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),arguments[0]instanceof d.Image)this._pInst.image(arguments[0],0,0,this.width,this.height);else{var a=this.drawingContext.fillStyle,b=this._pInst.color.apply(this,arguments),c=b.toString();this.drawingContext.fillStyle=c,this.drawingContext.fillRect(0,0,this.width,this.height),this.drawingContext.fillStyle=a}this.drawingContext.restore()},d.Renderer2D.prototype.clear=function(){this.drawingContext.clearRect(0,0,this.width,this.height)},d.Renderer2D.prototype.fill=function(){var a=this.drawingContext,b=this._pInst.color.apply(this,arguments);a.fillStyle=b.toString()},d.Renderer2D.prototype.stroke=function(){var a=this.drawingContext,b=this._pInst.color.apply(this,arguments);a.strokeStyle=b.toString()},d.Renderer2D.prototype.image=function(a,b,c,e,f,g,h,i,j){var k;try{this._tint&&(d.MediaElement&&a instanceof d.MediaElement&&a.loadPixels(),a.canvas&&(k=this._getTintedImageCanvas(a))),k||(k=a.canvas||a.elt),this.drawingContext.drawImage(k,b,c,e,f,g,h,i,j)}catch(l){if("NS_ERROR_NOT_AVAILABLE"!==l.name)throw l}},d.Renderer2D.prototype._getTintedImageCanvas=function(a){if(!a.canvas)return a;var b=g._toPixels(a.canvas),c=document.createElement("canvas");c.width=a.canvas.width,c.height=a.canvas.height;for(var d=c.getContext("2d"),e=d.createImageData(a.canvas.width,a.canvas.height),f=e.data,h=0;ha+c||0>b+e||a>this.width||b>this.height)return[0,0,0,255];var f=this._pInst||this,g=f._pixelDensity;a=Math.floor(a),b=Math.floor(b);var h=a*g,i=b*g;if(1===c&&1===e){var j=this.drawingContext.getImageData(h,i,1,1).data;return[j[0],j[1],j[2],j[3]]}var k=Math.min(c,f.width),l=Math.min(e,f.height),m=k*g,n=l*g,o=new d.Image(k,l);return o.canvas.getContext("2d").drawImage(this.canvas,h,i,m,n,0,0,k,l),o},d.Renderer2D.prototype.loadPixels=function(){var a=this._pixelDensity||this._pInst._pixelDensity,b=this.width*a,c=this.height*a,d=this.drawingContext.getImageData(0,0,b,c);this._pInst?(this._pInst._setProperty("imageData",d),this._pInst._setProperty("pixels",d.data)):(this._setProperty("imageData",d),this._setProperty("pixels",d.data))},d.Renderer2D.prototype.set=function(a,b,c){if(a=Math.floor(a),b=Math.floor(b),c instanceof d.Image)this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),this.drawingContext.drawImage(c.canvas,a,b),this.loadPixels.call(this._pInst),this.drawingContext.restore();else{var e=this._pInst||this,f=0,g=0,h=0,i=0,j=4*(b*e._pixelDensity*this.width*e._pixelDensity+a*e._pixelDensity);if(e.imageData||e.loadPixels.call(e),"number"==typeof c)jn;)o=Math.min(h-g,f.HALF_PI),p.push(this._acuteArcToBezier(g,o)),g+=o;return this._doFill&&(j.beginPath(),p.forEach(function(a,b){0===b&&j.moveTo(k.x+a.ax*l,k.y+a.ay*m),j.bezierCurveTo(k.x+a.bx*l,k.y+a.by*m,k.x+a.cx*l,k.y+a.cy*m,k.x+a.dx*l,k.y+a.dy*m)}),(i===f.PIE||null==i)&&j.lineTo(k.x,k.y),j.closePath(),j.fill()),this._doStroke&&(j.beginPath(),p.forEach(function(a,b){0===b&&j.moveTo(k.x+a.ax*l,k.y+a.ay*m),j.bezierCurveTo(k.x+a.bx*l,k.y+a.by*m,k.x+a.cx*l,k.y+a.cy*m,k.x+a.dx*l,k.y+a.dy*m)}),i===f.PIE?(j.lineTo(k.x,k.y),j.closePath()):i===f.CHORD&&j.closePath(),j.stroke()),this},d.Renderer2D.prototype.ellipse=function(a){var b=this.drawingContext,c=this._doFill,d=this._doStroke,e=a[0],f=a[1],g=a[2],i=a[3];if(c&&!d){if(b.fillStyle===h)return this}else if(!c&&d&&b.strokeStyle===h)return this;var j=.5522847498,k=g/2*j,l=i/2*j,m=e+g,n=f+i,o=e+g/2,p=f+i/2;b.beginPath(),b.moveTo(e,p),b.bezierCurveTo(e,p-l,o-k,f,o,f),b.bezierCurveTo(o+k,f,m,p-l,m,p),b.bezierCurveTo(m,p+l,o+k,n,o,n),b.bezierCurveTo(o-k,n,e,p+l,e,p),b.closePath(),c&&b.fill(),d&&b.stroke()},d.Renderer2D.prototype.line=function(a,b,c,d){var e=this.drawingContext;return this._doStroke?e.strokeStyle===h?this:(e.lineWidth%2===1&&e.translate(.5,.5),e.beginPath(),e.moveTo(a,b),e.lineTo(c,d),e.stroke(),e.lineWidth%2===1&&e.translate(-.5,-.5),this):this},d.Renderer2D.prototype.point=function(a,b){var c=this.drawingContext,d=c.strokeStyle,e=c.fillStyle;return this._doStroke?c.strokeStyle===h?this:(a=Math.round(a),b=Math.round(b),c.fillStyle=d,c.lineWidth>1?(c.beginPath(),c.arc(a,b,c.lineWidth/2,0,f.TWO_PI,!1),c.fill()):c.fillRect(a,b,1,1),void(c.fillStyle=e)):this},d.Renderer2D.prototype.quad=function(a,b,c,d,e,f,g,i){var j=this.drawingContext,k=this._doFill,l=this._doStroke;if(k&&!l){if(j.fillStyle===h)return this}else if(!k&&l&&j.strokeStyle===h)return this;return j.beginPath(),j.moveTo(a,b),j.lineTo(c,d),j.lineTo(e,f),j.lineTo(g,i),j.closePath(),k&&j.fill(),l&&j.stroke(),this},d.Renderer2D.prototype.rect=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],i=a[6],j=a[7],k=this.drawingContext,l=this._doFill,m=this._doStroke;if(l&&!m){if(k.fillStyle===h)return this}else if(!l&&m&&k.strokeStyle===h)return this;if(this._doStroke&&k.lineWidth%2===1&&k.translate(.5,.5),k.beginPath(),"undefined"==typeof f)k.rect(b,c,d,e);else{"undefined"==typeof g&&(g=f),"undefined"==typeof i&&(i=g),"undefined"==typeof j&&(j=i);var n=d/2,o=e/2;2*f>d&&(f=n),2*f>e&&(f=o),2*g>d&&(g=n),2*g>e&&(g=o),2*i>d&&(i=n),2*i>e&&(i=o),2*j>d&&(j=n),2*j>e&&(j=o),k.beginPath(),k.moveTo(b+f,c),k.arcTo(b+d,c,b+d,c+e,g),k.arcTo(b+d,c+e,b,c+e,i),k.arcTo(b,c+e,b,c,j),k.arcTo(b,c,b+d,c,f),k.closePath()}return this._doFill&&k.fill(),this._doStroke&&k.stroke(),this._doStroke&&k.lineWidth%2===1&&k.translate(-.5,-.5),this},d.Renderer2D.prototype.triangle=function(a){var b=this.drawingContext,c=this._doFill,d=this._doStroke,e=a[0],f=a[1],g=a[2],i=a[3],j=a[4],k=a[5];if(c&&!d){if(b.fillStyle===h)return this}else if(!c&&d&&b.strokeStyle===h)return this;b.beginPath(),b.moveTo(e,f),b.lineTo(g,i),b.lineTo(j,k),b.closePath(),c&&b.fill(),d&&b.stroke()},d.Renderer2D.prototype.endShape=function(a,b,c,d,e,g,h){if(0===b.length)return this;if(!this._doStroke&&!this._doFill)return this;var i,j=a===f.CLOSE;j&&!g&&b.push(b[0]);var k,l,m=b.length;if(!c||h!==f.POLYGON&&null!==h)if(!d||h!==f.POLYGON&&null!==h)if(!e||h!==f.POLYGON&&null!==h)if(h===f.POINTS)for(k=0;m>k;k++)i=b[k],this._doStroke&&this._pInst.stroke(i[6]),this._pInst.point(i[0],i[1]);else if(h===f.LINES)for(k=0;m>k+1;k+=2)i=b[k],this._doStroke&&this._pInst.stroke(b[k+1][6]),this._pInst.line(i[0],i[1],b[k+1][0],b[k+1][1]);else if(h===f.TRIANGLES)for(k=0;m>k+2;k+=3)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(b[k+2][0],b[k+2][1]),this.drawingContext.lineTo(i[0],i[1]),this._doFill&&(this._pInst.fill(b[k+2][5]),this.drawingContext.fill()),this._doStroke&&(this._pInst.stroke(b[k+2][6]),this.drawingContext.stroke()),this.drawingContext.closePath();else if(h===f.TRIANGLE_STRIP)for(k=0;m>k+1;k++)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(i[0],i[1]),this._doStroke&&this._pInst.stroke(b[k+1][6]),this._doFill&&this._pInst.fill(b[k+1][5]),m>k+2&&(this.drawingContext.lineTo(b[k+2][0],b[k+2][1]),this._doStroke&&this._pInst.stroke(b[k+2][6]),this._doFill&&this._pInst.fill(b[k+2][5])),this._doFillStrokeClose();else if(h===f.TRIANGLE_FAN){if(m>2)for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),this.drawingContext.lineTo(b[1][0],b[1][1]),this.drawingContext.lineTo(b[2][0],b[2][1]),this._doFill&&this._pInst.fill(b[2][5]),this._doStroke&&this._pInst.stroke(b[2][6]),this._doFillStrokeClose(),k=3;m>k;k++)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),this.drawingContext.lineTo(b[k-1][0],b[k-1][1]),this.drawingContext.lineTo(i[0],i[1]),this._doFill&&this._pInst.fill(i[5]),this._doStroke&&this._pInst.stroke(i[6]),this._doFillStrokeClose()}else if(h===f.QUADS)for(k=0;m>k+3;k+=4){for(i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(i[0],i[1]),l=1;4>l;l++)this.drawingContext.lineTo(b[k+l][0],b[k+l][1]);this.drawingContext.lineTo(i[0],i[1]),this._doFill&&this._pInst.fill(b[k+3][5]),this._doStroke&&this._pInst.stroke(b[k+3][6]),this._doFillStrokeClose()}else if(h===f.QUAD_STRIP){if(m>3)for(k=0;m>k+1;k+=2)i=b[k],this.drawingContext.beginPath(),m>k+3?(this.drawingContext.moveTo(b[k+2][0],b[k+2][1]),this.drawingContext.lineTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(b[k+3][0],b[k+3][1]),this._doFill&&this._pInst.fill(b[k+3][5]),this._doStroke&&this._pInst.stroke(b[k+3][6])):(this.drawingContext.moveTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1])),this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),k=1;m>k;k++)i=b[k],i.isVert&&(i.moveTo?this.drawingContext.moveTo(i[0],i[1]):this.drawingContext.lineTo(i[0],i[1]));this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),k=0;m>k;k++)b[k].isVert?b[k].moveTo?this.drawingContext.moveTo([0],b[k][1]):this.drawingContext.lineTo(b[k][0],b[k][1]):this.drawingContext.quadraticCurveTo(b[k][0],b[k][1],b[k][2],b[k][3]);this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),k=0;m>k;k++)b[k].isVert?b[k].moveTo?this.drawingContext.moveTo(b[k][0],b[k][1]):this.drawingContext.lineTo(b[k][0],b[k][1]):this.drawingContext.bezierCurveTo(b[k][0],b[k][1],b[k][2],b[k][3],b[k][4],b[k][5]);this._doFillStrokeClose()}else if(m>3){var n=[],o=1-this._curveTightness;for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[1][0],b[1][1]),k=1;m>k+2;k++)i=b[k],n[0]=[i[0],i[1]],n[1]=[i[0]+(o*b[k+1][0]-o*b[k-1][0])/6,i[1]+(o*b[k+1][1]-o*b[k-1][1])/6],n[2]=[b[k+1][0]+(o*b[k][0]-o*b[k+2][0])/6,b[k+1][1]+(o*b[k][1]-o*b[k+2][1])/6],n[3]=[b[k+1][0],b[k+1][1]],this.drawingContext.bezierCurveTo(n[1][0],n[1][1],n[2][0],n[2][1],n[3][0],n[3][1]);j&&this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this._doFillStrokeClose()}return c=!1,d=!1,e=!1,g=!1,j&&b.pop(),this},d.Renderer2D.prototype.noSmooth=function(){return"imageSmoothingEnabled"in this.drawingContext?this.drawingContext.imageSmoothingEnabled=!1:"mozImageSmoothingEnabled"in this.drawingContext?this.drawingContext.mozImageSmoothingEnabled=!1:"webkitImageSmoothingEnabled"in this.drawingContext?this.drawingContext.webkitImageSmoothingEnabled=!1:"msImageSmoothingEnabled"in this.drawingContext&&(this.drawingContext.msImageSmoothingEnabled=!1),this},d.Renderer2D.prototype.smooth=function(){return"imageSmoothingEnabled"in this.drawingContext?this.drawingContext.imageSmoothingEnabled=!0:"mozImageSmoothingEnabled"in this.drawingContext?this.drawingContext.mozImageSmoothingEnabled=!0:"webkitImageSmoothingEnabled"in this.drawingContext?this.drawingContext.webkitImageSmoothingEnabled=!0:"msImageSmoothingEnabled"in this.drawingContext&&(this.drawingContext.msImageSmoothingEnabled=!0),this},d.Renderer2D.prototype.strokeCap=function(a){return(a===f.ROUND||a===f.SQUARE||a===f.PROJECT)&&(this.drawingContext.lineCap=a),this},d.Renderer2D.prototype.strokeJoin=function(a){return(a===f.ROUND||a===f.BEVEL||a===f.MITER)&&(this.drawingContext.lineJoin=a),this},d.Renderer2D.prototype.strokeWeight=function(a){return"undefined"==typeof a||0===a?this.drawingContext.lineWidth=1e-4:this.drawingContext.lineWidth=a,this},d.Renderer2D.prototype._getFill=function(){return this.drawingContext.fillStyle},d.Renderer2D.prototype._getStroke=function(){return this.drawingContext.strokeStyle},d.Renderer2D.prototype.bezier=function(a,b,c,d,e,f,g,h){return this._pInst.beginShape(),this._pInst.vertex(a,b),this._pInst.bezierVertex(c,d,e,f,g,h),this._pInst.endShape(),this},d.Renderer2D.prototype.curve=function(a,b,c,d,e,f,g,h){return this._pInst.beginShape(),this._pInst.curveVertex(a,b),this._pInst.curveVertex(c,d),this._pInst.curveVertex(e,f),this._pInst.curveVertex(g,h),this._pInst.endShape(),this},d.Renderer2D.prototype._doFillStrokeClose=function(){this._doFill&&this.drawingContext.fill(),this._doStroke&&this.drawingContext.stroke(),this.drawingContext.closePath()},d.Renderer2D.prototype.applyMatrix=function(a,b,c,d,e,f){this.drawingContext.transform(a,b,c,d,e,f)},d.Renderer2D.prototype.resetMatrix=function(){return this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),this},d.Renderer2D.prototype.rotate=function(a){this.drawingContext.rotate(a)},d.Renderer2D.prototype.scale=function(a,b){return this.drawingContext.scale(a,b),this},d.Renderer2D.prototype.shearX=function(a){return this._pInst._angleMode===f.DEGREES&&(a=this._pInst.degrees(a)),this.drawingContext.transform(1,0,this._pInst.tan(a),1,0,0),this},d.Renderer2D.prototype.shearY=function(a){return this._pInst._angleMode===f.DEGREES&&(a=this._pInst.degrees(a)),this.drawingContext.transform(1,this._pInst.tan(a),0,1,0,0),this},d.Renderer2D.prototype.translate=function(a,b){return this.drawingContext.translate(a,b),this},d.Renderer2D.prototype.text=function(a,b,c,d,e){var g,h,i,j,k,l,m,n,o,p,q=this._pInst,r=Number.MAX_VALUE;if(this._doFill||this._doStroke){if("string"!=typeof a&&(a=a.toString()),a=a.replace(/(\t)/g," "),g=a.split("\n"),"undefined"!=typeof d){for(o=0,i=0;id?(k=n[h]+" ",o+=q.textLeading()):k=l;switch(this._rectMode===f.CENTER&&(b-=d/2,c-=e/2),this.drawingContext.textAlign){case f.CENTER:b+=d/2;break;case f.RIGHT:b+=d}if("undefined"!=typeof e){switch(this.drawingContext.textBaseline){case f.BOTTOM:c+=e-o;break;case f._CTX_MIDDLE:c+=(e-o)/2;break;case f.BASELINE:p=!0,this.drawingContext.textBaseline=f.TOP}r=c+e-q.textAscent()}for(i=0;id&&k.length>0?(this._renderText(q,k,b,c,r),k=n[h]+" ",c+=q.textLeading()):k=l;this._renderText(q,k,b,c,r),c+=q.textLeading()}}else{var s=0,t=q.textAlign().vertical;for(t===f.CENTER?s=(g.length-1)*q.textLeading()/2:t===f.BOTTOM&&(s=(g.length-1)*q.textLeading()),j=0;j=e?void 0:(a.push(),this._isOpenType()?this._textFont._renderPath(b,c,d,{renderer:this}):(this._doStroke&&this._strokeSet&&this.drawingContext.strokeText(b,c,d),this._doFill&&(this.drawingContext.fillStyle=this._fillSet?this.drawingContext.fillStyle:f._DEFAULT_TEXT_FILL,this.drawingContext.fillText(b,c,d))),a.pop(),a)},d.Renderer2D.prototype.textWidth=function(a){return this._isOpenType()?this._textFont._textWidth(a,this._textSize):this.drawingContext.measureText(a).width},d.Renderer2D.prototype.textAlign=function(a,b){if(arguments.length)return(a===f.LEFT||a===f.RIGHT||a===f.CENTER)&&(this.drawingContext.textAlign=a),(b===f.TOP||b===f.BOTTOM||b===f.CENTER||b===f.BASELINE)&&(b===f.CENTER?this.drawingContext.textBaseline=f._CTX_MIDDLE:this.drawingContext.textBaseline=b),this._pInst;var c=this.drawingContext.textBaseline;return c===f._CTX_MIDDLE&&(c=f.CENTER),{horizontal:this.drawingContext.textAlign,vertical:c}},d.Renderer2D.prototype._applyTextProperties=function(){var a,b=this._pInst;return this._setProperty("_textAscent",null),this._setProperty("_textDescent",null),a=this._textFont,this._isOpenType()&&(a=this._textFont.font.familyName,this._setProperty("_textStyle",this._textFont.font.styleName)),this.drawingContext.font=this._textStyle+" "+this._textSize+"px "+a,b},d.Renderer2D.prototype.push=function(){this.drawingContext.save()},d.Renderer2D.prototype.pop=function(){this.drawingContext.restore()},b.exports=d.Renderer2D},{"../image/filters":54,"./canvas":35,"./constants":36,"./core":37,"./p5.Renderer":43}],45:[function(a,b,c){var d=a("./core"),e=a("./constants");a("./p5.Graphics"),a("./p5.Renderer2D"),a("../webgl/p5.RendererGL");var f="defaultCanvas0";d.prototype.createCanvas=function(a,b,c){var g,h,i=c||e.P2D;if(arguments[3]&&(g="boolean"==typeof arguments[3]?arguments[3]:!1),i===e.WEBGL)h=document.getElementById(f),h&&h.parentNode.removeChild(h),h=document.createElement("canvas"),h.id=f;else if(g){h=document.createElement("canvas");for(var j=0;document.getElementById("defaultCanvas"+j);)j++;f="defaultCanvas"+j,h.id=f}else h=this.canvas;return this._setupDone||(h.dataset.hidden=!0,h.style.visibility="hidden"),this._userNode?this._userNode.appendChild(h):document.body.appendChild(h),i===e.WEBGL?(this._setProperty("_renderer",new d.RendererGL(h,this,!0)),this._isdefaultGraphics=!0):this._isdefaultGraphics||(this._setProperty("_renderer",new d.Renderer2D(h,this,!0)),this._isdefaultGraphics=!0),this._renderer.resize(a,b),this._renderer._applyDefaults(),g&&this._elements.push(this._renderer),this._renderer},d.prototype.resizeCanvas=function(a,b,c){if(this._renderer){var d={};for(var e in this.drawingContext){var f=this.drawingContext[e];"object"!=typeof f&&"function"!=typeof f&&(d[e]=f)}this._renderer.resize(a,b);for(var g in d)this.drawingContext[g]=d[g];c||this.redraw()}},d.prototype.noCanvas=function(){this.canvas&&this.canvas.parentNode.removeChild(this.canvas)},d.prototype.createGraphics=function(a,b,c){return new d.Graphics(a,b,c,this)},d.prototype.blendMode=function(a){if(a!==e.BLEND&&a!==e.DARKEST&&a!==e.LIGHTEST&&a!==e.DIFFERENCE&&a!==e.MULTIPLY&&a!==e.EXCLUSION&&a!==e.SCREEN&&a!==e.REPLACE&&a!==e.OVERLAY&&a!==e.HARD_LIGHT&&a!==e.SOFT_LIGHT&&a!==e.DODGE&&a!==e.BURN&&a!==e.ADD&&a!==e.NORMAL)throw new Error("Mode "+a+" not recognized.");this._renderer.blendMode(a)},b.exports=d},{"../webgl/p5.RendererGL":86,"./constants":36,"./core":37,"./p5.Graphics":42,"./p5.Renderer2D":44}],46:[function(a,b,c){window.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a,b){window.setTimeout(a,1e3/60)}}(),window.performance=window.performance||{},window.performance.now=function(){var a=Date.now();return window.performance.now||window.performance.mozNow||window.performance.msNow||window.performance.oNow||window.performance.webkitNow||function(){return Date.now()-a}}(),function(){"use strict";"undefined"==typeof Uint8ClampedArray||Uint8ClampedArray.prototype.slice||Object.defineProperty(Uint8ClampedArray.prototype,"slice",{value:Array.prototype.slice,writable:!0,configurable:!0,enumerable:!1})}()},{}],47:[function(a,b,c){"use strict";var d=a("./core");d.prototype.exit=function(){throw"exit() not implemented, see remove()"},d.prototype.noLoop=function(){this._loop=!1},d.prototype.loop=function(){this._loop=!0,this._draw()},d.prototype.push=function(){this._renderer.push(),this._styles.push({_doStroke:this._renderer._doStroke,_strokeSet:this._renderer._strokeSet,_doFill:this._renderer._doFill,_fillSet:this._renderer._fillSet,_tint:this._renderer._tint,_imageMode:this._renderer._imageMode,_rectMode:this._renderer._rectMode,_ellipseMode:this._renderer._ellipseMode,_colorMode:this._renderer._colorMode,_textFont:this._renderer._textFont,_textLeading:this._renderer._textLeading,_textSize:this._renderer._textSize,_textStyle:this._renderer._textStyle})},d.prototype.pop=function(){this._renderer.pop();var a=this._styles.pop();for(var b in a)this._renderer[b]=a[b]},d.prototype.pushStyle=function(){throw new Error("pushStyle() not used, see push()")},d.prototype.popStyle=function(){throw new Error("popStyle() not used, see pop()")},d.prototype.redraw=function(){this.resetMatrix(),this._renderer.isP3D&&this._renderer._update();var a=1;if(1===arguments.length)try{parseInt(arguments[0])>1&&(a=parseInt(arguments[0]))}catch(b){}var c=this.setup||window.setup,d=this.draw||window.draw;if("function"==typeof d){"undefined"==typeof c&&this.scale(this._pixelDensity,this._pixelDensity);for(var e=this,f=function(a){a.call(e)},g=0;a>g;g++)this._registeredMethods.pre.forEach(f),d(),this._registeredMethods.post.forEach(f)}},d.prototype.size=function(){var a="size() is not a valid p5 function, to set the size of the ";throw a+="drawing canvas, please use createCanvas() instead"},b.exports=d},{"./core":37}],48:[function(a,b,c){"use strict";var d=a("./core"),e=a("./constants");d.prototype.applyMatrix=function(a,b,c,d,e,f){return this._renderer.applyMatrix(a,b,c,d,e,f),this},d.prototype.popMatrix=function(){throw new Error("popMatrix() not used, see pop()")},d.prototype.printMatrix=function(){throw new Error("printMatrix() not implemented")},d.prototype.pushMatrix=function(){throw new Error("pushMatrix() not used, see push()")},d.prototype.resetMatrix=function(){return this._renderer.resetMatrix(),this},d.prototype.rotate=function(){for(var a,b=new Array(arguments.length),c=0;c1?this._renderer.rotate(a,b[1]):this._renderer.rotate(a),this},d.prototype.rotateX=function(a){for(var b=new Array(arguments.length),c=0;c0))throw"vertex() must be used once before calling quadraticVertex()";k=!0;for(var i=[],j=0;jn||Math.abs(this.accelerationY-this.pAccelerationY)>n||Math.abs(this.accelerationZ-this.pAccelerationZ)>n)&&a();var b=this.deviceTurned||window.deviceTurned;if("function"==typeof b){var c=this.rotationX+180,d=this.pRotationX+180,p=h+180;c-d>0&&270>c-d||-270>c-d?k="clockwise":(0>c-d||c-d>270)&&(k="counter-clockwise"),k!==e&&(p=c),Math.abs(c-p)>90&&Math.abs(c-p)<270&&(p=c,this._setProperty("turnAxis","X"),b()),e=k,h=p-180;var q=this.rotationY+180,r=this.pRotationY+180,s=i+180;q-r>0&&270>q-r||-270>q-r?l="clockwise":(0>q-r||q-this.pRotationY>270)&&(l="counter-clockwise"),l!==f&&(s=q),Math.abs(q-s)>90&&Math.abs(q-s)<270&&(s=q,this._setProperty("turnAxis","Y"),b()),f=l,i=s-180,this.rotationZ-this.pRotationZ>0&&this.rotationZ-this.pRotationZ<270||this.rotationZ-this.pRotationZ<-270?m="clockwise":(this.rotationZ-this.pRotationZ<0||this.rotationZ-this.pRotationZ>270)&&(m="counter-clockwise"),m!==g&&(j=this.rotationZ),Math.abs(this.rotationZ-j)>90&&Math.abs(this.rotationZ-j)<270&&(j=this.rotationZ,this._setProperty("turnAxis","Z"),b()),g=m,this._setProperty("turnAxis",void 0)}var t=this.deviceShaken||window.deviceShaken;if("function"==typeof t){var u,v;null!==this.pAccelerationX&&(u=Math.abs(this.accelerationX-this.pAccelerationX),v=Math.abs(this.accelerationY-this.pAccelerationY)),u+v>o&&t()}},b.exports=d},{"../core/core":37}],51:[function(a,b,c){"use strict";var d=a("../core/core"),e={};d.prototype.isKeyPressed=!1, +d.prototype.keyIsPressed=!1,d.prototype.key="",d.prototype.keyCode=0,d.prototype._onkeydown=function(a){if(!e[a.which]){this._setProperty("isKeyPressed",!0),this._setProperty("keyIsPressed",!0),this._setProperty("keyCode",a.which),e[a.which]=!0;var b=String.fromCharCode(a.which);b||(b=a.which),this._setProperty("key",b);var c=this.keyPressed||window.keyPressed;if("function"==typeof c&&!a.charCode){var d=c(a);d===!1&&a.preventDefault()}}},d.prototype._onkeyup=function(a){var b=this.keyReleased||window.keyReleased;this._setProperty("isKeyPressed",!1),this._setProperty("keyIsPressed",!1),this._setProperty("_lastKeyCodeTyped",null),e[a.which]=!1;var c=String.fromCharCode(a.which);if(c||(c=a.which),this._setProperty("key",c),this._setProperty("keyCode",a.which),"function"==typeof b){var d=b(a);d===!1&&a.preventDefault()}},d.prototype._onkeypress=function(a){if(a.which!==this._lastKeyCodeTyped){this._setProperty("keyCode",a.which),this._setProperty("_lastKeyCodeTyped",a.which),this._setProperty("key",String.fromCharCode(a.which));var b=this.keyTyped||window.keyTyped;if("function"==typeof b){var c=b(a);c===!1&&a.preventDefault()}}},d.prototype._onblur=function(a){e={}},d.prototype.keyIsDown=function(a){return e[a]},b.exports=d},{"../core/core":37}],52:[function(a,b,c){"use strict";function d(a,b){var c=a.getBoundingClientRect();return{x:b.clientX-c.left,y:b.clientY-c.top,winX:b.clientX,winY:b.clientY}}var e=a("../core/core"),f=a("../core/constants");e.prototype._hasMouseInteracted=!1,e.prototype.mouseX=0,e.prototype.mouseY=0,e.prototype.pmouseX=0,e.prototype.pmouseY=0,e.prototype.winMouseX=0,e.prototype.winMouseY=0,e.prototype.pwinMouseX=0,e.prototype.pwinMouseY=0,e.prototype.mouseButton=0,e.prototype.mouseIsPressed=!1,e.prototype.isMousePressed=!1,e.prototype._updateNextMouseCoords=function(a){var b=this.mouseX,c=this.mouseY,e=this.winMouseX,f=this.winMouseY;if("touchstart"===a.type||"touchmove"===a.type||"touchend"===a.type||a.touches)b=this.touchX,c=this.touchY,e=this.winTouchX,f=this.winTouchY;else if(null!==this._curElement){var g=d(this._curElement.elt,a);b=g.x,c=g.y,e=g.winX,f=g.winY}this._setProperty("mouseX",b),this._setProperty("mouseY",c),this._setProperty("winMouseX",e),this._setProperty("winMouseY",f),this._hasMouseInteracted||(this._updateMouseCoords(),this._setProperty("_hasMouseInteracted",!0))},e.prototype._updateMouseCoords=function(){this._setProperty("pmouseX",this.mouseX),this._setProperty("pmouseY",this.mouseY),this._setProperty("pwinMouseX",this.winMouseX),this._setProperty("pwinMouseY",this.winMouseY)},e.prototype._setMouseButton=function(a){1===a.button?this._setProperty("mouseButton",f.CENTER):2===a.button?this._setProperty("mouseButton",f.RIGHT):this._setProperty("mouseButton",f.LEFT)},e.prototype._onmousemove=function(a){var b,c=this._isGlobal?window:this;this._updateNextMouseCoords(a),this._updateNextTouchCoords(a),this.isMousePressed?"function"==typeof c.mouseDragged?(b=c.mouseDragged(a),b===!1&&a.preventDefault()):"function"==typeof c.touchMoved&&(b=c.touchMoved(a),b===!1&&a.preventDefault()):"function"==typeof c.mouseMoved&&(b=c.mouseMoved(a),b===!1&&a.preventDefault())},e.prototype._onmousedown=function(a){var b,c=this._isGlobal?window:this;this._setProperty("isMousePressed",!0),this._setProperty("mouseIsPressed",!0),this._setMouseButton(a),this._updateNextMouseCoords(a),this._updateNextTouchCoords(a),"function"==typeof c.mousePressed?(b=c.mousePressed(a),b===!1&&a.preventDefault()):"function"==typeof c.touchStarted&&(b=c.touchStarted(a),b===!1&&a.preventDefault())},e.prototype._onmouseup=function(a){var b,c=this._isGlobal?window:this;this._setProperty("isMousePressed",!1),this._setProperty("mouseIsPressed",!1),"function"==typeof c.mouseReleased?(b=c.mouseReleased(a),b===!1&&a.preventDefault()):"function"==typeof c.touchEnded&&(b=c.touchEnded(a),b===!1&&a.preventDefault())},e.prototype._ondragend=e.prototype._onmouseup,e.prototype._ondragover=e.prototype._onmousemove,e.prototype._onclick=function(a){var b=this._isGlobal?window:this;if("function"==typeof b.mouseClicked){var c=b.mouseClicked(a);c===!1&&a.preventDefault()}},e.prototype._onwheel=function(a){var b=this._isGlobal?window:this;if("function"==typeof b.mouseWheel){a.delta=a.deltaY;var c=b.mouseWheel(a);c===!1&&a.preventDefault()}},b.exports=e},{"../core/constants":36,"../core/core":37}],53:[function(a,b,c){"use strict";function d(a,b,c){c=c||0;var d=a.getBoundingClientRect(),e=b.touches[c]||b.changedTouches[c];return{x:e.clientX-d.left,y:e.clientY-d.top,winX:e.clientX,winY:e.clientY,id:e.identifier}}var e=a("../core/core");e.prototype._hasTouchInteracted=!1,e.prototype.touchX=0,e.prototype.touchY=0,e.prototype.ptouchX=0,e.prototype.ptouchY=0,e.prototype.winTouchX=0,e.prototype.winTouchY=0,e.prototype.pwinTouchX=0,e.prototype.pwinTouchY=0,e.prototype.touches=[],e.prototype.touchIsDown=!1,e.prototype._updateNextTouchCoords=function(a){var b=this.touchX,c=this.touchY,e=this.winTouchX,f=this.winTouchY;if("mousedown"!==a.type&&"mousemove"!==a.type&&"mouseup"!==a.type&&a.touches){if(null!==this._curElement){var g=d(this._curElement.elt,a,0);b=g.x,c=g.y,e=g.winX,f=g.winY;for(var h=[],i=0;ib?1:248>b?b:248,g!==b){g=b,h=1+g<<1,i=new Int32Array(h),j=new Array(h);for(var c=0;h>c;c++)j[c]=new Int32Array(256);for(var d,e,f,k,l=1,m=b-1;b>l;l++){i[b+l]=i[m]=e=m*m,f=j[b+l],k=j[m--];for(var n=0;256>n;n++)f[n]=k[n]=e*n}d=i[b]=b*b,f=j[b];for(var o=0;256>o;o++)f[o]=d*o}}function e(a,b){for(var c=f._toPixels(a),e=a.width,k=a.height,l=e*k,m=new Int32Array(l),n=0;l>n;n++)m[n]=f._getARGB(c,n);var o,p,q,r,s,t,u,v,w,x,y=new Int32Array(l),z=new Int32Array(l),A=new Int32Array(l),B=new Int32Array(l),C=0;d(b);var D,E,F,G;for(E=0;k>E;E++){for(D=0;e>D;D++){if(r=q=p=s=o=0,t=D-g,0>t)x=-t,t=0;else{if(t>=e)break;x=0}for(F=x;h>F&&!(t>=e);F++){var H=m[t+C];G=j[F],s+=G[(-16777216&H)>>>24],p+=G[(16711680&H)>>16],q+=G[(65280&H)>>8],r+=G[255&H],o+=i[F],t++}u=C+D,y[u]=s/o,z[u]=p/o,A[u]=q/o,B[u]=r/o}C+=e}for(C=0,v=-g,w=v*e,E=0;k>E;E++){for(D=0;e>D;D++){if(r=q=p=s=o=0,0>v)x=u=-v,t=D;else{if(v>=k)break;x=0,u=v,t=D+w}for(F=x;h>F&&!(u>=k);F++)G=j[F],s+=G[y[t]],p+=G[z[t]],q+=G[A[t]],r+=G[B[t]],o+=i[F],u++,t+=e;m[D+C]=s/o<<24|p/o<<16|q/o<<8|r/o}C+=e,w+=e,v++}f._setPixels(c,m)}var f={};f._toPixels=function(a){return a instanceof ImageData?a.data:a.getContext("2d").getImageData(0,0,a.width,a.height).data},f._getARGB=function(a,b){var c=4*b;return a[c+3]<<24&4278190080|a[c]<<16&16711680|a[c+1]<<8&65280|255&a[c+2]},f._setPixels=function(a,b){for(var c=0,d=0,e=a.length;e>d;d++)c=4*d,a[c+0]=(16711680&b[d])>>>16,a[c+1]=(65280&b[d])>>>8,a[c+2]=255&b[d],a[c+3]=(4278190080&b[d])>>>24},f._toImageData=function(a){return a instanceof ImageData?a:a.getContext("2d").getImageData(0,0,a.width,a.height)},f._createImageData=function(a,b){return f._tmpCanvas=document.createElement("canvas"),f._tmpCtx=f._tmpCanvas.getContext("2d"),this._tmpCtx.createImageData(a,b)},f.apply=function(a,b,c){var d=a.getContext("2d"),e=d.getImageData(0,0,a.width,a.height),f=b(e,c);f instanceof ImageData?d.putImageData(f,0,0,0,0,a.width,a.height):d.putImageData(e,0,0,0,0,a.width,a.height)},f.threshold=function(a,b){var c=f._toPixels(a);void 0===b&&(b=.5);for(var d=Math.floor(255*b),e=0;e=d?255:0,c[e]=c[e+1]=c[e+2]=g}},f.gray=function(a){for(var b=f._toPixels(a),c=0;cb||b>255)throw new Error("Level must be greater than 2 and less than 255 for posterize");for(var d=b-1,e=0;e>8)/d,c[e+1]=255*(h*b>>8)/d,c[e+2]=255*(i*b>>8)/d}},f.dilate=function(a){for(var b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t=f._toPixels(a),u=0,v=t.length?t.length/4:0,w=new Int32Array(v);v>u;)for(b=u,c=u+a.width;c>u;)d=e=f._getARGB(t,u),i=u-1,h=u+1,j=u-a.width,k=u+a.width,b>i&&(i=u),h>=c&&(h=u),0>j&&(j=0),k>=v&&(k=u),n=f._getARGB(t,j),m=f._getARGB(t,i),o=f._getARGB(t,k),l=f._getARGB(t,h),g=77*(d>>16&255)+151*(d>>8&255)+28*(255&d),q=77*(m>>16&255)+151*(m>>8&255)+28*(255&m),p=77*(l>>16&255)+151*(l>>8&255)+28*(255&l),r=77*(n>>16&255)+151*(n>>8&255)+28*(255&n),s=77*(o>>16&255)+151*(o>>8&255)+28*(255&o),q>g&&(e=m,g=q),p>g&&(e=l,g=p),r>g&&(e=n,g=r),s>g&&(e=o,g=s),w[u++]=e;f._setPixels(t,w)},f.erode=function(a){for(var b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t=f._toPixels(a),u=0,v=t.length?t.length/4:0,w=new Int32Array(v);v>u;)for(b=u,c=u+a.width;c>u;)d=e=f._getARGB(t,u),i=u-1,h=u+1,j=u-a.width,k=u+a.width,b>i&&(i=u),h>=c&&(h=u),0>j&&(j=0),k>=v&&(k=u),n=f._getARGB(t,j),m=f._getARGB(t,i),o=f._getARGB(t,k),l=f._getARGB(t,h),g=77*(d>>16&255)+151*(d>>8&255)+28*(255&d),q=77*(m>>16&255)+151*(m>>8&255)+28*(255&m),p=77*(l>>16&255)+151*(l>>8&255)+28*(255&l),r=77*(n>>16&255)+151*(n>>8&255)+28*(255&n),s=77*(o>>16&255)+151*(o>>8&255)+28*(255&o),g>q&&(e=m,g=q),g>p&&(e=l,g=p),g>r&&(e=n,g=r),g>s&&(e=o,g=s),w[u++]=e;f._setPixels(t,w)};var g,h,i,j;f.blur=function(a,b){e(a,b)},b.exports=f},{}],55:[function(a,b,c){"use strict";var d=a("../core/core"),e=[];d.prototype.createImage=function(a,b){return new d.Image(a,b)},d.prototype.saveCanvas=function(){var a,b,c;if(3===arguments.length?(a=arguments[0],b=arguments[1],c=arguments[2]):2===arguments.length?"object"==typeof arguments[0]?(a=arguments[0],b=arguments[1]):(b=arguments[0],c=arguments[1]):1===arguments.length&&("object"==typeof arguments[0]?a=arguments[0]:b=arguments[0]),a instanceof d.Element&&(a=a.elt),a instanceof HTMLCanvasElement||(a=null),c||(c=d.prototype._checkFileExtension(b,c)[1],""===c&&(c="png")),a||this._curElement&&this._curElement.elt&&(a=this._curElement.elt),d.prototype._isSafari()){var e="Hello, Safari user!\n";e+="Now capturing a screenshot...\n",e+="To save this image,\n",e+="go to File --> Save As.\n",alert(e),window.location.href=a.toDataURL()}else{var f;if("undefined"==typeof c)c="png",f="image/png";else switch(c){case"png":f="image/png";break;case"jpeg":f="image/jpeg";break;case"jpg":f="image/jpeg";break;default:f="image/png"}var g="image/octet-stream",h=a.toDataURL(f);h=h.replace(f,g),d.prototype.downloadFile(h,b,c)}},d.prototype.saveFrames=function(a,b,c,f,g){var h=c||3;h=d.prototype.constrain(h,0,15),h=1e3*h;var i=f||15;i=d.prototype.constrain(i,0,22);var j=0,k=d.prototype._makeFrame,l=this._curElement.elt,m=setInterval(function(){k(a+j,b,l),j++},1e3/i);setTimeout(function(){if(clearInterval(m),g)g(e);else for(var a=0;a0&&b>a?a:b}var e=a("../core/core"),f=a("./filters"),g=a("../core/canvas"),h=a("../core/constants");a("../core/error_helpers"),e.prototype.loadImage=function(a,b,c){var d=new Image,f=new e.Image(1,1,this),g=e._getDecrementPreload.apply(this,arguments);return d.onload=function(){f.width=f.canvas.width=d.width,f.height=f.canvas.height=d.height,f.drawingContext.drawImage(d,0,0),"function"==typeof b&&b(f),g&&b!==g&&g()},d.onerror=function(a){e._friendlyFileLoadError(0,d.src),"function"==typeof c&&c!==g&&c(a)},0!==a.indexOf("data:image/")&&(d.crossOrigin="Anonymous"),d.src=a,f},e.prototype.image=function(a,b,c,e,f,h,i,j,k){if(arguments.length<=5)if(h=b||0,i=c||0,b=0,c=0,a.elt&&a.elt.videoWidth&&!a.canvas){var l=a.elt.videoWidth,m=a.elt.videoHeight;j=e||a.elt.width,k=f||a.elt.width*m/l,e=l,f=m}else j=e||a.width,k=f||a.height,e=a.width,f=a.height;else{if(9!==arguments.length)throw"Wrong number of arguments to image()";b=b||0,c=c||0,e=d(e,a.width),f=d(f,a.height),h=h||0,i=i||0,j=j||a.width,k=k||a.height}var n=g.modeAdjust(h,i,j,k,this._renderer._imageMode);this._renderer.image(a,b,c,e,f,n.x,n.y,n.w,n.h)},e.prototype.tint=function(){var a=this.color.apply(this,arguments);this._renderer._tint=a.levels},e.prototype.noTint=function(){this._renderer._tint=null},e.prototype._getTintedImageCanvas=function(a){if(!a.canvas)return a;var b=f._toPixels(a.canvas),c=document.createElement("canvas");c.width=a.canvas.width,c.height=a.canvas.height;for(var d=c.getContext("2d"),e=d.createImageData(a.canvas.width,a.canvas.height),g=e.data,h=0;h0&&this.loadPixels()},d.Image.prototype.copy=function(){d.prototype.copy.apply(this,arguments)},d.Image.prototype.mask=function(a){void 0===a&&(a=this);var b=this.drawingContext.globalCompositeOperation,c=1;a instanceof d.Renderer&&(c=a._pInst._pixelDensity);var e=[a,0,0,c*a.width,c*a.height,0,0,this.width,this.height];this.drawingContext.globalCompositeOperation="destination-in",d.Image.prototype.copy.apply(this,e),this.drawingContext.globalCompositeOperation=b},d.Image.prototype.filter=function(a,b){e.apply(this.canvas,e[a.toLowerCase()],b)},d.Image.prototype.blend=function(){d.prototype.blend.apply(this,arguments)},d.Image.prototype.save=function(a,b){var c;if(b)switch(b.toLowerCase()){case"png":c="image/png";break;case"jpeg":c="image/jpeg";break;case"jpg":c="image/jpeg";break;default:c="image/png"}else b="png",c="image/png";var e="image/octet-stream",f=this.canvas.toDataURL(c);f=f.replace(c,e),d.prototype.downloadFile(f,a,b)},b.exports=d.Image},{"../core/core":37,"./filters":54}],58:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./filters");a("../color/p5.Color"),d.prototype.pixels=[],d.prototype.blend=function(){this._renderer?this._renderer.blend.apply(this._renderer,arguments):d.Renderer2D.prototype.blend.apply(this,arguments)},d.prototype.copy=function(){d.Renderer2D._copyHelper.apply(this,arguments)},d.prototype.filter=function(a,b){e.apply(this.canvas,e[a.toLowerCase()],b)},d.prototype.get=function(a,b,c,d){return this._renderer.get(a,b,c,d)},d.prototype.loadPixels=function(){this._renderer.loadPixels()},d.prototype.set=function(a,b,c){this._renderer.set(a,b,c)},d.prototype.updatePixels=function(a,b,c,d){0!==this.pixels.length&&this._renderer.updatePixels(a,b,c,d)},b.exports=d},{"../color/p5.Color":31,"../core/core":37,"./filters":54}],59:[function(a,b,c){"use strict";function d(a,b){var c={};if(b=b||[],"undefined"==typeof b)for(var d=0;d/g,">").replace(/"/g,""").replace(/'/g,"'")}function f(a,b){b&&b!==!0&&"true"!==b||(b=""),a||(a="untitled");var c="";return a&&a.indexOf(".")>-1&&(c=a.split(".").pop()),b&&c!==b&&(c=b,a=a+"."+c),[a,c]}function g(a){document.body.removeChild(a.target)}var h=a("../core/core"),i=a("reqwest"),j=a("opentype.js");a("../core/error_helpers"),h._getDecrementPreload=function(){var a=arguments[arguments.length-1];return(window.preload||this&&this.preload)&&"function"==typeof a?a:null},h.prototype.loadFont=function(a,b,c){var d=new h.Font(this),e=h._getDecrementPreload.apply(this,arguments);return j.load(a,function(f,g){if(f)return"undefined"!=typeof c&&c!==e?c(f):(h._friendlyFileLoadError(4,a),void console.error(f,a));d.font=g,"undefined"!=typeof b&&b(d),e&&b!==e&&e();var i,j,k=["ttf","otf","woff","woff2"],l=a.split("\\").pop().split("/").pop(),m=l.lastIndexOf("."),n=1>m?null:l.substr(m+1);k.indexOf(n)>-1&&(i=l.substr(0,m),j=document.createElement("style"),j.appendChild(document.createTextNode("\n@font-face {\nfont-family: "+i+";\nsrc: url("+a+");\n}\n")),document.head.appendChild(j))}),d},h.prototype.createInput=function(){throw"not yet implemented"},h.prototype.createReader=function(){throw"not yet implemented"},h.prototype.loadBytes=function(){throw"not yet implemented"},h.prototype.loadJSON=function(){for(var a,b=arguments[0],c=arguments[1],d=h._getDecrementPreload.apply(this,arguments),e={},f="json",g=2;g"),d.print("");var k=' "),d.print(""),d.print(" "),"0"!==f[0]){d.print(" ");for(var l=0;l"+m),d.print(" ")}d.print(" ")}for(var n=0;n");for(var o=0;o"+q),d.print(" ")}d.print(" ")}d.print("
"),d.print(""),d.print("")}d.close(),d.flush()},h.prototype.writeFile=function(a,b,c){var d="application/octet-stream";h.prototype._isSafari()&&(d="text/plain");var e=new Blob(a,{type:d}),f=window.URL.createObjectURL(e);h.prototype.downloadFile(f,b,c)},h.prototype.downloadFile=function(a,b,c){var d=f(b,c),e=d[0],i=d[1],j=document.createElement("a");if(j.href=a,j.download=e,j.onclick=g,j.style.display="none",document.body.appendChild(j),h.prototype._isSafari()){var k="Hello, Safari user! To download this file...\n";k+="1. Go to File --> Save As.\n",k+='2. Choose "Page Source" as the Format.\n',k+='3. Name it with this extension: ."'+i+'"',alert(k)}j.click(),a=null},h.prototype._checkFileExtension=f,h.prototype._isSafari=function(){var a=Object.prototype.toString.call(window.HTMLElement);return a.indexOf("Constructor")>0},b.exports=h},{"../core/core":37,"../core/error_helpers":40,"opentype.js":8,reqwest:27}],60:[function(a,b,c){"use strict";var d=a("../core/core");d.Table=function(a){this.columns=[],this.rows=[]},d.Table.prototype.addRow=function(a){var b=a||new d.TableRow;if("undefined"==typeof b.arr||"undefined"==typeof b.obj)throw"invalid TableRow: "+b;return b.table=this,this.rows.push(b),b},d.Table.prototype.removeRow=function(a){this.rows[a].table=null;var b=this.rows.splice(a+1,this.rows.length);this.rows.pop(),this.rows=this.rows.concat(b)},d.Table.prototype.getRow=function(a){return this.rows[a]},d.Table.prototype.getRows=function(){return this.rows},d.Table.prototype.findRow=function(a,b){if("string"==typeof b){for(var c=0;c=0))throw'This table has no column named "'+a+'"';d=b[a],e[d]=b}else e[f]=this.rows[f].obj;return e},d.Table.prototype.getArray=function(){for(var a=[],b=0;b=0))throw'This table has no column named "'+a+'"';this.obj[a]=b,this.arr[c]=b}else{if(!(a0},d.XML.prototype.listChildren=function(){return this.children.map(function(a){return a.name})},d.XML.prototype.getChildren=function(a){return a?this.children.filter(function(b){return b.name===a}):this.children},d.XML.prototype.getChild=function(a){return"string"==typeof a?this.children.find(function(b){return b.name===a}):this.children[a]},d.XML.prototype.addChild=function(a){a instanceof d.XML&&this.children.push(a)},d.XML.prototype.removeChild=function(a){var b=-1;if("string"==typeof a){for(var c=0;ce;e++)d[e]=Math.random()}0>a&&(a=-a),0>b&&(b=-b),0>c&&(c=-c);for(var n,o,p,q,r,s=Math.floor(a),t=Math.floor(b),u=Math.floor(c),v=a-s,w=b-t,x=c-u,y=0,z=.5,A=0;k>A;A++){var B=s+(t<=1&&(s++,v--),w>=1&&(t++,w--),x>=1&&(u++,x--)}return y},e.prototype.noiseDetail=function(a,b){a>0&&(k=a),b>0&&(l=b)},e.prototype.noiseSeed=function(a){var b=function(){var a,b,c=4294967296,d=1664525,e=1013904223;return{setSeed:function(d){b=a=(null==d?Math.random()*c:d)>>>0},getSeed:function(){return a},rand:function(){return b=(d*b+e)%c,b/c}}}();b.setSeed(a),d=new Array(j+1);for(var c=0;j+1>c;c++)d[c]=b.rand()},b.exports=e},{"../core/core":37}],66:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./polargeometry"),f=a("../core/constants");d.Vector=function(){var a,b,c;arguments[0]instanceof d?(this.p5=arguments[0],a=arguments[1][0]||0,b=arguments[1][1]||0,c=arguments[1][2]||0):(a=arguments[0]||0,b=arguments[1]||0,c=arguments[2]||0),this.x=a,this.y=b,this.z=c},d.Vector.prototype.toString=function(){return"p5.Vector Object : ["+this.x+", "+this.y+", "+this.z+"]"},d.Vector.prototype.set=function(a,b,c){return a instanceof d.Vector?(this.x=a.x||0,this.y=a.y||0,this.z=a.z||0,this):a instanceof Array?(this.x=a[0]||0,this.y=a[1]||0,this.z=a[2]||0,this):(this.x=a||0,this.y=b||0,this.z=c||0,this)},d.Vector.prototype.copy=function(){return this.p5?new d.Vector(this.p5,[this.x,this.y,this.z]):new d.Vector(this.x,this.y,this.z)},d.Vector.prototype.add=function(a,b,c){return a instanceof d.Vector?(this.x+=a.x||0,this.y+=a.y||0,this.z+=a.z||0,this):a instanceof Array?(this.x+=a[0]||0,this.y+=a[1]||0,this.z+=a[2]||0,this):(this.x+=a||0,this.y+=b||0,this.z+=c||0,this)},d.Vector.prototype.sub=function(a,b,c){return a instanceof d.Vector?(this.x-=a.x||0,this.y-=a.y||0,this.z-=a.z||0,this):a instanceof Array?(this.x-=a[0]||0,this.y-=a[1]||0,this.z-=a[2]||0,this):(this.x-=a||0,this.y-=b||0,this.z-=c||0,this)},d.Vector.prototype.mult=function(a){return this.x*=a||0,this.y*=a||0,this.z*=a||0,this},d.Vector.prototype.div=function(a){return this.x/=a,this.y/=a,this.z/=a,this},d.Vector.prototype.mag=function(){return Math.sqrt(this.magSq())},d.Vector.prototype.magSq=function(){var a=this.x,b=this.y,c=this.z;return a*a+b*b+c*c},d.Vector.prototype.dot=function(a,b,c){return a instanceof d.Vector?this.dot(a.x,a.y,a.z):this.x*(a||0)+this.y*(b||0)+this.z*(c||0)},d.Vector.prototype.cross=function(a){var b=this.y*a.z-this.z*a.y,c=this.z*a.x-this.x*a.z,e=this.x*a.y-this.y*a.x;return this.p5?new d.Vector(this.p5,[b,c,e]):new d.Vector(b,c,e)},d.Vector.prototype.dist=function(a){var b=a.copy().sub(this);return b.mag()},d.Vector.prototype.normalize=function(){return 0===this.mag()?this:this.div(this.mag())},d.Vector.prototype.limit=function(a){var b=this.magSq();return b>a*a&&(this.div(Math.sqrt(b)),this.mult(a)),this},d.Vector.prototype.setMag=function(a){return this.normalize().mult(a)},d.Vector.prototype.heading=function(){var a=Math.atan2(this.y,this.x);return this.p5?this.p5._angleMode===f.RADIANS?a:e.radiansToDegrees(a):a},d.Vector.prototype.rotate=function(a){this.p5&&this.p5._angleMode===f.DEGREES&&(a=e.degreesToRadians(a));var b=this.heading()+a,c=this.mag();return this.x=Math.cos(b)*c,this.y=Math.sin(b)*c,this},d.Vector.prototype.lerp=function(a,b,c,e){return a instanceof d.Vector?this.lerp(a.x,a.y,a.z,b):(this.x+=(a-this.x)*e||0,this.y+=(b-this.y)*e||0,this.z+=(c-this.z)*e||0,this)},d.Vector.prototype.array=function(){return[this.x||0,this.y||0,this.z||0]},d.Vector.prototype.equals=function(a,b,c){var e,f,g;return a instanceof d.Vector?(e=a.x||0,f=a.y||0,g=a.z||0):a instanceof Array?(e=a[0]||0,f=a[1]||0,g=a[2]||0):(e=a||0,f=b||0,g=c||0),this.x===e&&this.y===f&&this.z===g},d.Vector.fromAngle=function(a){return this.p5&&this.p5._angleMode===f.DEGREES&&(a=e.degreesToRadians(a)),this.p5?new d.Vector(this.p5,[Math.cos(a),Math.sin(a),0]):new d.Vector(Math.cos(a),Math.sin(a),0)},d.Vector.random2D=function(){var a;return a=this.p5?this.p5._angleMode===f.DEGREES?this.p5.random(360):this.p5.random(f.TWO_PI):Math.random()*Math.PI*2,this.fromAngle(a)},d.Vector.random3D=function(){var a,b;this.p5?(a=this.p5.random(0,f.TWO_PI),b=this.p5.random(-1,1)):(a=Math.random()*Math.PI*2,b=2*Math.random()-1);var c=Math.sqrt(1-b*b)*Math.cos(a),e=Math.sqrt(1-b*b)*Math.sin(a);return this.p5?new d.Vector(this.p5,[c,e,b]):new d.Vector(c,e,b)},d.Vector.add=function(a,b,c){return c?c.set(a):c=a.copy(),c.add(b),c},d.Vector.sub=function(a,b,c){return c?c.set(a):c=a.copy(),c.sub(b),c},d.Vector.mult=function(a,b,c){return c?c.set(a):c=a.copy(),c.mult(b),c},d.Vector.div=function(a,b,c){return c?c.set(a):c=a.copy(),c.div(b),c},d.Vector.dot=function(a,b){return a.dot(b)},d.Vector.cross=function(a,b){return a.cross(b)},d.Vector.dist=function(a,b){return a.dist(b)},d.Vector.lerp=function(a,b,c,d){return d?d.set(a):d=a.copy(),d.lerp(b,c),d},d.Vector.angleBetween=function(a,b){var c=Math.acos(a.dot(b)/(a.mag()*b.mag()));return this.p5&&this.p5._angleMode===f.DEGREES&&(c=e.radiansToDegrees(c)),c},d.Vector.mag=function(a){var b=a.x,c=a.y,d=a.z,e=b*b+c*c+d*d;return Math.sqrt(e)},b.exports=d.Vector},{"../core/constants":36,"../core/core":37,"./polargeometry":67}],67:[function(a,b,c){b.exports={degreesToRadians:function(a){return 2*Math.PI*a/360},radiansToDegrees:function(a){return 360*a/(2*Math.PI)}}},{}],68:[function(a,b,c){"use strict";var d=a("../core/core"),e=!1,f=function(){var a,b,c=4294967296,d=1664525,e=1013904223;return{setSeed:function(d){b=a=(null==d?Math.random()*c:d)>>>0},getSeed:function(){return a},rand:function(){return b=(d*b+e)%c,b/c}}}();d.prototype.randomSeed=function(a){f.setSeed(a),e=!0},d.prototype.random=function(a,b){var c;if(c=e?f.rand():Math.random(),"undefined"==typeof a)return c;if("undefined"==typeof b)return a instanceof Array?a[Math.floor(c*a.length)]:c*a;if(a>b){var d=a;a=b,b=d}return c*(b-a)+a};var g,h=!1;d.prototype.randomGaussian=function(a,b){var c,d,e,f;if(h)c=g,h=!1;else{do d=this.random(2)-1,e=this.random(2)-1,f=d*d+e*e;while(f>=1);f=Math.sqrt(-2*Math.log(f)/f),c=d*f,g=e*f,h=!0}var i=a||0,j=b||1;return c*j+i},b.exports=d},{"../core/core":37}],69:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./polargeometry"),f=a("../core/constants");d.prototype._angleMode=f.RADIANS,d.prototype.acos=function(a){return this._angleMode===f.RADIANS?Math.acos(a):e.radiansToDegrees(Math.acos(a))},d.prototype.asin=function(a){return this._angleMode===f.RADIANS?Math.asin(a):e.radiansToDegrees(Math.asin(a))},d.prototype.atan=function(a){return this._angleMode===f.RADIANS?Math.atan(a):e.radiansToDegrees(Math.atan(a))},d.prototype.atan2=function(a,b){return this._angleMode===f.RADIANS?Math.atan2(a,b):e.radiansToDegrees(Math.atan2(a,b))},d.prototype.cos=function(a){return this._angleMode===f.RADIANS?Math.cos(a):Math.cos(this.radians(a))},d.prototype.sin=function(a){return this._angleMode===f.RADIANS?Math.sin(a):Math.sin(this.radians(a))},d.prototype.tan=function(a){return this._angleMode===f.RADIANS?Math.tan(a):Math.tan(this.radians(a))},d.prototype.degrees=function(a){return e.radiansToDegrees(a)},d.prototype.radians=function(a){return e.degreesToRadians(a)},d.prototype.angleMode=function(a){(a===f.DEGREES||a===f.RADIANS)&&(this._angleMode=a)},b.exports=d},{"../core/constants":36,"../core/core":37,"./polargeometry":67}],70:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.textAlign=function(a,b){return this._renderer.textAlign.apply(this._renderer,arguments)},d.prototype.textLeading=function(a){return this._renderer.textLeading.apply(this._renderer,arguments)},d.prototype.textSize=function(a){return this._renderer.textSize.apply(this._renderer,arguments)},d.prototype.textStyle=function(a){return this._renderer.textStyle.apply(this._renderer,arguments)},d.prototype.textWidth=function(a){return 0===a.length?0:this._renderer.textWidth.apply(this._renderer,arguments)},d.prototype.textAscent=function(){return this._renderer.textAscent()},d.prototype.textDescent=function(){return this._renderer.textDescent()},d.prototype._updateTextMetrics=function(){return this._renderer._updateTextMetrics()},b.exports=d},{"../core/core":37}],71:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("../core/error_helpers"),d.prototype.text=function(a,b,c,d,e){for(var f=new Array(arguments.length),g=0;gi;i+=f)g.push(n(a,i));return c.simplifyThreshold&&e(g,c.simplifyThreshold),g}function e(a,b){b="undefined"==typeof b?0:b;for(var c=0,d=a.length-1;a.length>3&&d>=0;--d)j(i(a,d-1),i(a,d),i(a,d+1),b)&&(a.splice(d%a.length,1),c++);return c}function f(a){for(var b,c=[],d=0;db?b%c+c:b%c]}function j(a,b,c,d){if(!d)return 0===k(a,b,c);"undefined"==typeof j.tmpPoint1&&(j.tmpPoint1=[],j.tmpPoint2=[]);var e=j.tmpPoint1,f=j.tmpPoint2;e.x=b.x-a.x,e.y=b.y-a.y,f.x=c.x-b.x,f.y=c.y-b.y;var g=e.x*f.x+e.y*f.y,h=Math.sqrt(e.x*e.x+e.y*e.y),i=Math.sqrt(f.x*f.x+f.y*f.y),l=Math.acos(g/(h*i));return d>l}function k(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])}function l(a,b,c,d,e,f,g,h,i){var j=1-i,k=Math.pow(j,3),l=Math.pow(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*Math.atan2(q-s,r-t)/Math.PI;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}}function m(a,b,c,d,e,f,g,h,i){return null==i?u(a,b,c,d,e,f,g,h):l(a,b,c,d,e,f,g,h,v(a,b,c,d,e,f,g,h,i))}function n(a,b,c){a=p(a);for(var d,e,f,g,h,i="",j={},k=0,n=0,o=a.length;o>n;n++){if(f=a[n],"M"===f[0])d=+f[1],e=+f[2];else{if(g=m(d,e,f[1],f[2],f[3],f[4],f[5],f[6]),k+g>b&&!c)return h=m(d,e,f[1],f[2],f[3],f[4],f[5],f[6],b-k),{x:h.x,y:h.y,alpha:h.alpha};k+=g,d=+f[5],e=+f[6]}i+=f.shift()+f}return j.end=i,h=c?k:l(d,e,f[0],f[1],f[2],f[3],f[4],f[5],1),h.alpha&&(h={x:h.x,y:h.y,alpha:h.alpha}),h}function o(a){var b=[],c=0,d=0,e=0,f=0,g=0;"M"===a[0][0]&&(c=+a[0][1],d=+a[0][2],e=c,f=d,g++,b[0]=["M",c,d]);for(var h,i,j,k=3===a.length&&"M"===a[0][0]&&"R"===a[1][0].toUpperCase()&&"Z"===a[2][0].toUpperCase(),l=g,m=a.length;m>l;l++){if(b.push(i=[]),j=a[l],j[0]!==String.prototype.toUpperCase.call(j[0]))switch(i[0]=String.prototype.toUpperCase.call(j[0]),i[0]){case"A":i[1]=j[1],i[2]=j[2],i[3]=j[3],i[4]=j[4],i[5]=j[5],i[6]=+(j[6]+c),i[7]=+(j[7]+d);break;case"V":i[1]=+j[1]+d;break;case"H":i[1]=+j[1]+c;break;case"R":h=[c,d].concat(j.slice(1));for(var n=2,o=h.length;o>n;n++)h[n]=+h[n]+c,h[++n]=+h[n]+d;b.pop(),b=b.concat(r(h,k));break;case"M":e=+j[1]+c,f=+j[2]+d;break;default:for(n=1,o=j.length;o>n;n++)i[n]=+j[n]+(n%2?c:d)}else if("R"===j[0])h=[c,d].concat(j.slice(1)),b.pop(),b=b.concat(r(h,k)),i=["R"].concat(j.slice(-2));else for(var p=0,q=j.length;q>p;p++)i[p]=j[p];switch(i[0]){case"Z":c=e,d=f;break;case"H":c=i[1];break;case"V":d=i[1];break;case"M":e=i[i.length-2],f=i[i.length-1];break;default:c=i[i.length-2],d=i[i.length-1]}}return b}function p(a,b){for(var c=o(a),d=b&&o(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(a[0]in f||(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"].concat(q.apply(0,[b.x,b.y].concat(a.slice(1))));break;case"S":"C"===c||"S"===c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e].concat(a.slice(1));break;case"T":"Q"===c||"T"===c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"].concat(t(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"].concat(t(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"].concat(s(b.x,b.y,a[1],a[2]));break;case"H":a=["C"].concat(s(b.x,b.y,a[1],b.y));break;case"V":a=["C"].concat(s(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"].concat(s(b.x,b.y,b.X,b.Y))}return a}),h=function(a,b){if(a[b].length>7){a[b].shift();for(var e=a[b];e.length;)j[b]="A",d&&(k[b]="A"),a.splice(b++,0,["C"].concat(e.splice(0,6)));a.splice(b,1),p=Math.max(c.length,d&&d.length||0)}},i=function(a,b,e,f,g){a&&b&&"M"===a[g][0]&&"M"!==b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],p=Math.max(c.length,d&&d.length||0))},j=[],k=[],l="",m="",n=0,p=Math.max(c.length,d&&d.length||0);p>n;n++){c[n]&&(l=c[n][0]),"C"!==l&&(j[n]=l,n&&(m=j[n-1])),c[n]=g(c[n],e,m),"A"!==j[n]&&"C"===l&&(j[n]="C"),h(c,n),d&&(d[n]&&(l=d[n][0]),"C"!==l&&(k[n]=l,n&&(m=k[n-1])),d[n]=g(d[n],f,m),"A"!==k[n]&&"C"===l&&(k[n]="C"),h(d,n)),i(c,d,e,f,n),i(d,c,f,e,n);var r=c[n],u=d&&d[n],v=r.length,w=d&&u.length;e.x=r[v-2],e.y=r[v-1],e.bx=parseFloat(r[v-4])||e.x,e.by=parseFloat(r[v-3])||e.y,f.bx=d&&(parseFloat(u[w-4])||f.x),f.by=d&&(parseFloat(u[w-3])||f.y),f.x=d&&u[w-2],f.y=d&&u[w-1]}return d?[c,d]:c}function q(a,b,c,d,e,f,g,h,i,j){var k,l,m,n,o,p=Math.PI,r=120*p/180,s=p/180*(+e||0),t=[],u=function(a,b,c){var d=a*Math.cos(c)-b*Math.sin(c),e=a*Math.sin(c)+b*Math.cos(c);return{x:d,y:e}};if(j)k=j[0],l=j[1],m=j[2],n=j[3];else{o=u(a,b,-s),a=o.x,b=o.y,o=u(h,i,-s),h=o.x,i=o.y;var v=(a-h)/2,w=(b-i)/2,x=v*v/(c*c)+w*w/(d*d);x>1&&(x=Math.sqrt(x),c=x*c,d=x*d);var y=c*c,z=d*d,A=(f===g?-1:1)*Math.sqrt(Math.abs((y*z-y*w*w-z*v*v)/(y*w*w+z*v*v)));m=A*c*w/d+(a+h)/2,n=A*-d*v/c+(b+i)/2,k=Math.asin(((b-n)/d).toFixed(9)),l=Math.asin(((i-n)/d).toFixed(9)),k=m>a?p-k:k,l=m>h?p-l:l,0>k&&(k=2*p+k),0>l&&(l=2*p+l),g&&k>l&&(k-=2*p),!g&&l>k&&(l-=2*p)}var B=l-k;if(Math.abs(B)>r){var C=l,D=h,E=i;l=k+r*(g&&l>k?1:-1),h=m+c*Math.cos(l),i=n+d*Math.sin(l),t=q(h,i,c,d,e,0,g,D,E,[l,C,m,n])}B=l-k;var F=Math.cos(k),G=Math.sin(k),H=Math.cos(l),I=Math.sin(l),J=Math.tan(B/4),K=4/3*c*J,L=4/3*d*J,M=[a,b],N=[a+K*G,b-L*F],O=[h+K*I,i-L*H],P=[h,i];if(N[0]=2*M[0]-N[0],N[1]=2*M[1]-N[1],j)return[N,O,P].concat(t);t=[N,O,P].concat(t).join().split(",");for(var Q=[],R=0,S=t.length;S>R;R++)Q[R]=R%2?u(t[R-1],t[R],s).y:u(t[R],t[R+1],s).x;return Q}function r(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4===d?f[3]={x:+a[0],y:+a[1]}:e-2===d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4===d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function s(a,b,c,d){return[a,b,c,d,c,d]}function t(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]}function u(a,b,c,d,e,f,g,h,i){null==i&&(i=1),i=i>1?1:0>i?0:i;for(var j=i/2,k=12,l=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],m=0,n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0;k>o;o++){var p=j*l[o]+j,q=w(p,a,c,e,g),r=w(p,b,d,f,h),s=q*q+r*r;m+=n[o]*Math.sqrt(s)}return j*m}function v(a,b,c,d,e,f,g,h,i){if(!(0>i||u(a,b,c,d,e,f,g,h)n;)l/=2,m+=(i>j?1:-1)*l,j=u(a,b,c,d,e,f,g,h,m);return m}}function w(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function x(){for(var a=new Array(arguments.length),b=0;b2?a=this._getPath(a,b,c,d):"object"==typeof b&&(d=b),d&&"number"==typeof d.decimals&&(e=d.decimals),a.toPathData(e)},y.Font.prototype._getSVG=function(a,b,c,d){var e=3;return"string"==typeof a&&arguments.length>2?a=this._getPath(a,b,c,d):"object"==typeof b&&(d=b),d&&("number"==typeof d.decimals&&(e=d.decimals),"number"==typeof d.strokeWidth&&(a.strokeWidth=d.strokeWidth),"undefined"!=typeof d.fill&&(a.fill=d.fill),"undefined"!=typeof d.stroke&&(a.stroke=d.stroke)),a.toSVG(e)},y.Font.prototype._renderPath=function(a,b,c,d){var e,f=d&&d.renderer||this.parent._renderer,g=f.drawingContext;e="object"==typeof a&&a.commands?a.commands:this._getPath(a,b,c,d).commands,g.beginPath();for(var h=0;h1;)d=Math.random()*f|0,e=a[--f],a[f]=a[d],a[d]=e;return a},d.prototype.sort=function(a,b){var c=b?a.slice(0,Math.min(b,a.length)):a,d=b?a.slice(Math.min(b,a.length)):[];return c="string"==typeof c[0]?c.sort():c.sort(function(a,b){return a-b}),c.concat(d)},d.prototype.splice=function(a,b,c){return Array.prototype.splice.apply(a,[c,0].concat(b)),a},d.prototype.subset=function(a,b,c){return"undefined"!=typeof c?a.slice(b,b+c):a.slice(b,a.length)},b.exports=d},{"../core/core":37}],74:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype["float"]=function(a){return parseFloat(a)},d.prototype["int"]=function(a,b){return"string"==typeof a?(b=b||10,parseInt(a,b)):"number"==typeof a?0|a:"boolean"==typeof a?a?1:0:a instanceof Array?a.map(function(a){return d.prototype["int"](a,b)}):void 0},d.prototype.str=function(a){return a instanceof Array?a.map(d.prototype.str):String(a)},d.prototype["boolean"]=function(a){return"number"==typeof a?0!==a:"string"==typeof a?"true"===a.toLowerCase():"boolean"==typeof a?a:a instanceof Array?a.map(d.prototype["boolean"]):void 0},d.prototype["byte"]=function(a){var b=d.prototype["int"](a,10);return"number"==typeof b?(b+128)%256-128:b instanceof Array?b.map(d.prototype["byte"]):void 0},d.prototype["char"]=function(a){return"number"!=typeof a||isNaN(a)?a instanceof Array?a.map(d.prototype["char"]):"string"==typeof a?d.prototype["char"](parseInt(a,10)):void 0:String.fromCharCode(a)},d.prototype.unchar=function(a){return"string"==typeof a&&1===a.length?a.charCodeAt(0):a instanceof Array?a.map(d.prototype.unchar):void 0},d.prototype.hex=function(a,b){if(b=void 0===b||null===b?b=8:b,a instanceof Array)return a.map(function(a){return d.prototype.hex(a,b)});if("number"==typeof a){0>a&&(a=4294967295+a+1);for(var c=Number(a).toString(16).toUpperCase();c.length=b&&(c=c.substring(c.length-b,c.length)),c}},d.prototype.unhex=function(a){return a instanceof Array?a.map(d.prototype.unhex):parseInt("0x"+a,16)},b.exports=d},{"../core/core":37}],75:[function(a,b,c){"use strict";function d(){var a=arguments[0],b=0>a,c=b?a.toString().substring(1):a.toString(),d=c.indexOf("."),e=-1!==d?c.substring(0,d):c,f=-1!==d?c.substring(d+1):"",g=b?"-":"";if(3===arguments.length){var h="";(-1!==d||arguments[2]-f.length>0)&&(h="."),f.length>arguments[2]&&(f=f.substring(0,arguments[2]));for(var i=0;ic.length){c+=-1===b?".":"";for(var e=arguments[1]-c.length+1,f=0;e>f;f++)c+="0"}else c=c.substring(0,arguments[1]+1);return d+c}function f(){return parseFloat(arguments[0])>0?"+"+arguments[0].toString():arguments[0].toString()}function g(){return parseFloat(arguments[0])>0?" "+arguments[0].toString():arguments[0].toString()}var h=a("../core/core");h.prototype.join=function(a,b){return a.join(b)},h.prototype.match=function(a,b){return a.match(b)},h.prototype.matchAll=function(a,b){for(var c=new RegExp(b,"g"),d=c.exec(a),e=[];null!==d;)e.push(d),d=c.exec(a);return e},h.prototype.nf=function(){if(arguments[0]instanceof Array){var a=arguments[1],b=arguments[2];return arguments[0].map(function(c){return d(c,a,b)})}var c=Object.prototype.toString.call(arguments[0]);return"[object Arguments]"===c?3===arguments[0].length?this.nf(arguments[0][0],arguments[0][1],arguments[0][2]):2===arguments[0].length?this.nf(arguments[0][0],arguments[0][1]):this.nf(arguments[0][0]):d.apply(this,arguments)},h.prototype.nfc=function(){if(arguments[0]instanceof Array){var a=arguments[1];return arguments[0].map(function(b){return e(b,a)})}return e.apply(this,arguments)},h.prototype.nfp=function(){var a=this.nf.apply(this,arguments);return a instanceof Array?a.map(f):f(a)},h.prototype.nfs=function(){var a=this.nf.apply(this,arguments);return a instanceof Array?a.map(g):g(a)},h.prototype.split=function(a,b){return a.split(b)},h.prototype.splitTokens=function(){var a,b,c,d;return d=arguments[1],arguments.length>1?(c=/\]/g.exec(d),b=/\[/g.exec(d),b&&c?(d=d.slice(0,c.index)+d.slice(c.index+1),b=/\[/g.exec(d),d=d.slice(0,b.index)+d.slice(b.index+1),a=new RegExp("[\\["+d+"\\]]","g")):c?(d=d.slice(0,c.index)+d.slice(c.index+1),a=new RegExp("["+d+"\\]]","g")):b?(d=d.slice(0,b.index)+d.slice(b.index+1),a=new RegExp("["+d+"\\[]","g")):a=new RegExp("["+d+"]","g")):a=/\s/g,arguments[0].split(a).filter(function(a){return a})},h.prototype.trim=function(a){return a instanceof Array?a.map(this.trim):a.trim()},b.exports=h},{"../core/core":37}],76:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.day=function(){return(new Date).getDate()},d.prototype.hour=function(){return(new Date).getHours()},d.prototype.minute=function(){return(new Date).getMinutes()},d.prototype.millis=function(){return window.performance.now()},d.prototype.month=function(){return(new Date).getMonth()+1},d.prototype.second=function(){return(new Date).getSeconds()},d.prototype.year=function(){return(new Date).getFullYear()},b.exports=d},{"../core/core":37}],77:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.camera=function(a,b,c){for(var d=new Array(arguments.length),e=0;e0)if("v"===g[0]||"vn"===g[0]){var h=new e.Vector(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));c[g[0]].push(h)}else if("vt"===g[0]){var i=[parseFloat(g[1]),parseFloat(g[2])];c[g[0]].push(i)}else if("f"===g[0])for(var j=3;j0&&(this._renderer.geometryInHash(a.gid)||this._renderer.createBuffers(a.gid,a),this._renderer.drawBuffers(a.gid))},b.exports=e},{"../core/core":37,"./p5.Geometry":82}],81:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.normalMaterial=function(){return this._renderer._getShader("normalVert","normalFrag"),this},d.prototype.texture=function(){for(var a=new Array(arguments.length),b=0;bthis.vertices.length-1-this.detailX;b--)a.add(this.vertexNormals[b]);for(a=d.Vector.div(a,this.detailX),b=this.vertices.length-1;b>this.vertices.length-1-this.detailX;b--)this.vertexNormals[b]=a;return this},d.Geometry.prototype.normalize=function(){if(this.vertices.length>0){for(var a=this.vertices[0].copy(),b=this.vertices[0].copy(),c=0;c0?a.reduce(function(a,b){return a.concat(b)}):[]}function e(a){return d(a.map(function(a){return[a.x,a.y,a.z]}))}var f=a("../core/core"),g=0;f.RendererGL.prototype._initBufferDefaults=function(a){if(g++,g>1e3){var b=Object.keys(this.gHash)[0];delete this.gHash[b],g--}var c=this.GL;this.gHash[a]={},this.gHash[a].vertexBuffer=c.createBuffer(),this.gHash[a].normalBuffer=c.createBuffer(),this.gHash[a].uvBuffer=c.createBuffer(),this.gHash[a].indexBuffer=c.createBuffer()},f.RendererGL.prototype.createBuffers=function(a,b){var c=this.GL;this._setDefaultCamera(),this._initBufferDefaults(a);var f=this.mHash[this._getCurShaderId()];this.gHash[a].numberOfItems=3*b.faces.length,c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].vertexBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(e(b.vertices)),c.STATIC_DRAW),f.vertexPositionAttribute=c.getAttribLocation(f,"aPosition"),c.enableVertexAttribArray(f.vertexPositionAttribute),c.vertexAttribPointer(f.vertexPositionAttribute,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].normalBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(e(b.vertexNormals)),c.STATIC_DRAW),f.vertexNormalAttribute=c.getAttribLocation(f,"aNormal"),c.enableVertexAttribArray(f.vertexNormalAttribute),c.vertexAttribPointer(f.vertexNormalAttribute,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].uvBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(d(b.uvs)),c.STATIC_DRAW),f.textureCoordAttribute=c.getAttribLocation(f,"aTexCoord"),c.enableVertexAttribArray(f.textureCoordAttribute),c.vertexAttribPointer(f.textureCoordAttribute,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.gHash[a].indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(d(b.faces)),c.STATIC_DRAW)},f.RendererGL.prototype.drawBuffers=function(a){this._setDefaultCamera();var b=this.GL,c=this._getCurShaderId(),d=this.mHash[c];return b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].vertexBuffer),b.vertexAttribPointer(d.vertexPositionAttribute,3,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].normalBuffer),b.vertexAttribPointer(d.vertexNormalAttribute,3,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].uvBuffer),b.vertexAttribPointer(d.textureCoordAttribute,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this.gHash[a].indexBuffer),this._setMatrixUniforms(c),b.drawElements(b.TRIANGLES,this.gHash[a].numberOfItems,b.UNSIGNED_SHORT,0),this},b.exports=f.RendererGL},{"../core/core":37}],86:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./shader");a("../core/p5.Renderer"),a("./p5.Matrix");var f=[],g=1e3,h={alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1};d.RendererGL=function(a,b,c){return d.Renderer.call(this,a,b,c),this._initContext(),this.isP3D=!0,this.GL=this.drawingContext,this.ambientLightCount=0,this.directionalLightCount=0,this.pointLightCount=0,this._curCamera=null,this.uMVMatrix=new d.Matrix,this.uPMatrix=new d.Matrix,this.uNMatrix=new d.Matrix("mat3"),this.gHash={},this.mHash={},this.isImmediateDrawing=!1,this.immediateMode={},this.curFillColor=[.5,.5,.5,1],this.curStrokeColor=[.5,.5,.5,1],this.pointSize=5,this},d.RendererGL.prototype=Object.create(d.Renderer.prototype),d.RendererGL.prototype._initContext=function(){try{if(this.drawingContext=this.canvas.getContext("webgl",h)||this.canvas.getContext("experimental-webgl",h),null===this.drawingContext)throw new Error("Error creating webgl context");console.log("p5.RendererGL: enabled webgl context");var a=this.drawingContext;a.enable(a.DEPTH_TEST),a.depthFunc(a.LEQUAL),a.viewport(0,0,a.drawingBufferWidth,a.drawingBufferHeight)}catch(b){throw new Error(b)}},d.RendererGL.prototype._setDefaultCamera=function(){if(null===this._curCamera){var a=this.width,b=this.height;this.uPMatrix=d.Matrix.identity(),this.uPMatrix.perspective(60/180*Math.PI,a/b,.1,100),this._curCamera="default"}},d.RendererGL.prototype._update=function(){this.uMVMatrix=d.Matrix.identity(),this.translate(0,0,-(this.height/2)/Math.tan(30*Math.PI/180)),this.ambientLightCount=0,this.directionalLightCount=0,this.pointLightCount=0},d.RendererGL.prototype.background=function(){var a=this.GL,b=this._pInst.color.apply(this._pInst,arguments),c=b.levels[0]/255,d=b.levels[1]/255,e=b.levels[2]/255,f=b.levels[3]/255;a.clearColor(c,d,e,f),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},d.RendererGL.prototype._initShaders=function(a,b,c){var d=this.GL,f=d.createShader(d.VERTEX_SHADER);if(d.shaderSource(f,e[a]),d.compileShader(f),!d.getShaderParameter(f,d.COMPILE_STATUS))return alert("Yikes! An error occurred compiling the shaders:"+d.getShaderInfoLog(f)),null;var g=d.createShader(d.FRAGMENT_SHADER);if(d.shaderSource(g,e[b]),d.compileShader(g),!d.getShaderParameter(g,d.COMPILE_STATUS))return alert("Darn! An error occurred compiling the shaders:"+d.getShaderInfoLog(g)),null;var h=d.createProgram();return d.attachShader(h,f),d.attachShader(h,g),d.linkProgram(h),d.getProgramParameter(h,d.LINK_STATUS)||alert("Snap! Error linking shader program"),this._getLocation(h,c),h},d.RendererGL.prototype._getLocation=function(a,b){var c=this.GL;c.useProgram(a),a.uResolution=c.getUniformLocation(a,"uResolution"),c.uniform1f(a.uResolution,g),a.uPMatrixUniform=c.getUniformLocation(a,"uProjectionMatrix"),a.uMVMatrixUniform=c.getUniformLocation(a,"uModelViewMatrix"),void 0===b&&(a.uNMatrixUniform=c.getUniformLocation(a,"uNormalMatrix"),a.samplerUniform=c.getUniformLocation(a,"uSampler"))},d.RendererGL.prototype._setUniform1f=function(a,b,c){var d=this.GL,e=this.mHash[a];return d.useProgram(e),e[b]=d.getUniformLocation(e,b),d.uniform1f(e[b],c),this},d.RendererGL.prototype._setMatrixUniforms=function(a){var b=this.GL,c=this.mHash[a];b.useProgram(c),b.uniformMatrix4fv(c.uPMatrixUniform,!1,this.uPMatrix.mat4),b.uniformMatrix4fv(c.uMVMatrixUniform,!1,this.uMVMatrix.mat4),this.uNMatrix.inverseTranspose(this.uMVMatrix),b.uniformMatrix3fv(c.uNMatrixUniform,!1,this.uNMatrix.mat3)},d.RendererGL.prototype._getShader=function(a,b,c){var d=a+"|"+b;if(!this.materialInHash(d)){var e=this._initShaders(a,b,c);this.mHash[d]=e}return this.curShaderId=d,this.mHash[this.curShaderId]},d.RendererGL.prototype._getCurShaderId=function(){var a,b;return"fill"!==this.drawMode&&void 0===this.curShaderId?(a="normalVert|normalFrag",b=this._initShaders("normalVert","normalFrag"),this.mHash[a]=b,this.curShaderId=a):this.isImmediateDrawing&&"fill"===this.drawMode&&(a="immediateVert|vertexColorFrag",b=this._initShaders("immediateVert","vertexColorFrag"),this.mHash[a]=b,this.curShaderId=a),this.curShaderId},d.RendererGL.prototype.fill=function(a,b,c,d){var e,f=this.GL,g=this._applyColorBlend.apply(this,arguments);return this.curFillColor=g,this.drawMode="fill",this.isImmediateDrawing?(e=this._getShader("immediateVert","vertexColorFrag"),f.useProgram(e)):(e=this._getShader("normalVert","basicFrag"),f.useProgram(e),e.uMaterialColor=f.getUniformLocation(e,"uMaterialColor"),f.uniform4f(e.uMaterialColor,g[0],g[1],g[2],g[3])),this},d.RendererGL.prototype.stroke=function(a,b,c,d){var e=this._pInst.color.apply(this._pInst,arguments),f=e._array;return this.curStrokeColor=f,this.drawMode="stroke",this},d.RendererGL.prototype._strokeCheck=function(){if("stroke"===this.drawMode)throw new Error("stroke for shapes in 3D not yet implemented, use fill for now :(")},d.RendererGL.prototype.strokeWeight=function(a){return this.pointSize=a,this},d.RendererGL.prototype.geometryInHash=function(a){return void 0!==this.gHash[a]},d.RendererGL.prototype.materialInHash=function(a){return void 0!==this.mHash[a]},d.RendererGL.prototype.resize=function(a,b){var c=this.GL;d.Renderer.prototype.resize.call(this,a,b),c.viewport(0,0,c.drawingBufferWidth,c.drawingBufferHeight),"default"===this._curCamera&&(this._curCamera=null,this._setDefaultCamera())},d.RendererGL.prototype.clear=function(){var a=this.GL;a.clearColor(arguments[0],arguments[1],arguments[2],arguments[3]),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},d.RendererGL.prototype.translate=function(a,b,c){return a/=g,b=-b/g,c/=g,this.uMVMatrix.translate([a,b,c]),this},d.RendererGL.prototype.scale=function(a,b,c){return this.uMVMatrix.scale([a,b,c]),this},d.RendererGL.prototype.rotate=function(a,b){return this.uMVMatrix.rotate(a,b),this},d.RendererGL.prototype.rotateX=function(a){return this.rotate(a,[1,0,0]),this},d.RendererGL.prototype.rotateY=function(a){return this.rotate(a,[0,1,0]),this},d.RendererGL.prototype.rotateZ=function(a){return this.rotate(a,[0,0,1]),this},d.RendererGL.prototype.push=function(){f.push(this.uMVMatrix.copy())},d.RendererGL.prototype.pop=function(){if(0===f.length)throw new Error("Invalid popMatrix!");this.uMVMatrix=f.pop()},d.RendererGL.prototype.resetMatrix=function(){return this.uMVMatrix=d.Matrix.identity(),this.translate(0,0,-800),this},d.RendererGL.prototype._applyTextProperties=function(){console.error("text commands not yet implemented in webgl")},b.exports=d.RendererGL},{"../core/core":37,"../core/p5.Renderer":43,"./p5.Matrix":83,"./shader":88}],87:[function(a,b,c){"use strict";var d=a("../core/core");a("./p5.Geometry"),d.prototype.plane=function(){for(var a=new Array(arguments.length),b=0;bj;j++){var k=h[j],l=new d.Vector((2*(1&k)-1)*c/2,((2&k)-1)*e/2,((4&k)/2-1)*f/2);this.vertices.push(l),this.uvs.push([1&j,(2&j)/2]),b++}this.faces.push([i,i+1,i+2]),this.faces.push([i+2,i+1,i+3])}},k=new d.Geometry(g,h,j);k.computeNormals(),this._renderer.createBuffers(i,k)}return this._renderer.drawBuffers(i),this},d.prototype.sphere=function(){for(var a=new Array(arguments.length),b=0;be?3:e,f=1>f?1:f,g=void 0===g?!0:g,h=void 0===h?!0:h;var i,j,k=(g?2:0)+(h?2:0),l=e+1,m=Math.atan2(a-b,c),n=g?-2:0,o=f+(h?2:0);for(i=n;o>=i;++i){var p,q=i/f,r=c*q;for(0>i?(r=0,q=1,p=a):i>f?(r=c,q=1,p=b):p=a+(b-a)*(i/f),(-2===i||i===f+2)&&(p=0,q=0),r-=c/2,j=0;l>j;++j)this.vertices.push(new d.Vector(Math.sin(j*Math.PI*2/e)*p,r,Math.cos(j*Math.PI*2/e)*p)),this.vertexNormals.push(new d.Vector(0>i||i>f?0:Math.sin(j*Math.PI*2/e)*Math.cos(m),0>i?-1:i>f?1:Math.sin(m),0>i||i>f?0:Math.cos(j*Math.PI*2/e)*Math.cos(m))),this.uvs.push([j/e,q])}for(i=0;f+k>i;++i)for(j=0;e>j;++j)this.faces.push([l*(i+0)+0+j,l*(i+0)+1+j,l*(i+1)+1+j]),this.faces.push([l*(i+0)+0+j,l*(i+1)+1+j,l*(i+1)+0+j])};d.prototype.cylinder=function(){for(var a=new Array(arguments.length),b=0;b=e;e++)c[0]=Math.pow(1-e/b,3),c[1]=3*(e/b)*Math.pow(1-e/b,2),c[2]=3*Math.pow(e/b,2)*(1-e/b),c[3]=Math.pow(e/b,3),d[0]=a[0]*c[0]+a[3]*c[1]+a[6]*c[2]+a[9]*c[3],d[1]=a[1]*c[0]+a[4]*c[1]+a[7]*c[2]+a[10]*c[3],d[2]=a[2]*c[0]+a[5]*c[1]+a[8]*c[2]+a[11]*c[3],this.vertex(d[0],d[1],d[2]);return this.endShape(),this},d.RendererGL.prototype.curve=function(a){var b=a[12];this.beginShape();for(var c=[0,0,0,0],d=[0,0,0],e=0;b>=e;e++)c[0]=.5*Math.pow(e/b,3),c[1]=.5*Math.pow(e/b,2),c[2]=e/b*.5,c[3]=.5,d[0]=c[0]*(-a[0]+3*a[3]-3*a[6]+a[9])+c[1]*(2*a[0]-5*a[3]+4*a[6]-a[9])+c[2]*(-a[0]+a[6])+2*c[3]*a[3],d[1]=c[0]*(-a[1]+3*a[4]-3*a[7]+a[10])+c[1]*(2*a[1]-5*a[4]+4*a[7]-a[10])+c[2]*(-a[1]+a[7])+2*c[3]*a[4],d[2]=c[0]*(-a[2]+3*a[5]-3*a[8]+a[11])+c[1]*(2*a[2]-5*a[5]+4*a[8]-a[11])+c[2]*(-a[2]+a[8])+2*c[3]*a[5],this.vertex(d[0],d[1],d[2]);return this.endShape(),this},b.exports=d},{"../core/core":37,"./p5.Geometry":82}],88:[function(a,b,c){b.exports={immediateVert:"attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\nuniform float uPointSize;\n\nvarying vec4 vColor;\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution *vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n gl_PointSize = uPointSize;\n}\n",vertexColorVert:"attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n}\n",vertexColorFrag:"precision mediump float;\nvarying vec4 vColor;\nvoid main(void) {\n gl_FragColor = vColor;\n}",normalVert:"attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform float uResolution;\n\nvarying vec3 vVertexNormal;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vVertexNormal = vec3( uNormalMatrix * aNormal );\n vVertTexCoord = aTexCoord;\n}\n",normalFrag:"precision mediump float;\nvarying vec3 vVertexNormal;\nvoid main(void) {\n gl_FragColor = vec4(vVertexNormal, 1.0);\n}",basicFrag:"precision mediump float;\nvarying vec3 vVertexNormal;\nuniform vec4 uMaterialColor;\nvoid main(void) {\n gl_FragColor = uMaterialColor;\n}",lightVert:"attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform float uResolution;\nuniform int uAmbientLightCount;\nuniform int uDirectionalLightCount;\nuniform int uPointLightCount;\n\nuniform vec3 uAmbientColor[8];\nuniform vec3 uLightingDirection[8];\nuniform vec3 uDirectionalColor[8];\nuniform vec3 uPointLightLocation[8];\nuniform vec3 uPointLightColor[8];\nuniform bool uSpecular;\n\nvarying vec3 vVertexNormal;\nvarying vec2 vVertTexCoord;\nvarying vec3 vLightWeighting;\n\nvec3 ambientLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 directionalLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor2 = vec3(0.0, 0.0, 0.0);\n\nvoid main(void){\n\n vec4 positionVec4 = vec4(aPosition / uResolution, 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n\n vec3 vertexNormal = vec3( uNormalMatrix * aNormal );\n vVertexNormal = vertexNormal;\n vVertTexCoord = aTexCoord;\n\n vec4 mvPosition = uModelViewMatrix * vec4(aPosition / uResolution, 1.0);\n vec3 eyeDirection = normalize(-mvPosition.xyz);\n\n float shininess = 32.0;\n float specularFactor = 2.0;\n float diffuseFactor = 0.3;\n\n for(int i = 0; i < 8; i++){\n if(uAmbientLightCount == i) break;\n ambientLightFactor += uAmbientColor[i];\n }\n\n for(int j = 0; j < 8; j++){\n if(uDirectionalLightCount == j) break;\n vec3 dir = uLightingDirection[j];\n float directionalLightWeighting = max(dot(vertexNormal, dir), 0.0);\n directionalLightFactor += uDirectionalColor[j] * directionalLightWeighting;\n }\n\n for(int k = 0; k < 8; k++){\n if(uPointLightCount == k) break;\n vec3 loc = uPointLightLocation[k];\n //loc = loc / uResolution;\n vec3 lightDirection = normalize(loc - mvPosition.xyz);\n\n float directionalLightWeighting = max(dot(vertexNormal, lightDirection), 0.0);\n pointLightFactor += uPointLightColor[k] * directionalLightWeighting;\n\n //factor2 for specular\n vec3 reflectionDirection = reflect(-lightDirection, vertexNormal);\n float specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), shininess);\n\n pointLightFactor2 += uPointLightColor[k] * (specularFactor * specularLightWeighting\n + directionalLightWeighting * diffuseFactor);\n }\n\n if(!uSpecular){\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor;\n }else{\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor2;\n }\n\n}\n",lightTextureFrag:"precision mediump float;\n\nuniform vec4 uMaterialColor;\nuniform sampler2D uSampler;\nuniform bool isTexture;\n\nvarying vec3 vLightWeighting;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n if(!isTexture){\n gl_FragColor = vec4(vec3(uMaterialColor.rgb * vLightWeighting), uMaterialColor.a);\n }else{\n vec4 textureColor = texture2D(uSampler, vVertTexCoord);\n if(vLightWeighting == vec3(0., 0., 0.)){\n gl_FragColor = textureColor;\n }else{\n gl_FragColor = vec4(vec3(textureColor.rgb * vLightWeighting), textureColor.a);\n }\n }\n}"}},{}]},{},[28])(28)}); \ No newline at end of file diff --git a/src/p28-image-field/sketch.js b/src/p28-image-field/sketch.js new file mode 100644 index 0000000..b7b5d6a --- /dev/null +++ b/src/p28-image-field/sketch.js @@ -0,0 +1,39 @@ +// Paramètres +var fieldIntensity = 0.005; +var agentCount = 10; +var agentSize = 1.5; +var agentAlpha = 120; +var stepSize = 10; +///////////// + +var image; +var agents; +var field; + +function preload() { + image = loadImage('img/x.jpg'); // En appelant la fonction asynchrone 'loadImage' dans la méthode 'preload', on garantit que la suite du sketch ne s'exécutera qu'une fois l'image chargée +} + +function setup() { + createCanvas(540, 540); + agents = []; + var a; + for (var i = agentCount - 1; i >= 0; i--) { + a = createAgent(); + a.stepSize = stepSize; + agents.push(a); + }; + field = createImageField(fieldIntensity, image); + field.applyBlur(10); + background(255); +} + +function draw() { + agents.forEach(function(a) { + a.angle = field.getFieldValue(a.position); + a.updatePosition(); + stroke(0, agentAlpha); + strokeWeight(agentSize); + line(a.previousPosition.x, a.previousPosition.y, a.position.x, a.position.y); + }); +} \ No newline at end of file diff --git a/src/p29-arduino-server/agent.js b/src/p29-arduino-server/agent.js new file mode 100644 index 0000000..ed87765 --- /dev/null +++ b/src/p29-arduino-server/agent.js @@ -0,0 +1,60 @@ +// Un fonction 'usine' fabriquant un agent. Les options d'initialisation +// sont volontairement restreintes au maximum : la fonction ne prend +// qu'un argument (optionnel), permettant de spécifier la position +// de l'agent lors de sa création. +// +// La philosophie derrière ce choix est qu'il est très facile, +// si le besoin s'en fait sentir, de modifier 'manuellement' les +// propriétés de l'objet après sa création. L'option de créer directement +// l'agent à la position souhaitée est en revanche fournie car l'édition +// manuelle de la propriété 'position' présente des risques : on pourrait +// oublier de mettre à jour la copie 'previousPosition'. + +function createAgent(position) { + + // Création du nouvel objet 'Agent' + var a = {}; + + // Initialisation + a.position = typeof position !== 'undefined' ? position : createVector(random(width), random(height)); // Si aucune position n'est fournie, initialisation avec une position aléatoire + a.previousPosition = a.position.copy(); + a.angle = random(TWO_PI); + a.stepSize = 1; + a.isPositionResetWhenOutside = true; + + // Une méthode mettant à jour de la position de l'agent en fonction de son angle actuel + a.updatePosition = function() { + a.previousPosition = a.position.copy(); + a.position.x += cos(a.angle) * a.stepSize; + a.position.y += sin(a.angle) * a.stepSize; + if (a.isPositionResetWhenOutside && a.isOutsideSketch() > 0) { + a.position = createVector(random(width), random(height)); + a.previousPosition = a.position.copy(); + } + }; + + // Une méthode permettant de vérifier si l'agent est sorti des limites de l'espace du sketch (+ marges) + // La méthode renvoie les valeurs suivantes : + // 0: l'agent n'est pas sorti des limites de l'espace du sketch + // 1: l'agent est sorti par le haut + // 2: l'agent est sorti par la droite + // 3: l'agent est sorti par le bas + // 4: l'agent est sorti par la gauche + a.isOutsideSketch = function() { + if (a.position.y < 0) { + return 1; + } else if (a.position.x > width) { + return 2; + } else if (a.position.y > height) { + return 3; + } else if (a.position.x < 0) { + return 4; + } else { + return 0; + } + }; + + // Retour de l'objet 'Agent' + return a; + +} \ No newline at end of file diff --git a/src/p29-arduino-server/index.html b/src/p29-arduino-server/index.html new file mode 100644 index 0000000..b386d88 --- /dev/null +++ b/src/p29-arduino-server/index.html @@ -0,0 +1,14 @@ + + + + + arduino-server + + + + + + + + + \ No newline at end of file diff --git a/src/p29-arduino-server/lib/dat.gui.min.js b/src/p29-arduino-server/lib/dat.gui.min.js new file mode 100644 index 0000000..eef4257 --- /dev/null +++ b/src/p29-arduino-server/lib/dat.gui.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=o(i);e.exports=r["default"]},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(2),r=o(i),a=n(6),l=o(a),s=n(3),u=o(s),d=n(7),c=o(d),f=n(8),_=o(f),p=n(10),h=o(p),m=n(11),b=o(m),g=n(12),v=o(g),y=n(13),w=o(y),x=n(14),E=o(x),C=n(15),A=o(C),S=n(16),k=o(S),O=n(9),T=o(O),L=n(17),R=o(L);t["default"]={color:{Color:r["default"],math:l["default"],interpret:u["default"]},controllers:{Controller:c["default"],BooleanController:_["default"],OptionController:h["default"],StringController:b["default"],NumberController:v["default"],NumberControllerBox:w["default"],NumberControllerSlider:E["default"],FunctionController:A["default"],ColorController:k["default"]},dom:{dom:T["default"]},gui:{GUI:R["default"]},GUI:R["default"]}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(h.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(h.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(h.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(h.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}t.__esModule=!0;var l=n(3),s=o(l),u=n(6),d=o(u),c=n(4),f=o(c),_=n(5),p=o(_),h=function(){function e(){if(i(this,e),this.__state=s["default"].apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return e.prototype.toString=function(){return(0,f["default"])(this)},e.prototype.toOriginal=function(){return this.__state.conversion.write(this)},e}();h.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=d["default"].component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");p["default"].extend(e.__state,d["default"].hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},h.recalculateHSV=function(e){var t=d["default"].rgb_to_hsv(e.r,e.g,e.b);p["default"].extend(e.__state,{s:t.s,v:t.v}),p["default"].isNaN(t.h)?p["default"].isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},h.COMPONENTS=["r","g","b","h","s","v","hex","a"],r(h.prototype,"r",2),r(h.prototype,"g",1),r(h.prototype,"b",0),a(h.prototype,"h"),a(h.prototype,"s"),a(h.prototype,"v"),Object.defineProperty(h.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(h.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=d["default"].rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),t["default"]=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(4),r=o(i),a=n(5),l=o(a),s=[{litmus:l["default"].isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:r["default"]},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:r["default"]},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:r["default"]},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:r["default"]}}},{litmus:l["default"].isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:l["default"].isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:l["default"].isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b)&&l["default"].isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v)&&l["default"].isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],u=void 0,d=void 0,c=function(){d=!1;var e=arguments.length>1?l["default"].toArray(arguments):arguments[0];return l["default"].each(s,function(t){if(t.litmus(e))return l["default"].each(t.conversions,function(t,n){if(u=t.read(e),d===!1&&u!==!1)return d=u,u.conversionName=n,u.conversion=t,l["default"].BREAK}),l["default"].BREAK}),d};t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0,t["default"]=function(e){if(1===e.a||r["default"].isUndefined(e.a)){for(var t=e.hex.toString(16);t.length<6;)t="0"+t;return"#"+t}return"rgba("+Math.round(e.r)+","+Math.round(e.g)+","+Math.round(e.b)+","+e.a+")"};var i=n(5),r=o(i)},function(e,t){"use strict";t.__esModule=!0;var n=Array.prototype.forEach,o=Array.prototype.slice,i={BREAK:{},extend:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=o.call(arguments);return function(){for(var t=o.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(n&&e.forEach&&e.forEach===n)e.forEach(t,o);else if(e.length===e.length+0){var i=void 0,r=void 0;for(i=0,r=e.length;i>8*t&255},hex_with_component:function(e,t,o){return o<<(n=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}t.__esModule=!0;var s=n(7),u=o(s),d=n(5),c=o(d),f=function(e){function t(n,o,a){i(this,t);var s=r(this,e.call(this,n,o)),u=a||{};return s.__min=u.min,s.__max=u.max,s.__step=u.step,c["default"].isUndefined(s.__step)?0===s.initialValue?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=l(s.__impliedStep),s}return a(t,e),t.prototype.setValue=function(t){var n=t;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),e.prototype.setValue.call(this,n)},t.prototype.min=function(e){return this.__min=e,this},t.prototype.max=function(e){return this.__max=e,this},t.prototype.step=function(e){return this.__step=e,this.__impliedStep=e,this.__precision=l(e),this},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=n(5),_=o(f),p=function(e){function t(n,o,a){function l(){var e=parseFloat(h.__input.value);_["default"].isNaN(e)||h.setValue(e)}function s(){l(),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}function u(e){document.activeElement.blur();var t=m-e.clientY;h.setValue(h.getValue()+t*h.__impliedStep),m=e.clientY}function d(){c["default"].unbind(window,"mousemove",u),c["default"].unbind(window,"mouseup",d)}function f(e){c["default"].bind(window,"mousemove",u),c["default"].bind(window,"mouseup",d),m=e.clientY}i(this,t);var p=r(this,e.call(this,n,o,a));p.__truncationSuspended=!1;var h=p,m=void 0;return p.__input=document.createElement("input"),p.__input.setAttribute("type","text"),c["default"].bind(p.__input,"change",l),c["default"].bind(p.__input,"blur",s),c["default"].bind(p.__input,"mousedown",f),c["default"].bind(p.__input,"keydown",function(e){13===e.keyCode&&(h.__truncationSuspended=!0,this.blur(),h.__truncationSuspended=!1)}),p.updateDisplay(),p.domElement.appendChild(p.__input),p}return a(t,e),t.prototype.updateDisplay=function(){return c["default"].isActive(this.__input)?this:(this.__input.value=this.__truncationSuspended?this.getValue():l(this.getValue(),this.__precision),e.prototype.updateDisplay.call(this))},t}(u["default"]);t["default"]=p},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o,i){return o+(i-o)*((e-t)/(n-t))}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=function(e){function t(n,o,a,s,u){function d(e){document.activeElement.blur(),c["default"].bind(window,"mousemove",f),c["default"].bind(window,"mouseup",_),f(e)}function f(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(l(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function _(){c["default"].unbind(window,"mousemove",f),c["default"].unbind(window,"mouseup",_),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}i(this,t);var p=r(this,e.call(this,n,o,{min:a,max:s,step:u})),h=p;return p.__background=document.createElement("div"),p.__foreground=document.createElement("div"),c["default"].bind(p.__background,"mousedown",d),c["default"].addClass(p.__background,"slider"),c["default"].addClass(p.__foreground,"slider-fg"),p.updateDisplay(),p.__background.appendChild(p.__foreground),p.domElement.appendChild(p.__background),p}return a(t,e),t.prototype.updateDisplay=function(){var t=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*t+"%",e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=n(7),s=o(l),u=n(9),d=o(u),c=function(e){function t(n,o,a){i(this,t);var l=r(this,e.call(this,n,o)),s=l;return l.__button=document.createElement("div"),l.__button.innerHTML=void 0===a?"Fire":a,d["default"].bind(l.__button,"click",function(e){return e.preventDefault(),s.fire(),!1}),d["default"].addClass(l.__button,"button"),l.domElement.appendChild(l.__button),l}return a(t,e),t.prototype.fire=function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())},t}(s["default"]);t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o){e.style.background="",g["default"].each(y,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function s(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}t.__esModule=!0;var u=n(7),d=o(u),c=n(9),f=o(c),_=n(2),p=o(_),h=n(3),m=o(h),b=n(5),g=o(b),v=function(e){function t(n,o){function a(e){h(e),f["default"].bind(window,"mousemove",h),f["default"].bind(window,"mouseup",u)}function u(){f["default"].unbind(window,"mousemove",h),f["default"].unbind(window,"mouseup",u),_()}function d(){var e=(0,m["default"])(this.value);e!==!1?(y.__color.__state=e,y.setValue(y.__color.toOriginal())):this.value=y.__color.toString()}function c(){f["default"].unbind(window,"mousemove",b),f["default"].unbind(window,"mouseup",c),_()}function _(){y.__onFinishChange&&y.__onFinishChange.call(y,y.__color.toString())}function h(e){e.preventDefault();var t=y.__saturation_field.getBoundingClientRect(),n=(e.clientX-t.left)/(t.right-t.left),o=1-(e.clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),n>1?n=1:n<0&&(n=0),y.__color.v=o,y.__color.s=n,y.setValue(y.__color.toOriginal()),!1}function b(e){e.preventDefault();var t=y.__hue_field.getBoundingClientRect(),n=1-(e.clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),y.__color.h=360*n,y.setValue(y.__color.toOriginal()),!1}i(this,t);var v=r(this,e.call(this,n,o));v.__color=new p["default"](v.getValue()),v.__temp=new p["default"](0);var y=v;v.domElement=document.createElement("div"),f["default"].makeSelectable(v.domElement,!1),v.__selector=document.createElement("div"),v.__selector.className="selector",v.__saturation_field=document.createElement("div"),v.__saturation_field.className="saturation-field",v.__field_knob=document.createElement("div"),v.__field_knob.className="field-knob",v.__field_knob_border="2px solid ",v.__hue_knob=document.createElement("div"),v.__hue_knob.className="hue-knob",v.__hue_field=document.createElement("div"),v.__hue_field.className="hue-field",v.__input=document.createElement("input"),v.__input.type="text",v.__input_textShadow="0 1px 1px ",f["default"].bind(v.__input,"keydown",function(e){13===e.keyCode&&d.call(this)}),f["default"].bind(v.__input,"blur",d),f["default"].bind(v.__selector,"mousedown",function(){f["default"].addClass(this,"drag").bind(window,"mouseup",function(){f["default"].removeClass(y.__selector,"drag")})});var w=document.createElement("div");return g["default"].extend(v.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g["default"].extend(v.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:v.__field_knob_border+(v.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g["default"].extend(v.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g["default"].extend(v.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g["default"].extend(w.style,{width:"100%",height:"100%",background:"none"}),l(w,"top","rgba(0,0,0,0)","#000"),g["default"].extend(v.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),s(v.__hue_field),g["default"].extend(v.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:v.__input_textShadow+"rgba(0,0,0,0.7)"}),f["default"].bind(v.__saturation_field,"mousedown",a),f["default"].bind(v.__field_knob,"mousedown",a),f["default"].bind(v.__hue_field,"mousedown",function(e){b(e),f["default"].bind(window,"mousemove",b),f["default"].bind(window,"mouseup",c)}),v.__saturation_field.appendChild(w),v.__selector.appendChild(v.__field_knob),v.__selector.appendChild(v.__saturation_field),v.__selector.appendChild(v.__hue_field),v.__hue_field.appendChild(v.__hue_knob),v.domElement.appendChild(v.__input),v.domElement.appendChild(v.__selector),v.updateDisplay(),v}return a(t,e),t.prototype.updateDisplay=function(){var e=(0,m["default"])(this.getValue());if(e!==!1){var t=!1;g["default"].each(p["default"].COMPONENTS,function(n){if(!g["default"].isUndefined(e[n])&&!g["default"].isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&g["default"].extend(this.__color.__state,e)}g["default"].extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;g["default"].extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toString()),g["default"].extend(this.__input.style,{backgroundColor:this.__input.value=this.__color.toString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})},t}(d["default"]),y=["-moz-","-o-","-webkit-","-ms-",""];t["default"]=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function r(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];t?n.innerHTML=n.value+"*":n.innerHTML=n.value}function a(e,t,n){if(n.__li=t,n.__gui=e,G["default"].extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:o,factoryArgs:[G["default"].toArray(arguments)]})}if(G["default"].isArray(t)||G["default"].isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof j["default"])!function(){var e=new N["default"](n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});G["default"].each(["updateDisplay","onChange","onFinishChange","step"],function(t){var o=n[t],i=e[t];n[t]=e[t]=function(){var t=Array.prototype.slice.call(arguments);return i.apply(e,t),o.apply(n,t)}}),z["default"].addClass(t,"has-slider"),n.domElement.insertBefore(e.domElement,n.domElement.firstElementChild); +}();else if(n instanceof N["default"]){var o=function(t){if(G["default"].isNumber(n.__min)&&G["default"].isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=s(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=G["default"].compose(o,n.min),n.max=G["default"].compose(o,n.max)}else n instanceof O["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__checkbox,"click")}),z["default"].bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof L["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__button,"click")}),z["default"].bind(t,"mouseover",function(){z["default"].addClass(n.__button,"hover")}),z["default"].bind(t,"mouseout",function(){z["default"].removeClass(n.__button,"hover")})):n instanceof H["default"]&&(z["default"].addClass(t,"color"),n.updateDisplay=G["default"].compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=G["default"].compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&r(e.getRoot(),!0),t},n.setValue)}function l(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(o!==-1){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,a=void 0;if(r[e.preset])a=r[e.preset];else{if(!r[J])return;a=r[J]}if(a[o]&&void 0!==a[o][t.property]){var l=a[o][t.property];t.initialValue=l,t.setValue(l)}}}}function s(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new H["default"](t,n);else{var s=[t,n].concat(o.factoryArgs);r=C["default"].apply(e,s)}o.before instanceof S["default"]&&(o.before=o.before.__li),l(e,r),z["default"].addClass(r.domElement,"c");var u=document.createElement("span");z["default"].addClass(u,"property-name"),u.innerHTML=r.property;var d=document.createElement("div");d.appendChild(u),d.appendChild(r.domElement);var c=i(e,d,o.before);return z["default"].addClass(c,oe.CLASS_CONTROLLER_ROW),r instanceof H["default"]?z["default"].addClass(c,"color"):z["default"].addClass(c,g(r.getValue())),a(e,c,r),e.__controllers.push(r),r}function u(e,t){return document.location.href+"."+t}function d(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function c(e,t){t.style.display=e.useLocalStorage?"block":"none"}function f(e){var t=e.__save_row=document.createElement("li");z["default"].addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),z["default"].addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",z["default"].addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",z["default"].addClass(o,"button"),z["default"].addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",z["default"].addClass(i,"button"),z["default"].addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",z["default"].addClass(r,"button"),z["default"].addClass(r,"revert");var a=e.__preset_select=document.createElement("select");e.load&&e.load.remembered?G["default"].each(e.load.remembered,function(t,n){d(e,n,n===e.preset)}):d(e,J,!1),z["default"].bind(a,"change",function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=h(this)),e.folders={},G["default"].each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=h(this),r(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[J]=h(this,!0)),this.load.remembered[e]=h(this),this.preset=e,d(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){G["default"].each(this.__controllers,function(t){this.getRoot().load.remembered?l(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),G["default"].each(this.__folders,function(e){e.revert(e)}),e||r(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&b(this.__listening)},updateDisplay:function(){G["default"].each(this.__controllers,function(e){e.updateDisplay()}),G["default"].each(this.__folders,function(e){e.updateDisplay()})}}),e.exports=oe},function(e,t){"use strict";e.exports={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(r){}}}},function(e,t){e.exports="

Here's the new load parameter for your GUI's constructor:
Automatically save values to localStorage on exit.
The values saved to localStorage will override those passed to dat.GUI's constructor. This makes it easier to work incrementally, but localStorage is fragile, and your friends may not see the same values you do.
"},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(10),r=o(i),a=n(13),l=o(a),s=n(14),u=o(s),d=n(11),c=o(d),f=n(15),_=o(f),p=n(8),h=o(p),m=n(5),b=o(m),g=function(e,t){var n=e[t];return b["default"].isArray(arguments[2])||b["default"].isObject(arguments[2])?new r["default"](e,t,arguments[2]):b["default"].isNumber(n)?b["default"].isNumber(arguments[2])&&b["default"].isNumber(arguments[3])?b["default"].isNumber(arguments[4])?new u["default"](e,t,arguments[2],arguments[3],arguments[4]):new u["default"](e,t,arguments[2],arguments[3]):b["default"].isNumber(arguments[4])?new l["default"](e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new l["default"](e,t,{min:arguments[2],max:arguments[3]}):b["default"].isString(n)?new c["default"](e,t):b["default"].isFunction(n)?new _["default"](e,t,""):b["default"].isBoolean(n)?new h["default"](e,t):null};t["default"]=g},function(e,t){"use strict";function n(e){setTimeout(e,1e3/60)}t.__esModule=!0,t["default"]=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.__esModule=!0;var r=n(9),a=o(r),l=n(5),s=o(l),u=function(){function e(){i(this,e),this.backgroundElement=document.createElement("div"),s["default"].extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),a["default"].makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s["default"].extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;a["default"].bind(this.backgroundElement,"click",function(){t.hide()})}return e.prototype.show=function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s["default"].defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})},e.prototype.hide=function t(){var e=this,t=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",a["default"].unbind(e.domElement,"webkitTransitionEnd",n),a["default"].unbind(e.domElement,"transitionend",n),a["default"].unbind(e.domElement,"oTransitionEnd",n)};a["default"].bind(this.domElement,"webkitTransitionEnd",t),a["default"].bind(this.domElement,"transitionend",t),a["default"].bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"},e.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-a["default"].getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-a["default"].getHeight(this.domElement)/2+"px"},e}();t["default"]=u},function(e,t,n){t=e.exports=n(24)(),t.push([e.id,".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1!important}.dg.main .close-button.drag,.dg.main:hover .close-button{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;border:0;position:absolute;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-x:hidden}.dg.a.has-save>ul{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{position:fixed;top:0;z-index:1002}.dg li{-webkit-transition:height .1s ease-out;transition:height .1s ease-out}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;overflow:hidden;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid transparent}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:9px}.dg .c select{margin-top:5px}.dg .cr.boolean,.dg .cr.boolean *,.dg .cr.function,.dg .cr.function *,.dg .cr.function .property-name{cursor:pointer}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco,monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px Lucida Grande,sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid hsla(0,0%,100%,.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2fa1d6}.dg .cr.number input[type=text]{color:#2fa1d6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.boolean:hover,.dg .cr.function:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2fa1d6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t0,"No "+b+" specified.")}var c=[],d=this;b("familyName"),b("weightName"),b("manufacturer"),b("copyright"),b("version"),a(this.unitsPerEm>0,"No unitsPerEm specified.")},d.prototype.toTables=function(){return f.fontToTable(this)},d.prototype.toBuffer=function(){for(var a=this.toTables(),b=a.encode(),c=new ArrayBuffer(b.length),d=new Uint8Array(c),e=0;eD;D+=1){var E=l.getTag(m,C),F=l.getULong(m,C+8);switch(E){case"cmap":k.tables.cmap=n.parse(m,F),k.encoding=new i.CmapEncoding(k.tables.cmap),k.encoding||(k.supported=!1);break;case"head":k.tables.head=r.parse(m,F),k.unitsPerEm=k.tables.head.unitsPerEm,b=k.tables.head.indexToLocFormat;break;case"hhea":k.tables.hhea=s.parse(m,F),k.ascender=k.tables.hhea.ascender,k.descender=k.tables.hhea.descender,k.numberOfHMetrics=k.tables.hhea.numberOfHMetrics;break;case"hmtx":c=F;break;case"maxp":k.tables.maxp=w.parse(m,F),k.numGlyphs=k.tables.maxp.numGlyphs;break;case"name":k.tables.name=x.parse(m,F),k.familyName=k.tables.name.fontFamily,k.styleName=k.tables.name.fontSubfamily;break;case"OS/2":k.tables.os2=y.parse(m,F);break;case"post":k.tables.post=z.parse(m,F),k.glyphNames=new i.GlyphNames(k.tables.post);break;case"glyf":d=F;break;case"loca":e=F;break;case"CFF ":f=F;break;case"kern":g=F;break;case"GPOS":h=F}C+=16}if(d&&e){var G=0===b,H=v.parse(m,e,k.numGlyphs,G);k.glyphs=p.parse(m,d,H,k),t.parse(m,c,k.numberOfHMetrics,k.numGlyphs,k.glyphs),i.addGlyphNames(k)}else f?(o.parse(m,f,k),i.addGlyphNames(k)):k.supported=!1;return k.supported&&(g?k.kerningPairs=u.parse(m,g):k.kerningPairs={},h&&q.parse(m,h,k)),k}function h(a,b){var c="undefined"==typeof window,d=c?e:f;d(a,function(a,c){if(a)return b(a);var d=g(c);return d.supported?b(null,d):b("Font is not supported (is this a Postscript font?)")})}var i=a("./encoding"),j=a("./font"),k=a("./glyph"),l=a("./parse"),m=a("./path"),n=a("./tables/cmap"),o=a("./tables/cff"),p=a("./tables/glyf"),q=a("./tables/gpos"),r=a("./tables/head"),s=a("./tables/hhea"),t=a("./tables/hmtx"),u=a("./tables/kern"),v=a("./tables/loca"),w=a("./tables/maxp"),x=a("./tables/name"),y=a("./tables/os2"),z=a("./tables/post");c._parse=l,c.Font=j.Font,c.Glyph=k.Glyph,c.Path=m.Path,c.parse=g,c.load=h},{"./encoding":4,"./font":5,"./glyph":6,"./parse":9,"./path":10,"./tables/cff":12,"./tables/cmap":13,"./tables/glyf":14,"./tables/gpos":15,"./tables/head":16,"./tables/hhea":17,"./tables/hmtx":18,"./tables/kern":19,"./tables/loca":20,"./tables/maxp":21,"./tables/name":22,"./tables/os2":23,"./tables/post":24,fs:1}],9:[function(a,b,c){"use strict";function d(a,b){this.data=a,this.offset=b,this.relativeOffset=0}c.getByte=function(a,b){return a.getUint8(b)},c.getCard8=c.getByte,c.getUShort=function(a,b){return a.getUint16(b,!1)},c.getCard16=c.getUShort,c.getShort=function(a,b){return a.getInt16(b,!1)},c.getULong=function(a,b){return a.getUint32(b,!1)},c.getFixed=function(a,b){var c=a.getInt16(b,!1),d=a.getUint16(b+2,!1);return c+d/65535},c.getTag=function(a,b){for(var c="",d=b;b+4>d;d+=1)c+=String.fromCharCode(a.getInt8(d));return c},c.getOffset=function(a,b,c){for(var d=0,e=0;c>e;e+=1)d<<=8,d+=a.getUint8(b+e);return d},c.getBytes=function(a,b,c){for(var d=[],e=b;c>e;e+=1)d.push(a.getUint8(e));return d},c.bytesToString=function(a){for(var b="",c=0;cf;f++)b[f]=c.getUShort(d,e),e+=2;return this.relativeOffset+=2*a,b},d.prototype.parseString=function(a){var b=this.data,c=this.offset+this.relativeOffset,d="";this.relativeOffset+=a;for(var e=0;a>e;e++)d+=String.fromCharCode(b.getUint8(c+e));return d},d.prototype.parseTag=function(){return this.parseString(4)},d.prototype.parseLongDateTime=function(){var a=c.getULong(this.data,this.offset+this.relativeOffset+4);return this.relativeOffset+=8,a},d.prototype.parseFixed=function(){var a=c.getULong(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,a/65536},d.prototype.parseVersion=function(){var a=c.getUShort(this.data,this.offset+this.relativeOffset),b=c.getUShort(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,a+b/4096/10},d.prototype.skip=function(a,b){void 0===b&&(b=1),this.relativeOffset+=e[a]*b},c.Parser=d},{}],10:[function(a,b,c){"use strict";function d(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}d.prototype.moveTo=function(a,b){this.commands.push({type:"M",x:a,y:b})},d.prototype.lineTo=function(a,b){this.commands.push({type:"L",x:a,y:b})},d.prototype.curveTo=d.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.commands.push({type:"C",x1:a,y1:b,x2:c,y2:d,x:e,y:f})},d.prototype.quadTo=d.prototype.quadraticCurveTo=function(a,b,c,d){this.commands.push({type:"Q",x1:a,y1:b,x:c,y:d})},d.prototype.close=d.prototype.closePath=function(){this.commands.push({type:"Z"})},d.prototype.extend=function(a){a.commands&&(a=a.commands),Array.prototype.push.apply(this.commands,a)},d.prototype.draw=function(a){a.beginPath();for(var b=0;b=0&&c>0&&(a+=" "),a+=b(d)}return a}a=void 0!==a?a:2;for(var d="",e=0;ed;d+=1)g.push(J.getOffset(a,k,j)),k+=j;f=e+g[i]}else f=b+2;for(d=0;d>4,g=15&e;if(f===c)break;if(b+=d[f],g===c)break;b+=d[g]}return parseFloat(b)}function g(a,b){var c,d,e,g;if(28===b)return c=a.parseByte(),d=a.parseByte(),c<<8|d;if(29===b)return c=a.parseByte(),d=a.parseByte(),e=a.parseByte(),g=a.parseByte(),c<<24|d<<16|e<<8|g;if(30===b)return f(a);if(b>=32&&246>=b)return b-139;if(b>=247&&250>=b)return c=a.parseByte(),256*(b-247)+c+108;if(b>=251&&254>=b)return c=a.parseByte(),256*-(b-251)-c-108;throw new Error("Invalid b0 "+b)}function h(a){for(var b={},c=0;c=i?(12===i&&(i=1200+d.parseByte()),e.push([i,f]),f=[]):f.push(g(d,i))}return h(e)}function j(a,b){return b=390>=b?H.cffStandardStrings[b]:a[b-391]}function k(a,b,c){for(var d={},e=0;ee;e+=1)f=h.parseSID(),i.push(j(d,f));else if(1===k)for(;i.length<=c;)for(f=h.parseSID(),g=h.parseCard8(),e=0;g>=e;e+=1)i.push(j(d,f)),f+=1;else{if(2!==k)throw new Error("Unknown charset format "+k);for(;i.length<=c;)for(f=h.parseSID(),g=h.parseCard16(),e=0;g>=e;e+=1)i.push(j(d,f)),f+=1}return i}function p(a,b,c){var d,e,f={},g=new J.Parser(a,b),h=g.parseCard8();if(0===h){var i=g.parseCard8();for(d=0;i>d;d+=1)e=g.parseCard8(),f[e]=d}else{if(1!==h)throw new Error("Unknown encoding format "+h);var j=g.parseCard8();for(e=1,d=0;j>d;d+=1)for(var k=g.parseCard8(),l=g.parseCard8(),m=k;k+l>=m;m+=1)f[m]=e,e+=1}return new H.CffEncoding(f,c)}function q(a,b,c){function d(a,b){p&&k.closePath(),k.moveTo(a,b),p=!0}function e(){ +var b;b=l.length%2!==0,b&&!n&&(o=l.shift()+a.nominalWidthX),m+=l.length>>1,l.length=0,n=!0}function f(c){for(var s,t,u,v,w,x,y,z,A,B,C,D,E=0;E1&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),r+=l.pop(),d(q,r);break;case 5:for(;l.length>0;)q+=l.shift(),r+=l.shift(),k.lineTo(q,r);break;case 6:for(;l.length>0&&(q+=l.shift(),k.lineTo(q,r),0!==l.length);)r+=l.shift(),k.lineTo(q,r);break;case 7:for(;l.length>0&&(r+=l.shift(),k.lineTo(q,r),0!==l.length);)q+=l.shift(),k.lineTo(q,r);break;case 8:for(;l.length>0;)g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 10:w=l.pop()+a.subrsBias,x=a.subrs[w],x&&f(x);break;case 11:return;case 12:switch(F=c[E],E+=1,F){case 35:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j+l.shift(),A=y+l.shift(),B=z+l.shift(),C=A+l.shift(),D=B+l.shift(),q=C+l.shift(),r=D+l.shift(),l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 34:g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j,A=y+l.shift(),B=j,C=A+l.shift(),D=r,q=C+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 36:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j,A=y+l.shift(),B=j,C=A+l.shift(),D=B+l.shift(),q=C+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;case 37:g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),y=i+l.shift(),z=j+l.shift(),A=y+l.shift(),B=z+l.shift(),C=A+l.shift(),D=B+l.shift(),Math.abs(C-q)>Math.abs(D-r)?q=C+l.shift():r=D+l.shift(),k.curveTo(g,h,i,j,y,z),k.curveTo(A,B,C,D,q,r);break;default:console.log("Glyph "+b.index+": unknown operator 1200"+F),l.length=0}break;case 14:l.length>0&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),p&&(k.closePath(),p=!1);break;case 18:e();break;case 19:case 20:e(),E+=m+7>>3;break;case 21:l.length>2&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),r+=l.pop(),q+=l.pop(),d(q,r);break;case 22:l.length>1&&!n&&(o=l.shift()+a.nominalWidthX,n=!0),q+=l.pop(),d(q,r);break;case 23:e();break;case 24:for(;l.length>2;)g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);q+=l.shift(),r+=l.shift(),k.lineTo(q,r);break;case 25:for(;l.length>6;)q+=l.shift(),r+=l.shift(),k.lineTo(q,r);g=q+l.shift(),h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 26:for(l.length%2&&(q+=l.shift());l.length>0;)g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i,r=j+l.shift(),k.curveTo(g,h,i,j,q,r);break;case 27:for(l.length%2&&(r+=l.shift());l.length>0;)g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j,k.curveTo(g,h,i,j,q,r);break;case 28:s=c[E],t=c[E+1],l.push((s<<24|t<<16)>>16),E+=2;break;case 29:w=l.pop()+a.gsubrsBias,x=a.gsubrs[w],x&&f(x);break;case 30:for(;l.length>0&&(g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r),0!==l.length);)g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),r=j+l.shift(),q=i+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r);break;case 31:for(;l.length>0&&(g=q+l.shift(),h=r,i=g+l.shift(),j=h+l.shift(),r=j+l.shift(),q=i+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r),0!==l.length);)g=q,h=r+l.shift(),i=g+l.shift(),j=h+l.shift(),q=i+l.shift(),r=j+(1===l.length?l.shift():0),k.curveTo(g,h,i,j,q,r);break;default:32>F?console.log("Glyph "+b.index+": unknown operator "+F):247>F?l.push(F-139):251>F?(s=c[E],E+=1,l.push(256*(F-247)+s+108)):255>F?(s=c[E],E+=1,l.push(256*-(F-251)-s-108)):(s=c[E],t=c[E+1],u=c[E+2],v=c[E+3],E+=4,l.push((s<<24|t<<16|u<<8|v)/65536))}}}var g,h,i,j,k=new K.Path,l=[],m=0,n=!1,o=a.defaultWidthX,p=!1,q=0,r=0;return f(c),b.advanceWidth=o,k}function r(a){var b;return b=a.length<1240?107:a.length<33900?1131:32768}function s(a,b,c){c.tables.cff={};var d=l(a,b),f=e(a,d.endOffset,J.bytesToString),g=e(a,f.endOffset),h=e(a,g.endOffset,J.bytesToString),i=e(a,h.endOffset);c.gsubrs=i.objects,c.gsubrsBias=r(c.gsubrs);var j=new DataView(new Uint8Array(g.objects[0]).buffer),k=m(j,h.objects);c.tables.cff.topDict=k;var s=b+k["private"][1],t=n(a,s,k["private"][0],h.objects);if(c.defaultWidthX=t.defaultWidthX,c.nominalWidthX=t.nominalWidthX,0!==t.subrs){var u=s+t.subrs,v=e(a,u);c.subrs=v.objects,c.subrsBias=r(c.subrs)}else c.subrs=[],c.subrsBias=0;var w=e(a,b+k.charStrings);c.nGlyphs=w.objects.length;var x=o(a,b+k.charset,c.nGlyphs,h.objects);0===k.encoding?c.cffEncoding=new H.CffEncoding(H.cffStandardEncoding,x):1===k.encoding?c.cffEncoding=new H.CffEncoding(H.cffExpertEncoding,x):c.cffEncoding=p(a,b+k.encoding,x),c.encoding=c.encoding||c.cffEncoding,c.glyphs=new I.GlyphSet(c);for(var y=0;y=0&&(c=d),d=b.indexOf(a),d>=0?c=d+H.cffStandardStrings.length:(c=H.cffStandardStrings.length+b.length,b.push(a)),c}function u(){return new L.Table("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function v(a){var b=new L.Table("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);b.names=[];for(var c=0;c>1,j.skip("uShort",3),d.glyphIndexMap={};var l=new i.Parser(a,b+e+14),m=new i.Parser(a,b+e+16+2*k),n=new i.Parser(a,b+e+16+4*k),o=new i.Parser(a,b+e+16+6*k),p=b+e+16+8*k;for(c=0;k-1>c;c+=1)for(var q,r=l.parseUShort(),s=m.parseUShort(),t=n.parseShort(),u=o.parseUShort(),v=s;r>=v;v+=1)0!==u?(p=o.offset+o.relativeOffset-2,p+=u,p+=2*(v-s),q=i.getUShort(a,p),0!==q&&(q=q+t&65535)):q=v+t&65535,d.glyphIndexMap[v]=q;return d}function e(a,b,c){a.segments.push({end:b,start:b,delta:-(b-c),offset:0})}function f(a){a.segments.push({end:65535,start:65535,delta:1,offset:0})}function g(a){var b,c=new j.Table("cmap",[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:1},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:12},{name:"format",type:"USHORT",value:4},{name:"length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);for(c.segments=[],b=0;bb;b+=1){var o=c.segments[b];i=i.concat({name:"end_"+b,type:"USHORT",value:o.end}),k=k.concat({name:"start_"+b,type:"USHORT",value:o.start}),l=l.concat({name:"idDelta_"+b,type:"SHORT",value:o.delta}),m=m.concat({name:"idRangeOffset_"+b,type:"USHORT",value:o.offset}),void 0!==o.glyphId&&(n=n.concat({name:"glyph_"+b,type:"USHORT",value:o.glyphId}))}return c.fields=c.fields.concat(i),c.fields.push({name:"reservedPad",type:"USHORT",value:0}),c.fields=c.fields.concat(k),c.fields=c.fields.concat(l),c.fields=c.fields.concat(m),c.fields=c.fields.concat(n),c.length=14+2*i.length+2+2*k.length+2*l.length+2*m.length+2*n.length,c}var h=a("../check"),i=a("../parse"),j=a("../table");c.parse=d,c.make=g},{"../check":2,"../parse":9,"../table":11}],14:[function(a,b,c){"use strict";function d(a,b,c,d,e){var f;return(b&d)>0?(f=a.parseByte(),0===(b&e)&&(f=-f),f=c+f):f=(b&e)>0?c:c+a.parseShort(),f}function e(a,b,c){var e=new m.Parser(b,c);a.numberOfContours=e.parseShort(),a.xMin=e.parseShort(),a.yMin=e.parseShort(),a.xMax=e.parseShort(),a.yMax=e.parseShort();var f,g;if(a.numberOfContours>0){var h,i=a.endPointIndices=[];for(h=0;hh;h+=1)if(g=e.parseByte(),f.push(g),(8&g)>0)for(var l=e.parseByte(),n=0;l>n;n+=1)f.push(g),h+=1;if(k.argument(f.length===j,"Bad flags."),i.length>0){var o,p=[];if(j>0){for(h=0;j>h;h+=1)g=f[h],o={},o.onCurve=!!(1&g),o.lastPointOfContour=i.indexOf(h)>=0,p.push(o);var q=0;for(h=0;j>h;h+=1)g=f[h],o=p[h],o.x=d(e,g,q,2,16),q=o.x;var r=0;for(h=0;j>h;h+=1)g=f[h],o=p[h],o.y=d(e,g,r,4,32),r=o.y}a.points=p}else a.points=[]}else if(0===a.numberOfContours)a.points=[];else{a.isComposite=!0,a.points=[],a.components=[];for(var s=!0;s;){f=e.parseUShort();var t={glyphIndex:e.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(1&f)>0?(t.dx=e.parseShort(),t.dy=e.parseShort()):(t.dx=e.parseChar(),t.dy=e.parseChar()),(8&f)>0?t.xScale=t.yScale=e.parseF2Dot14():(64&f)>0?(t.xScale=e.parseF2Dot14(),t.yScale=e.parseF2Dot14()):(128&f)>0&&(t.xScale=e.parseF2Dot14(),t.scale01=e.parseF2Dot14(),t.scale10=e.parseF2Dot14(),t.yScale=e.parseF2Dot14()),a.components.push(t),s=!!(32&f)}}}function f(a,b){for(var c=[],d=0;df;f++)e[c.parseTag()]={offset:c.parseUShort()};return e}function e(a,b){var c=new k.Parser(a,b),d=c.parseUShort(),e=c.parseUShort();if(1===d)return c.parseUShortList(e);if(2===d){for(var f=[];e--;)for(var g=c.parseUShort(),h=c.parseUShort(),i=c.parseUShort(),j=g;h>=j;j++)f[i++]=j;return f}}function f(a,b){var c=new k.Parser(a,b),d=c.parseUShort();if(1===d){var e=c.parseUShort(),f=c.parseUShort(),g=c.parseUShortList(f);return function(a){return g[a-e]||0}}if(2===d){for(var h=c.parseUShort(),i=[],j=[],l=[],m=0;h>m;m++)i[m]=c.parseUShort(),j[m]=c.parseUShort(),l[m]=c.parseUShort();return function(a){for(var b=0,c=i.length-1;c>b;){var d=b+c+1>>1;ar;r++){var s=q[r],t=n[s];if(!t){t={},g.relativeOffset=s;for(var u=g.parseUShort();u--;){var v=g.parseUShort();l&&(c=g.parseShort()),m&&(d=g.parseShort()),t[v]=c}}p[j[r]]=t}return function(a,b){var c=p[a];return c?c[b]:void 0}}if(2===h){for(var w=g.parseUShort(),x=g.parseUShort(),y=g.parseUShort(),z=g.parseUShort(),A=f(a,b+w),B=f(a,b+x),C=[],D=0;y>D;D++)for(var E=C[D]=[],F=0;z>F;F++)l&&(c=g.parseShort()),m&&(d=g.parseShort()),E[F]=c;var G={};for(D=0;Dm;m++)l.push(g(a,b+i[m]));j.getKerningValue=function(a,b){for(var c=l.length;c--;){var d=l[c](a,b);if(void 0!==d)return d}return 0}}return j}function i(a,b,c){var e=new k.Parser(a,b),f=e.parseFixed();j.argument(1===f,"Unsupported GPOS table version."),d(a,b+e.parseUShort()),d(a,b+e.parseUShort());var g=e.parseUShort();e.relativeOffset=g;for(var i=e.parseUShort(),l=e.parseOffset16List(i),m=b+g,n=0;i>n;n++){var o=h(a,m+l[n]);2!==o.lookupType||c.getGposKerningValue||(c.getGposKerningValue=o.getKerningValue)}}var j=a("../check"),k=a("../parse");c.parse=i},{"../check":2,"../parse":9}],16:[function(a,b,c){"use strict";function d(a,b){var c={},d=new g.Parser(a,b);return c.version=d.parseVersion(),c.fontRevision=Math.round(1e3*d.parseFixed())/1e3,c.checkSumAdjustment=d.parseULong(),c.magicNumber=d.parseULong(),f.argument(1594834165===c.magicNumber,"Font header has wrong magic number."),c.flags=d.parseUShort(),c.unitsPerEm=d.parseUShort(),c.created=d.parseLongDateTime(),c.modified=d.parseLongDateTime(),c.xMin=d.parseShort(),c.yMin=d.parseShort(),c.xMax=d.parseShort(),c.yMax=d.parseShort(),c.macStyle=d.parseUShort(),c.lowestRecPPEM=d.parseUShort(),c.fontDirectionHint=d.parseShort(),c.indexToLocFormat=d.parseShort(),c.glyphDataFormat=d.parseShort(),c}function e(a){return new h.Table("head",[{name:"version",type:"FIXED",value:65536},{name:"fontRevision",type:"FIXED",value:65536},{name:"checkSumAdjustment",type:"ULONG",value:0},{name:"magicNumber",type:"ULONG",value:1594834165},{name:"flags",type:"USHORT",value:0},{name:"unitsPerEm",type:"USHORT",value:1e3},{name:"created",type:"LONGDATETIME",value:0},{name:"modified",type:"LONGDATETIME",value:0},{name:"xMin",type:"SHORT",value:0},{name:"yMin",type:"SHORT",value:0},{name:"xMax",type:"SHORT",value:0},{name:"yMax",type:"SHORT",value:0},{name:"macStyle",type:"USHORT",value:0},{name:"lowestRecPPEM",type:"USHORT",value:0},{name:"fontDirectionHint",type:"SHORT",value:2},{name:"indexToLocFormat",type:"SHORT",value:0},{name:"glyphDataFormat",type:"SHORT",value:0}],a)}var f=a("../check"),g=a("../parse"),h=a("../table");c.parse=d,c.make=e},{"../check":2,"../parse":9,"../table":11}],17:[function(a,b,c){"use strict";function d(a,b){var c={},d=new f.Parser(a,b);return c.version=d.parseVersion(),c.ascender=d.parseShort(),c.descender=d.parseShort(),c.lineGap=d.parseShort(),c.advanceWidthMax=d.parseUShort(),c.minLeftSideBearing=d.parseShort(),c.minRightSideBearing=d.parseShort(),c.xMaxExtent=d.parseShort(),c.caretSlopeRise=d.parseShort(),c.caretSlopeRun=d.parseShort(),c.caretOffset=d.parseShort(),d.relativeOffset+=8,c.metricDataFormat=d.parseShort(),c.numberOfHMetrics=d.parseUShort(),c}function e(a){return new g.Table("hhea",[{name:"version",type:"FIXED",value:65536},{name:"ascender",type:"FWORD",value:0},{name:"descender",type:"FWORD",value:0},{name:"lineGap",type:"FWORD",value:0},{name:"advanceWidthMax",type:"UFWORD",value:0},{name:"minLeftSideBearing",type:"FWORD",value:0},{name:"minRightSideBearing",type:"FWORD",value:0},{name:"xMaxExtent",type:"FWORD",value:0},{name:"caretSlopeRise",type:"SHORT",value:1},{name:"caretSlopeRun",type:"SHORT",value:0},{name:"caretOffset",type:"SHORT",value:0},{name:"reserved1",type:"SHORT",value:0},{name:"reserved2",type:"SHORT",value:0},{name:"reserved3",type:"SHORT",value:0},{name:"reserved4",type:"SHORT",value:0},{name:"metricDataFormat",type:"SHORT",value:0},{name:"numberOfHMetrics",type:"USHORT",value:0}],a)}var f=a("../parse"),g=a("../table");c.parse=d,c.make=e},{"../parse":9,"../table":11}],18:[function(a,b,c){"use strict";function d(a,b,c,d,e){for(var g,h,i=new f.Parser(a,b),j=0;d>j;j+=1){c>j&&(g=i.parseUShort(),h=i.parseShort());var k=e.get(j);k.advanceWidth=g,k.leftSideBearing=h}}function e(a){for(var b=new g.Table("hmtx",[]),c=0;cj;j+=1){var k=d.parseUShort(),l=d.parseUShort(),m=d.parseShort();c[k+","+l]=m}return c}var e=a("../check"),f=a("../parse");c.parse=d},{"../check":2,"../parse":9}],20:[function(a,b,c){"use strict";function d(a,b,c,d){for(var f=new e.Parser(a,b),g=d?f.parseUShort:f.parseULong,h=[],i=0;c+1>i;i+=1){var j=g.call(f);d&&(j*=2),h.push(j)}return h}var e=a("../parse");c.parse=d},{"../parse":9}],21:[function(a,b,c){"use strict";function d(a,b){var c={},d=new f.Parser(a,b);return c.version=d.parseVersion(),c.numGlyphs=d.parseUShort(),1===c.version&&(c.maxPoints=d.parseUShort(),c.maxContours=d.parseUShort(),c.maxCompositePoints=d.parseUShort(),c.maxCompositeContours=d.parseUShort(),c.maxZones=d.parseUShort(),c.maxTwilightPoints=d.parseUShort(),c.maxStorage=d.parseUShort(),c.maxFunctionDefs=d.parseUShort(),c.maxInstructionDefs=d.parseUShort(),c.maxStackElements=d.parseUShort(),c.maxSizeOfInstructions=d.parseUShort(),c.maxComponentElements=d.parseUShort(),c.maxComponentDepth=d.parseUShort()),c}function e(a){return new g.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:a}])}var f=a("../parse"),g=a("../table");c.parse=d,c.make=e},{"../parse":9,"../table":11}],22:[function(a,b,c){"use strict";function d(a,b){var c={},d=new j.Parser(a,b);c.format=d.parseUShort();for(var e=d.parseUShort(),f=d.offset+d.parseUShort(),g=0,h=0;e>h;h++){var i=d.parseUShort(),k=d.parseUShort(),m=d.parseUShort(),n=d.parseUShort(),o=l[n],p=d.parseUShort(),q=d.parseUShort();if(3===i&&1===k&&1033===m){for(var r=[],s=p/2,t=0;s>t;t++,q+=2)r[t]=j.getShort(a,f+q);var u=String.fromCharCode.apply(null,r);o?c[o]=u:(g++,c["unknown"+g]=u)}}return 1===c.format&&(c.langTagCount=d.parseUShort()),c}function e(a,b,c,d,e,f){return new k.Table("NameRecord",[{name:"platformID",type:"USHORT",value:a},{name:"encodingID",type:"USHORT",value:b},{name:"languageID",type:"USHORT",value:c},{name:"nameID",type:"USHORT",value:d},{name:"length",type:"USHORT",value:e},{name:"offset",type:"USHORT",value:f}])}function f(a,b,c,d){var f=i.STRING(c);return a.records.push(e(1,0,0,b,f.length,d)),a.strings.push(f),d+=f.length}function g(a,b,c,d){var f=i.UTF16(c);return a.records.push(e(3,1,1033,b,f.length,d)),a.strings.push(f),d+=f.length}function h(a){var b=new k.Table("name",[{name:"format",type:"USHORT",value:0},{name:"count",type:"USHORT",value:0},{name:"stringOffset",type:"USHORT",value:0}]);b.records=[],b.strings=[];var c,d,e=0;for(c=0;c=c.begin&&ae;e++)c.panose[e]=d.parseByte();return c.ulUnicodeRange1=d.parseULong(),c.ulUnicodeRange2=d.parseULong(),c.ulUnicodeRange3=d.parseULong(),c.ulUnicodeRange4=d.parseULong(),c.achVendID=String.fromCharCode(d.parseByte(),d.parseByte(),d.parseByte(),d.parseByte()),c.fsSelection=d.parseUShort(),c.usFirstCharIndex=d.parseUShort(),c.usLastCharIndex=d.parseUShort(),c.sTypoAscender=d.parseShort(),c.sTypoDescender=d.parseShort(),c.sTypoLineGap=d.parseShort(),c.usWinAscent=d.parseUShort(),c.usWinDescent=d.parseUShort(),c.version>=1&&(c.ulCodePageRange1=d.parseULong(),c.ulCodePageRange2=d.parseULong()),c.version>=2&&(c.sxHeight=d.parseShort(),c.sCapHeight=d.parseShort(),c.usDefaultChar=d.parseUShort(),c.usBreakChar=d.parseUShort(),c.usMaxContent=d.parseUShort()),c}function f(a){return new h.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],a)}var g=a("../parse"),h=a("../table"),i=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584, +end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];c.unicodeRanges=i,c.getUnicodeRange=d,c.parse=e,c.make=f},{"../parse":9,"../table":11}],24:[function(a,b,c){"use strict";function d(a,b){var c,d={},e=new g.Parser(a,b);switch(d.version=e.parseVersion(),d.italicAngle=e.parseFixed(),d.underlinePosition=e.parseShort(),d.underlineThickness=e.parseShort(),d.isFixedPitch=e.parseULong(),d.minMemType42=e.parseULong(),d.maxMemType42=e.parseULong(),d.minMemType1=e.parseULong(),d.maxMemType1=e.parseULong(),d.version){case 1:d.names=f.standardNames.slice();break;case 2:for(d.numberOfGlyphs=e.parseUShort(),d.glyphNameIndex=new Array(d.numberOfGlyphs),c=0;c=f.standardNames.length){var h=e.parseChar();d.names.push(e.parseString(h))}break;case 2.5:for(d.numberOfGlyphs=e.parseUShort(),d.offset=new Array(d.numberOfGlyphs),c=0;cb.value.tag?1:-1}),b.fields=b.fields.concat(g),b.fields=b.fields.concat(h),b}function h(a,b,c){for(var d=0;d0){var f=a.glyphs.get(e);return f.getMetrics()}}return c}function i(a){for(var b=0,c=0;cD||null===b)&&(b=D),D>w&&(w=D);var E=t.getUnicodeRange(D);if(32>E)x|=1<E)y|=1<E)z|=1<E))throw new Error("Unicode ranges bits > 123 are reserved for internal usage");A|=1<=0&&255>=a,"Byte value should be between 0 and 255."),[a]},j.BYTE=d(1),i.CHAR=function(a){return[a.charCodeAt(0)]},j.BYTE=d(1),i.CHARARRAY=function(a){for(var b=[],c=0;c>8&255,255&a]},j.USHORT=d(2),i.SHORT=function(a){return a>=f&&(a=-(2*f-a)),[a>>8&255,255&a]},j.SHORT=d(2),i.UINT24=function(a){return[a>>16&255,a>>8&255,255&a]},j.UINT24=d(3),i.ULONG=function(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]},j.ULONG=d(4),i.LONG=function(a){return a>=g&&(a=-(2*g-a)),[a>>24&255,a>>16&255,a>>8&255,255&a]},j.LONG=d(4),i.FIXED=i.ULONG,j.FIXED=j.ULONG,i.FWORD=i.SHORT,j.FWORD=j.SHORT,i.UFWORD=i.USHORT,j.UFWORD=j.USHORT,i.LONGDATETIME=function(){return[0,0,0,0,0,0,0,0]},j.LONGDATETIME=d(8),i.TAG=function(a){return e.argument(4===a.length,"Tag should be exactly 4 ASCII characters."),[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)]},j.TAG=d(4),i.Card8=i.BYTE,j.Card8=j.BYTE,i.Card16=i.USHORT,j.Card16=j.USHORT,i.OffSize=i.BYTE,j.OffSize=j.BYTE,i.SID=i.USHORT,j.SID=j.USHORT,i.NUMBER=function(a){return a>=-107&&107>=a?[a+139]:a>=108&&1131>=a?(a-=108,[(a>>8)+247,255&a]):a>=-1131&&-108>=a?(a=-a-108,[(a>>8)+251,255&a]):a>=-32768&&32767>=a?i.NUMBER16(a):i.NUMBER32(a)},j.NUMBER=function(a){return i.NUMBER(a).length},i.NUMBER16=function(a){return[28,a>>8&255,255&a]},j.NUMBER16=d(2),i.NUMBER32=function(a){return[29,a>>24&255,a>>16&255,a>>8&255,255&a]},j.NUMBER32=d(4),i.REAL=function(a){var b=a.toString(),c=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(b);if(c){var d=parseFloat("1e"+((c[2]?+c[2]:0)+c[1].length));b=(Math.round(a*d)/d).toString()}var e,f,g="";for(e=0,f=b.length;f>e;e+=1){var h=b[e];g+="e"===h?"-"===b[++e]?"c":"b":"."===h?"a":"-"===h?"e":h}g+=1&g.length?"f":"ff";var i=[30];for(e=0,f=g.length;f>e;e+=2)i.push(parseInt(g.substr(e,2),16));return i},j.REAL=function(a){return i.REAL(a).length},i.NAME=i.CHARARRAY,j.NAME=j.CHARARRAY,i.STRING=i.CHARARRAY,j.STRING=j.CHARARRAY,i.UTF16=function(a){for(var b=[],c=0;ce;e+=1){var f=parseInt(c[e],0),g=a[f];b=b.concat(i.OPERAND(g.value,g.type)),b=b.concat(i.OPERATOR(f))}return b},j.DICT=function(a){return i.DICT(a).length},i.OPERATOR=function(a){return 1200>a?[a]:[12,a-1200]},i.OPERAND=function(a,b){var c=[];if(Array.isArray(b))for(var d=0;dd;d+=1){var e=a[d];b=b.concat(i[e.type](e.value))}return k&&k.set(a,b),b},j.CHARSTRING=function(a){return i.CHARSTRING(a).length},i.OBJECT=function(a){var b=i[a.type];return e.argument(void 0!==b,"No encoding function for type "+a.type),b(a.value)},i.TABLE=function(a){for(var b=[],c=a.fields.length,d=0;c>d;d+=1){var f=a.fields[d],g=i[f.type];e.argument(void 0!==g,"No encoding function for field type "+f.type);var h=a[f.name];void 0===h&&(h=f.value);var j=g(h);b=b.concat(j)}return b},i.LITERAL=function(a){return a},j.LITERAL=function(a){return a.length},c.decode=h,c.encode=i,c.sizeOf=j},{"./check":2}],27:[function(_dereq_,module,exports){!function(a,b,c){"undefined"!=typeof module&&module.exports?module.exports=c():"function"==typeof define&&define.amd?define(c):b[a]=c()}("reqwest",this,function(){function succeed(a){var b=protocolRe.exec(a.url);return b=b&&b[1]||window.location.protocol,httpsRe.test(b)?twoHundo.test(a.request.status):!!a.request.response}function handleReadyState(a,b,c){return function(){return a._aborted?c(a.request):a._timedOut?c(a.request,"Request is aborted: timeout"):void(a.request&&4==a.request[readyState]&&(a.request.onreadystatechange=noop,succeed(a)?b(a.request):c(a.request)))}}function setHeaders(a,b){var c,d=b.headers||{};d.Accept=d.Accept||defaultHeaders.accept[b.type]||defaultHeaders.accept["*"];var e="function"==typeof FormData&&b.data instanceof FormData;b.crossOrigin||d[requestedWith]||(d[requestedWith]=defaultHeaders.requestedWith),d[contentType]||e||(d[contentType]=b.contentType||defaultHeaders.contentType);for(c in d)d.hasOwnProperty(c)&&"setRequestHeader"in a&&a.setRequestHeader(c,d[c])}function setCredentials(a,b){"undefined"!=typeof b.withCredentials&&"undefined"!=typeof a.withCredentials&&(a.withCredentials=!!b.withCredentials)}function generalCallback(a){lastValue=a}function urlappend(a,b){return a+(/\?/.test(a)?"&":"?")+b}function handleJsonp(a,b,c,d){var e=uniqid++,f=a.jsonpCallback||"callback",g=a.jsonpCallbackName||reqwest.getcallbackPrefix(e),h=new RegExp("((^|\\?|&)"+f+")=([^&]+)"),i=d.match(h),j=doc.createElement("script"),k=0,l=-1!==navigator.userAgent.indexOf("MSIE 10.0");return i?"?"===i[3]?d=d.replace(h,"$1="+g):g=i[3]:d=urlappend(d,f+"="+g),win[g]=generalCallback,j.type="text/javascript",j.src=d,j.async=!0,"undefined"==typeof j.onreadystatechange||l||(j.htmlFor=j.id="_reqwest_"+e),j.onload=j.onreadystatechange=function(){return j[readyState]&&"complete"!==j[readyState]&&"loaded"!==j[readyState]||k?!1:(j.onload=j.onreadystatechange=null,j.onclick&&j.onclick(),b(lastValue),lastValue=void 0,head.removeChild(j),void(k=1))},head.appendChild(j),{abort:function(){j.onload=j.onreadystatechange=null,c({},"Request is aborted: timeout",{}),lastValue=void 0,head.removeChild(j),k=1}}}function getRequest(a,b){var c,d=this.o,e=(d.method||"GET").toUpperCase(),f="string"==typeof d?d:d.url,g=d.processData!==!1&&d.data&&"string"!=typeof d.data?reqwest.toQueryString(d.data):d.data||null,h=!1;return"jsonp"!=d.type&&"GET"!=e||!g||(f=urlappend(f,g),g=null),"jsonp"==d.type?handleJsonp(d,a,b,f):(c=d.xhr&&d.xhr(d)||xhr(d),c.open(e,f,d.async===!1?!1:!0),setHeaders(c,d),setCredentials(c,d),win[xDomainRequest]&&c instanceof win[xDomainRequest]?(c.onload=a,c.onerror=b,c.onprogress=function(){},h=!0):c.onreadystatechange=handleReadyState(this,a,b),d.before&&d.before(c),h?setTimeout(function(){c.send(g)},200):c.send(g),c)}function Reqwest(a,b){this.o=a,this.fn=b,init.apply(this,arguments)}function setType(a){return a.match("json")?"json":a.match("javascript")?"js":a.match("text")?"html":a.match("xml")?"xml":void 0}function init(o,fn){function complete(a){for(o.timeout&&clearTimeout(self.timeout),self.timeout=null;self._completeHandlers.length>0;)self._completeHandlers.shift()(a)}function success(resp){var type=o.type||resp&&setType(resp.getResponseHeader("Content-Type"));resp="jsonp"!==type?self.request:resp;var filteredResponse=globalSetupOptions.dataFilter(resp.responseText,type),r=filteredResponse;try{resp.responseText=r}catch(e){}if(r)switch(type){case"json":try{resp=win.JSON?win.JSON.parse(r):eval("("+r+")")}catch(err){return error(resp,"Could not parse JSON in response",err)}break;case"js":resp=eval(r);break;case"html":resp=r;break;case"xml":resp=resp.responseXML&&resp.responseXML.parseError&&resp.responseXML.parseError.errorCode&&resp.responseXML.parseError.reason?null:resp.responseXML}for(self._responseArgs.resp=resp,self._fulfilled=!0,fn(resp),self._successHandler(resp);self._fulfillmentHandlers.length>0;)resp=self._fulfillmentHandlers.shift()(resp);complete(resp)}function timedOut(){self._timedOut=!0,self.request.abort()}function error(a,b,c){for(a=self.request,self._responseArgs.resp=a,self._responseArgs.msg=b,self._responseArgs.t=c,self._erred=!0;self._errorHandlers.length>0;)self._errorHandlers.shift()(a,b,c);complete(a)}this.url="string"==typeof o?o:o.url,this.timeout=null,this._fulfilled=!1,this._successHandler=function(){},this._fulfillmentHandlers=[],this._errorHandlers=[],this._completeHandlers=[],this._erred=!1,this._responseArgs={};var self=this;fn=fn||function(){},o.timeout&&(this.timeout=setTimeout(function(){timedOut()},o.timeout)),o.success&&(this._successHandler=function(){o.success.apply(o,arguments)}),o.error&&this._errorHandlers.push(function(){o.error.apply(o,arguments)}),o.complete&&this._completeHandlers.push(function(){o.complete.apply(o,arguments)}),this.request=getRequest.call(this,success,error)}function reqwest(a,b){return new Reqwest(a,b)}function normalize(a){return a?a.replace(/\r?\n/g,"\r\n"):""}function serial(a,b){var c,d,e,f,g=a.name,h=a.tagName.toLowerCase(),i=function(a){a&&!a.disabled&&b(g,normalize(a.attributes.value&&a.attributes.value.specified?a.value:a.text))};if(!a.disabled&&g)switch(h){case"input":/reset|button|image|file/i.test(a.type)||(c=/checkbox/i.test(a.type),d=/radio/i.test(a.type),e=a.value,(!(c||d)||a.checked)&&b(g,normalize(c&&""===e?"on":e)));break;case"textarea":b(g,normalize(a.value));break;case"select":if("select-one"===a.type.toLowerCase())i(a.selectedIndex>=0?a.options[a.selectedIndex]:null);else for(f=0;a.length&&fe?c/=2-c:c=c*d/(2-2*e)),[b,c,e,a[3]]},d.ColorConversion._hsbaToRGBA=function(a){var b=6*a[0],c=a[1],d=a[2],e=[];if(0===c)e=[d,d,d,a[3]];else{var f,g,h,i=Math.floor(b),j=d*(1-c),k=d*(1-c*(b-i)),l=d*(1-c*(1+i-b));1===i?(f=k,g=d,h=j):2===i?(f=j,g=d,h=l):3===i?(f=j,g=k,h=d):4===i?(f=l,g=j,h=d):5===i?(f=d,g=j,h=k):(f=d,g=l,h=j),e=[f,g,h,a[3]]}return e},d.ColorConversion._hslaToHSBA=function(a){var b,c=a[0],d=a[1],e=a[2];return b=.5>e?(1+d)*e:e+d-e*d,d=2*(b-e)/b,[c,d,b,a[3]]},d.ColorConversion._hslaToRGBA=function(a){var b=6*a[0],c=a[1],d=a[2],e=[];if(0===c)e=[d,d,d,a[3]];else{var f;f=.5>d?(1+c)*d:d+c-d*c;var g=2*d-f,h=function(a,b,c){return 0>a?a+=6:a>=6&&(a-=6),1>a?b+(c-b)*a:3>a?c:4>a?b+(c-b)*(4-a):b};e=[h(b+2,g,f),h(b,g,f),h(b-2,g,f),a[3]]}return e},d.ColorConversion._rgbaToHSBA=function(a){var b,c,d=a[0],e=a[1],f=a[2],g=Math.max(d,e,f),h=g-Math.min(d,e,f);return 0===h?(b=0,c=0):(c=h/g,d===g?b=(e-f)/h:e===g?b=2+(f-d)/h:f===g&&(b=4+(d-e)/h),0>b?b+=6:b>=6&&(b-=6)),[b/6,c,g,a[3]]},d.ColorConversion._rgbaToHSLA=function(a){var b,c,d=a[0],e=a[1],f=a[2],g=Math.max(d,e,f),h=Math.min(d,e,f),i=g+h,j=g-h;return 0===j?(b=0,c=0):(c=1>i?j/i:j/(2-j),d===g?b=(e-f)/j:e===g?b=2+(f-d)/j:f===g&&(b=4+(d-e)/j),0>b?b+=6:b>=6&&(b-=6)),[b/6,c,i/2,a[3]]},b.exports=d.ColorConversion},{"../core/core":37}],30:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("./p5.Color"),d.prototype.alpha=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getAlpha();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.blue=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getBlue();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.brightness=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getBrightness();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.color=function(){return arguments[0]instanceof d.Color?arguments[0]:arguments[0]instanceof Array?this instanceof d.Renderer?new d.Color(this,arguments[0]):new d.Color(this._renderer,arguments[0]):this instanceof d.Renderer?new d.Color(this,arguments):new d.Color(this._renderer,arguments)},d.prototype.green=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getGreen();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.hue=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getHue();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.lerpColor=function(a,b,c){var d,f,g,h,i,j,k=this._renderer._colorMode,l=this._renderer._colorMaxes;if(k===e.RGB)i=a.levels.map(function(a){return a/255}),j=b.levels.map(function(a){return a/255});else if(k===e.HSB)a._getBrightness(),b._getBrightness(),i=a.hsba,j=b.hsba;else{if(k!==e.HSL)throw new Error(k+"cannot be used for interpolation.");a._getLightness(),b._getLightness(),i=a.hsla,j=b.hsla}return c=Math.max(Math.min(c,1),0),d=this.lerp(i[0],j[0],c),f=this.lerp(i[1],j[1],c),g=this.lerp(i[2],j[2],c),h=this.lerp(i[3],j[3],c),d*=l[k][0],f*=l[k][1],g*=l[k][2],h*=l[k][3],this.color(d,f,g,h)},d.prototype.lightness=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getLightness();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.red=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getRed();throw new Error("Needs p5.Color or pixel array as argument.")},d.prototype.saturation=function(a){if(a instanceof d.Color||a instanceof Array)return this.color(a)._getSaturation();throw new Error("Needs p5.Color or pixel array as argument.")},b.exports=d},{"../core/constants":36,"../core/core":37,"./p5.Color":31}],31:[function(a,b,c){var d=a("../core/core"),e=a("../core/constants"),f=a("./color_conversion");d.Color=function(a,b){if(this.mode=a._colorMode,this.maxes=a._colorMaxes,this.mode!==e.RGB&&this.mode!==e.HSL&&this.mode!==e.HSB)throw new Error(this.mode+" is an invalid colorMode.");return this._array=d.Color._parseInputs.apply(a,b),this.levels=this._array.map(function(a){return Math.round(255*a)}),this},d.Color.prototype.toString=function(){var a=this.levels,b=this._array[3];return"rgba("+a[0]+","+a[1]+","+a[2]+","+b+")"},d.Color.prototype._getAlpha=function(){return this._array[3]*this.maxes[this.mode][3]},d.Color.prototype._getBlue=function(){return this._array[2]*this.maxes[e.RGB][2]},d.Color.prototype._getBrightness=function(){return this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[2]*this.maxes[e.HSB][2]},d.Color.prototype._getGreen=function(){return this._array[1]*this.maxes[e.RGB][1]},d.Color.prototype._getHue=function(){return this.mode===e.HSB?(this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[0]*this.maxes[e.HSB][0]):(this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[0]*this.maxes[e.HSL][0])},d.Color.prototype._getLightness=function(){return this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[2]*this.maxes[e.HSL][2]},d.Color.prototype._getRed=function(){return this._array[0]*this.maxes[e.RGB][0]},d.Color.prototype._getSaturation=function(){return this.mode===e.HSB?(this.hsba||(this.hsba=f._rgbaToHSBA(this._array)),this.hsba[1]*this.maxes[e.HSB][1]):(this.hsla||(this.hsla=f._rgbaToHSLA(this._array)),this.hsla[1]*this.maxes[e.HSL][1])};var g={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},h=/\s*/,i=/(\d{1,3})/,j=/((?:\d+(?:\.\d+)?)|(?:\.\d+))/,k=new RegExp(j.source+"%"),l={HEX3:/^#([a-f0-9])([a-f0-9])([a-f0-9])$/i,HEX6:/^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,RGB:new RegExp(["^rgb\\(",i.source,",",i.source,",",i.source,"\\)$"].join(h.source),"i"),RGB_PERCENT:new RegExp(["^rgb\\(",k.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),RGBA:new RegExp(["^rgba\\(",i.source,",",i.source,",",i.source,",",j.source,"\\)$"].join(h.source),"i"), +RGBA_PERCENT:new RegExp(["^rgba\\(",k.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i"),HSL:new RegExp(["^hsl\\(",i.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),HSLA:new RegExp(["^hsla\\(",i.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i"),HSB:new RegExp(["^hsb\\(",i.source,",",k.source,",",k.source,"\\)$"].join(h.source),"i"),HSBA:new RegExp(["^hsba\\(",i.source,",",k.source,",",k.source,",",j.source,"\\)$"].join(h.source),"i")};d.Color._parseInputs=function(){var a=arguments.length,b=this._colorMode,c=this._colorMaxes,h=[];if(a>=3)return h[0]=arguments[0]/c[b][0],h[1]=arguments[1]/c[b][1],h[2]=arguments[2]/c[b][2],"number"==typeof arguments[3]?h[3]=arguments[3]/c[b][3]:h[3]=1,h=h.map(function(a){return Math.max(Math.min(a,1),0)}),b===e.HSL?f._hslaToRGBA(h):b===e.HSB?f._hsbaToRGBA(h):h;if(1===a&&"string"==typeof arguments[0]){var i=arguments[0].trim().toLowerCase();if(g[i])return d.Color._parseInputs.apply(this,[g[i]]);if(l.HEX3.test(i))return h=l.HEX3.exec(i).slice(1).map(function(a){return parseInt(a+a,16)/255}),h[3]=1,h;if(l.HEX6.test(i))return h=l.HEX6.exec(i).slice(1).map(function(a){return parseInt(a,16)/255}),h[3]=1,h;if(l.RGB.test(i))return h=l.RGB.exec(i).slice(1).map(function(a){return a/255}),h[3]=1,h;if(l.RGB_PERCENT.test(i))return h=l.RGB_PERCENT.exec(i).slice(1).map(function(a){return parseFloat(a)/100}),h[3]=1,h;if(l.RGBA.test(i))return h=l.RGBA.exec(i).slice(1).map(function(a,b){return 3===b?parseFloat(a):a/255});if(l.RGBA_PERCENT.test(i))return h=l.RGBA_PERCENT.exec(i).slice(1).map(function(a,b){return 3===b?parseFloat(a):parseFloat(a)/100});if(l.HSL.test(i)?(h=l.HSL.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:parseInt(a,10)/100}),h[3]=1):l.HSLA.test(i)&&(h=l.HSLA.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:3===b?parseFloat(a):parseInt(a,10)/100})),h.length)return f._hslaToRGBA(h);if(l.HSB.test(i)?(h=l.HSB.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:parseInt(a,10)/100}),h[3]=1):l.HSBA.test(i)&&(h=l.HSBA.exec(i).slice(1).map(function(a,b){return 0===b?parseInt(a,10)/360:3===b?parseFloat(a):parseInt(a,10)/100})),h.length)return f._hsbaToRGBA(h);h=[1,1,1,1]}else{if(1!==a&&2!==a||"number"!=typeof arguments[0])throw new Error(arguments+"is not a valid color representation.");h[0]=arguments[0]/c[b][2],h[1]=arguments[0]/c[b][2],h[2]=arguments[0]/c[b][2],"number"==typeof arguments[1]?h[3]=arguments[1]/c[b][3]:h[3]=1,h=h.map(function(a){return Math.max(Math.min(a,1),0)})}return h},b.exports=d.Color},{"../core/constants":36,"../core/core":37,"./color_conversion":29}],32:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("./p5.Color"),d.prototype.background=function(){return arguments[0]instanceof d.Image?this.image(arguments[0],0,0,this.width,this.height):this._renderer.background.apply(this._renderer,arguments),this},d.prototype.clear=function(){return this._renderer.clear(),this},d.prototype.colorMode=function(){if(arguments[0]===e.RGB||arguments[0]===e.HSB||arguments[0]===e.HSL){this._renderer._colorMode=arguments[0];var a=this._renderer._colorMaxes[this._renderer._colorMode];2===arguments.length?(a[0]=arguments[1],a[1]=arguments[1],a[2]=arguments[1],a[3]=arguments[1]):4===arguments.length?(a[0]=arguments[1],a[1]=arguments[2],a[2]=arguments[3]):5===arguments.length&&(a[0]=arguments[1],a[1]=arguments[2],a[2]=arguments[3],a[3]=arguments[4])}return this},d.prototype.fill=function(){return this._renderer._setProperty("_fillSet",!0),this._renderer._setProperty("_doFill",!0),this._renderer.fill.apply(this._renderer,arguments),this},d.prototype.noFill=function(){return this._renderer._setProperty("_doFill",!1),this},d.prototype.noStroke=function(){return this._renderer._setProperty("_doStroke",!1),this},d.prototype.stroke=function(){return this._renderer._setProperty("_strokeSet",!0),this._renderer._setProperty("_doStroke",!0),this._renderer.stroke.apply(this._renderer,arguments),this},b.exports=d},{"../core/constants":36,"../core/core":37,"./p5.Color":31}],33:[function(a,b,c){"use strict";var d=a("./core"),e=a("./constants"),f=a("./canvas");a("./error_helpers"),d.prototype.arc=function(a,b,c,d,f,g,h){for(var i=new Array(arguments.length),j=0;jf;)f+=e.TWO_PI;for(;0>g;)g+=e.TWO_PI;return f%=e.TWO_PI,g%=e.TWO_PI,g===f&&(g+=e.TWO_PI),f=f<=e.HALF_PI?Math.atan(c/d*Math.tan(f)):f>e.HALF_PI&&f<=3*e.HALF_PI?Math.atan(c/d*Math.tan(f))+e.PI:Math.atan(c/d*Math.tan(f))+e.TWO_PI,g=g<=e.HALF_PI?Math.atan(c/d*Math.tan(g)):g>e.HALF_PI&&g<=3*e.HALF_PI?Math.atan(c/d*Math.tan(g))+e.PI:Math.atan(c/d*Math.tan(g))+e.TWO_PI,f>g&&(g+=e.TWO_PI),c=Math.abs(c),d=Math.abs(d),this._renderer.arc(a,b,c,d,f,g,h),this},d.prototype.ellipse=function(){for(var a=new Array(arguments.length),b=0;b=c-d)&&(this._setProperty("frameCount",this.frameCount+1),this.redraw(),this._updateMouseCoords(),this._updateTouchCoords(),this._frameRate=1e3/(a-this._lastFrameTime),this._lastFrameTime=a),this._loop&&(this._requestAnimId=window.requestAnimationFrame(this._draw))}.bind(this),this._runFrames=function(){this._updateInterval&&clearInterval(this._updateInterval)}.bind(this),this._setProperty=function(a,b){this[a]=b,this._isGlobal&&(window[a]=b)}.bind(this),this.remove=function(){if(this._curElement){this._loop=!1,this._requestAnimId&&window.cancelAnimationFrame(this._requestAnimId);for(var a in this._events)window.removeEventListener(a,this._events[a]);for(var b=0;b1)console.log.apply(console,arguments);else{var b=JSON.parse(JSON.stringify(a));console.log(b)}}catch(c){console.log(a)}}:h.prototype.print=function(){},h.prototype.frameCount=0,h.prototype.focused=document.hasFocus(),h.prototype.cursor=function(a,b,c){var d="auto",e=this._curElement.elt;if(j.indexOf(a)>-1)d=a;else if("string"==typeof a){var f="";b&&c&&"number"==typeof b&&"number"==typeof c&&(f=b+" "+c),d="http://"!==a.substring(0,6)?"url("+a+") "+f+", auto":/\.(cur|jpg|jpeg|gif|png|CUR|JPG|JPEG|GIF|PNG)$/.test(a)?"url("+a+") "+f+", auto":a}e.style.cursor=d},h.prototype.frameRate=function(a){return"number"!=typeof a||0>=a?this._frameRate:(this._setProperty("_targetFrameRate",a),this._runFrames(),this)},h.prototype.getFrameRate=function(){return this.frameRate()},h.prototype.setFrameRate=function(a){return this.frameRate(a)},h.prototype.noCursor=function(){this._curElement.elt.style.cursor="none"},h.prototype.displayWidth=screen.width,h.prototype.displayHeight=screen.height,h.prototype.windowWidth=d(),h.prototype.windowHeight=e(),h.prototype._onresize=function(a){this._setProperty("windowWidth",d()),this._setProperty("windowHeight",e());var b,c=this._isGlobal?window:this;"function"==typeof c.windowResized&&(b=c.windowResized(a),void 0===b||b||a.preventDefault())},h.prototype.width=0,h.prototype.height=0,h.prototype.fullscreen=function(a){return"undefined"==typeof a?document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement:void(a?f(document.documentElement):g())},h.prototype.pixelDensity=function(a){return"number"!=typeof a?this._pixelDensity:(this._pixelDensity=a,void this.resizeCanvas(this.width,this.height,!0))},h.prototype.displayDensity=function(){return window.devicePixelRatio},h.prototype.getURL=function(){return location.href},h.prototype.getURLPath=function(){return location.pathname.split("/").filter(function(a){return""!==a})},h.prototype.getURLParams=function(){for(var a,b=/[?&]([^&=]+)(?:[&=])([^&=]+)/gim,c={};null!=(a=b.exec(location.search));)a.index===b.lastIndex&&b.lastIndex++,c[a[1]]=a[2];return c},b.exports=h},{"./constants":36,"./core":37}],40:[function(a,b,c){"use strict";function d(a,b,c){if(a.match(/^p5\./)){var d=a.split(".");return c instanceof i[d[1]]}return"Boolean"===a||a.toLowerCase()===b||r.indexOf(a)>-1&&q(c)}function e(a,b,c){j&&(f(),j=!1),"undefined"===o(c)?c="#B40033":"number"===o(c)&&(c=w[c])}function f(){var a="transparent",b="#ED225D",c="#ED225D",d="white";console.log("%c _ \n /\\| |/\\ \n \\ ` ' / \n / , . \\ \n \\/|_|\\/ \n\n%c> p5.js says: Welcome! This is your friendly debugger. To turn me off switch to using “p5.min.js”.","background-color:"+a+";color:"+b+";","background-color:"+c+";color:"+d+";")}function g(){var b={},c=function(a){return Object.getOwnPropertyNames(a).filter(function(a){return"_"===a[0]?!1:a in b?!1:(b[a]=!0,!0)}).map(function(b){var c;return c="function"==typeof a[b]?"function":b===b.toUpperCase()?"constant":"variable",{name:b,type:c}})};y=[].concat(c(i.prototype),c(a("./constants"))),y.sort(function(a,b){return b.name.length-a.name.length})}function h(a,b){b||(b=console.log.bind(console)),y||g(),y.some(function(c){return a.message&&-1!==a.message.indexOf(c.name)?(b("%cDid you just try to use p5.js's "+c.name+("function"===c.type?"() ":" ")+c.type+"? If so, you may want to move it into your sketch's setup() function.\n\nFor more details, see: "+z,"color: #B40033"),!0):void 0})}for(var i=a("./core"),j=!1,k={},l=k.toString,m=["Boolean","Number","String","Function","Array","Date","RegExp","Object","Error"],n=0;n=0},r=["Number","Integer","Number/Constant"],s=0,t=1,u=2,v=3,w=["#2D7BB6","#EE9900","#4DB200","#C83C00"];i.prototype._validateParameters=function(a,b,c){p(c[0])||(c=[c]);for(var f,g=Math.abs(b.length-c[0].length),h=0,i=1,j=c.length;j>i;i++){var k=Math.abs(b.length-c[i].length);g>=k&&(h=i,g=k)}var l="X";g>0&&(f="You wrote "+a+"(",b.length>0&&(f+=l+Array(b.length).join(","+l)),f+="). "+a+" was expecting "+c[h].length+" parameters. Try "+a+"(",c[h].length>0&&(f+=l+Array(c[h].length).join(","+l)),f+=").",c.length>1&&(f+=" "+a+" takes different numbers of parameters depending on what you want to do. Click this link to learn more: "),e(f,a,s));for(var m=0;m1&&(f+=" "+a+" takes different numbers of parameters depending on what you want to do. Click this link to learn more:"),e(f,a,u))}},i.prototype._validateParameters=function(){return!0};var x={0:{fileType:"image",method:"loadImage",message:" hosting the image online,"},1:{fileType:"XML file",method:"loadXML"},2:{fileType:"table file",method:"loadTable"},3:{fileType:"text file",method:"loadStrings"},4:{fileType:"font",method:"loadFont",message:" hosting the font online,"}};i._friendlyFileLoadError=function(a,b){var c=x[a],d="It looks like there was a problem loading your "+c.fileType+". Try checking if the file path%c ["+b+"] %cis correct,"+(c.message||"")+" or running a local server.";e(d,c.method,v)};var y=null,z="https://github.com/processing/p5.js/wiki/Frequently-Asked-Questions#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup";i.prototype._helpForMisusedAtTopLevelCode=h,"complete"!==document.readyState&&(window.addEventListener("error",h,!1),window.addEventListener("load",function(){window.removeEventListener("error",h,!1)})),b.exports=i},{"./constants":36,"./core":37}],41:[function(a,b,c){function d(a,b,c){var d=b.bind(c);c.elt.addEventListener(a,d,!1),c._events[a]=d}var e=a("./core");e.Element=function(a,b){this.elt=a,this._pInst=b,this._events={},this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight},e.Element.prototype.parent=function(a){return 0===arguments.length?this.elt.parentNode:("string"==typeof a?("#"===a[0]&&(a=a.substring(1)),a=document.getElementById(a)):a instanceof e.Element&&(a=a.elt),a.appendChild(this.elt),this)},e.Element.prototype.id=function(a){return 0===arguments.length?this.elt.id:(this.elt.id=a,this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight,this)},e.Element.prototype["class"]=function(a){return 0===arguments.length?this.elt.className:(this.elt.className=a,this)},e.Element.prototype.mousePressed=function(a){return d("mousedown",a,this),d("touchstart",a,this),this},e.Element.prototype.mouseWheel=function(a){return d("wheel",a,this),this},e.Element.prototype.mouseReleased=function(a){return d("mouseup",a,this),d("touchend",a,this),this},e.Element.prototype.mouseClicked=function(a){return d("click",a,this),this},e.Element.prototype.mouseMoved=function(a){return d("mousemove",a,this),d("touchmove",a,this),this},e.Element.prototype.mouseOver=function(a){return d("mouseover",a,this),this},e.Element.prototype.changed=function(a){return d("change",a,this),this},e.Element.prototype.input=function(a){return d("input",a,this),this},e.Element.prototype.mouseOut=function(a){return d("mouseout",a,this),this},e.Element.prototype.touchStarted=function(a){return d("touchstart",a,this),d("mousedown",a,this),this},e.Element.prototype.touchMoved=function(a){return d("touchmove",a,this),d("mousemove",a,this),this},e.Element.prototype.touchEnded=function(a){return d("touchend",a,this),d("mouseup",a,this),this},e.Element.prototype.dragOver=function(a){return d("dragover",a,this),this},e.Element.prototype.dragLeave=function(a){return d("dragleave",a,this),this},e.Element.prototype.drop=function(a,b){function c(b){var c=new e.File(b);return function(b){c.data=b.target.result,a(c)}}return window.File&&window.FileReader&&window.FileList&&window.Blob?(d("dragover",function(a){a.stopPropagation(),a.preventDefault()},this),d("dragleave",function(a){a.stopPropagation(),a.preventDefault()},this),arguments.length>1&&d("drop",b,this),d("drop",function(a){a.stopPropagation(),a.preventDefault();for(var b=a.dataTransfer.files,d=0;d-1?f.readAsText(e):f.readAsDataURL(e)}},this)):console.log("The File APIs are not fully supported in this browser."),this},e.Element.prototype._setProperty=function(a,b){this[a]=b},b.exports=e.Element},{"./core":37}],42:[function(a,b,c){var d=a("./core"),e=a("./constants");d.Graphics=function(a,b,c,f){var g=c||e.P2D,h=document.createElement("canvas"),i=this._userNode||document.body;i.appendChild(h),d.Element.call(this,h,f,!1),this._styles=[],this.width=a,this.height=b,this._pixelDensity=f._pixelDensity,g===e.WEBGL?this._renderer=new d.RendererGL(h,this,!1):this._renderer=new d.Renderer2D(h,this,!1),this._renderer.resize(a,b),this._renderer._applyDefaults(),f._elements.push(this);for(var j in d.prototype)this[j]||("function"==typeof d.prototype[j]?this[j]=d.prototype[j].bind(this):this[j]=d.prototype[j]);return this},d.Graphics.prototype=Object.create(d.Element.prototype),b.exports=d.Graphics},{"./constants":36,"./core":37}],43:[function(a,b,c){function d(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}else b+=a.offsetLeft,c+=a.offsetTop;return[b,c]}var e=a("./core"),f=a("../core/constants");e.Renderer=function(a,b,c){e.Element.call(this,a,b),this.canvas=a,this._pInst=b,c?(this._isMainCanvas=!0,this._pInst._setProperty("_curElement",this),this._pInst._setProperty("canvas",this.canvas),this._pInst._setProperty("width",this.width),this._pInst._setProperty("height",this.height)):(this.canvas.style.display="none",this._styles=[]),this._textSize=12,this._textLeading=15,this._textFont="sans-serif",this._textStyle=f.NORMAL,this._textAscent=null,this._textDescent=null,this._rectMode=f.CORNER,this._ellipseMode=f.CENTER,this._curveTightness=0,this._imageMode=f.CORNER,this._tint=null,this._doStroke=!0,this._doFill=!0,this._strokeSet=!1,this._fillSet=!1,this._colorMode=f.RGB,this._colorMaxes={rgb:[255,255,255,255],hsb:[360,100,100,1],hsl:[360,100,100,1]}},e.Renderer.prototype=Object.create(e.Element.prototype),e.Renderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.elt.width=a*this._pInst._pixelDensity,this.elt.height=b*this._pInst._pixelDensity,this.elt.style.width=a+"px",this.elt.style.height=b+"px",this._isMainCanvas&&(this._pInst._setProperty("width",this.width),this._pInst._setProperty("height",this.height))},e.Renderer.prototype.textLeading=function(a){return arguments.length&&arguments[0]?(this._setProperty("_textLeading",a),this):this._textLeading},e.Renderer.prototype.textSize=function(a){return arguments.length&&arguments[0]?(this._setProperty("_textSize",a),this._setProperty("_textLeading",a*f._DEFAULT_LEADMULT),this._applyTextProperties()):this._textSize},e.Renderer.prototype.textStyle=function(a){return arguments.length&&arguments[0]?((a===f.NORMAL||a===f.ITALIC||a===f.BOLD)&&this._setProperty("_textStyle",a),this._applyTextProperties()):this._textStyle},e.Renderer.prototype.textAscent=function(){return null===this._textAscent&&this._updateTextMetrics(),this._textAscent},e.Renderer.prototype.textDescent=function(){return null===this._textDescent&&this._updateTextMetrics(),this._textDescent},e.Renderer.prototype._applyDefaults=function(){return this},e.Renderer.prototype._isOpenType=function(a){return a=a||this._textFont,"object"==typeof a&&a.font&&a.font.supported},e.Renderer.prototype._updateTextMetrics=function(){if(this._isOpenType())return this._setProperty("_textAscent",this._textFont._textAscent()),this._setProperty("_textDescent",this._textFont._textDescent()),this;var a=document.createElement("span");a.style.fontFamily=this._textFont,a.style.fontSize=this._textSize+"px",a.innerHTML="ABCjgq|";var b=document.createElement("div");b.style.display="inline-block",b.style.width="1px",b.style.height="0px";var c=document.createElement("div");c.appendChild(a),c.appendChild(b),c.style.height="0px",c.style.overflow="hidden",document.body.appendChild(c),b.style.verticalAlign="baseline";var e=d(b),f=d(a),g=e[1]-f[1];b.style.verticalAlign="bottom",e=d(b),f=d(a);var h=e[1]-f[1],i=h-g; +return document.body.removeChild(c),this._setProperty("_textAscent",g),this._setProperty("_textDescent",i),this},b.exports=e.Renderer},{"../core/constants":36,"./core":37}],44:[function(a,b,c){var d=a("./core"),e=a("./canvas"),f=a("./constants"),g=a("../image/filters");a("./p5.Renderer");var h="rgba(0,0,0,0)";d.Renderer2D=function(a,b,c){return d.Renderer.call(this,a,b,c),this.drawingContext=this.canvas.getContext("2d"),this._pInst._setProperty("drawingContext",this.drawingContext),this},d.Renderer2D.prototype=Object.create(d.Renderer.prototype),d.Renderer2D.prototype._applyDefaults=function(){this.drawingContext.fillStyle=f._DEFAULT_FILL,this.drawingContext.strokeStyle=f._DEFAULT_STROKE,this.drawingContext.lineCap=f.ROUND,this.drawingContext.font="normal 12px sans-serif"},d.Renderer2D.prototype.resize=function(a,b){d.Renderer.prototype.resize.call(this,a,b),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity)},d.Renderer2D.prototype.background=function(){if(this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),arguments[0]instanceof d.Image)this._pInst.image(arguments[0],0,0,this.width,this.height);else{var a=this.drawingContext.fillStyle,b=this._pInst.color.apply(this,arguments),c=b.toString();this.drawingContext.fillStyle=c,this.drawingContext.fillRect(0,0,this.width,this.height),this.drawingContext.fillStyle=a}this.drawingContext.restore()},d.Renderer2D.prototype.clear=function(){this.drawingContext.clearRect(0,0,this.width,this.height)},d.Renderer2D.prototype.fill=function(){var a=this.drawingContext,b=this._pInst.color.apply(this,arguments);a.fillStyle=b.toString()},d.Renderer2D.prototype.stroke=function(){var a=this.drawingContext,b=this._pInst.color.apply(this,arguments);a.strokeStyle=b.toString()},d.Renderer2D.prototype.image=function(a,b,c,e,f,g,h,i,j){var k;try{this._tint&&(d.MediaElement&&a instanceof d.MediaElement&&a.loadPixels(),a.canvas&&(k=this._getTintedImageCanvas(a))),k||(k=a.canvas||a.elt),this.drawingContext.drawImage(k,b,c,e,f,g,h,i,j)}catch(l){if("NS_ERROR_NOT_AVAILABLE"!==l.name)throw l}},d.Renderer2D.prototype._getTintedImageCanvas=function(a){if(!a.canvas)return a;var b=g._toPixels(a.canvas),c=document.createElement("canvas");c.width=a.canvas.width,c.height=a.canvas.height;for(var d=c.getContext("2d"),e=d.createImageData(a.canvas.width,a.canvas.height),f=e.data,h=0;ha+c||0>b+e||a>this.width||b>this.height)return[0,0,0,255];var f=this._pInst||this,g=f._pixelDensity;a=Math.floor(a),b=Math.floor(b);var h=a*g,i=b*g;if(1===c&&1===e){var j=this.drawingContext.getImageData(h,i,1,1).data;return[j[0],j[1],j[2],j[3]]}var k=Math.min(c,f.width),l=Math.min(e,f.height),m=k*g,n=l*g,o=new d.Image(k,l);return o.canvas.getContext("2d").drawImage(this.canvas,h,i,m,n,0,0,k,l),o},d.Renderer2D.prototype.loadPixels=function(){var a=this._pixelDensity||this._pInst._pixelDensity,b=this.width*a,c=this.height*a,d=this.drawingContext.getImageData(0,0,b,c);this._pInst?(this._pInst._setProperty("imageData",d),this._pInst._setProperty("pixels",d.data)):(this._setProperty("imageData",d),this._setProperty("pixels",d.data))},d.Renderer2D.prototype.set=function(a,b,c){if(a=Math.floor(a),b=Math.floor(b),c instanceof d.Image)this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),this.drawingContext.drawImage(c.canvas,a,b),this.loadPixels.call(this._pInst),this.drawingContext.restore();else{var e=this._pInst||this,f=0,g=0,h=0,i=0,j=4*(b*e._pixelDensity*this.width*e._pixelDensity+a*e._pixelDensity);if(e.imageData||e.loadPixels.call(e),"number"==typeof c)jn;)o=Math.min(h-g,f.HALF_PI),p.push(this._acuteArcToBezier(g,o)),g+=o;return this._doFill&&(j.beginPath(),p.forEach(function(a,b){0===b&&j.moveTo(k.x+a.ax*l,k.y+a.ay*m),j.bezierCurveTo(k.x+a.bx*l,k.y+a.by*m,k.x+a.cx*l,k.y+a.cy*m,k.x+a.dx*l,k.y+a.dy*m)}),(i===f.PIE||null==i)&&j.lineTo(k.x,k.y),j.closePath(),j.fill()),this._doStroke&&(j.beginPath(),p.forEach(function(a,b){0===b&&j.moveTo(k.x+a.ax*l,k.y+a.ay*m),j.bezierCurveTo(k.x+a.bx*l,k.y+a.by*m,k.x+a.cx*l,k.y+a.cy*m,k.x+a.dx*l,k.y+a.dy*m)}),i===f.PIE?(j.lineTo(k.x,k.y),j.closePath()):i===f.CHORD&&j.closePath(),j.stroke()),this},d.Renderer2D.prototype.ellipse=function(a){var b=this.drawingContext,c=this._doFill,d=this._doStroke,e=a[0],f=a[1],g=a[2],i=a[3];if(c&&!d){if(b.fillStyle===h)return this}else if(!c&&d&&b.strokeStyle===h)return this;var j=.5522847498,k=g/2*j,l=i/2*j,m=e+g,n=f+i,o=e+g/2,p=f+i/2;b.beginPath(),b.moveTo(e,p),b.bezierCurveTo(e,p-l,o-k,f,o,f),b.bezierCurveTo(o+k,f,m,p-l,m,p),b.bezierCurveTo(m,p+l,o+k,n,o,n),b.bezierCurveTo(o-k,n,e,p+l,e,p),b.closePath(),c&&b.fill(),d&&b.stroke()},d.Renderer2D.prototype.line=function(a,b,c,d){var e=this.drawingContext;return this._doStroke?e.strokeStyle===h?this:(e.lineWidth%2===1&&e.translate(.5,.5),e.beginPath(),e.moveTo(a,b),e.lineTo(c,d),e.stroke(),e.lineWidth%2===1&&e.translate(-.5,-.5),this):this},d.Renderer2D.prototype.point=function(a,b){var c=this.drawingContext,d=c.strokeStyle,e=c.fillStyle;return this._doStroke?c.strokeStyle===h?this:(a=Math.round(a),b=Math.round(b),c.fillStyle=d,c.lineWidth>1?(c.beginPath(),c.arc(a,b,c.lineWidth/2,0,f.TWO_PI,!1),c.fill()):c.fillRect(a,b,1,1),void(c.fillStyle=e)):this},d.Renderer2D.prototype.quad=function(a,b,c,d,e,f,g,i){var j=this.drawingContext,k=this._doFill,l=this._doStroke;if(k&&!l){if(j.fillStyle===h)return this}else if(!k&&l&&j.strokeStyle===h)return this;return j.beginPath(),j.moveTo(a,b),j.lineTo(c,d),j.lineTo(e,f),j.lineTo(g,i),j.closePath(),k&&j.fill(),l&&j.stroke(),this},d.Renderer2D.prototype.rect=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],i=a[6],j=a[7],k=this.drawingContext,l=this._doFill,m=this._doStroke;if(l&&!m){if(k.fillStyle===h)return this}else if(!l&&m&&k.strokeStyle===h)return this;if(this._doStroke&&k.lineWidth%2===1&&k.translate(.5,.5),k.beginPath(),"undefined"==typeof f)k.rect(b,c,d,e);else{"undefined"==typeof g&&(g=f),"undefined"==typeof i&&(i=g),"undefined"==typeof j&&(j=i);var n=d/2,o=e/2;2*f>d&&(f=n),2*f>e&&(f=o),2*g>d&&(g=n),2*g>e&&(g=o),2*i>d&&(i=n),2*i>e&&(i=o),2*j>d&&(j=n),2*j>e&&(j=o),k.beginPath(),k.moveTo(b+f,c),k.arcTo(b+d,c,b+d,c+e,g),k.arcTo(b+d,c+e,b,c+e,i),k.arcTo(b,c+e,b,c,j),k.arcTo(b,c,b+d,c,f),k.closePath()}return this._doFill&&k.fill(),this._doStroke&&k.stroke(),this._doStroke&&k.lineWidth%2===1&&k.translate(-.5,-.5),this},d.Renderer2D.prototype.triangle=function(a){var b=this.drawingContext,c=this._doFill,d=this._doStroke,e=a[0],f=a[1],g=a[2],i=a[3],j=a[4],k=a[5];if(c&&!d){if(b.fillStyle===h)return this}else if(!c&&d&&b.strokeStyle===h)return this;b.beginPath(),b.moveTo(e,f),b.lineTo(g,i),b.lineTo(j,k),b.closePath(),c&&b.fill(),d&&b.stroke()},d.Renderer2D.prototype.endShape=function(a,b,c,d,e,g,h){if(0===b.length)return this;if(!this._doStroke&&!this._doFill)return this;var i,j=a===f.CLOSE;j&&!g&&b.push(b[0]);var k,l,m=b.length;if(!c||h!==f.POLYGON&&null!==h)if(!d||h!==f.POLYGON&&null!==h)if(!e||h!==f.POLYGON&&null!==h)if(h===f.POINTS)for(k=0;m>k;k++)i=b[k],this._doStroke&&this._pInst.stroke(i[6]),this._pInst.point(i[0],i[1]);else if(h===f.LINES)for(k=0;m>k+1;k+=2)i=b[k],this._doStroke&&this._pInst.stroke(b[k+1][6]),this._pInst.line(i[0],i[1],b[k+1][0],b[k+1][1]);else if(h===f.TRIANGLES)for(k=0;m>k+2;k+=3)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(b[k+2][0],b[k+2][1]),this.drawingContext.lineTo(i[0],i[1]),this._doFill&&(this._pInst.fill(b[k+2][5]),this.drawingContext.fill()),this._doStroke&&(this._pInst.stroke(b[k+2][6]),this.drawingContext.stroke()),this.drawingContext.closePath();else if(h===f.TRIANGLE_STRIP)for(k=0;m>k+1;k++)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(i[0],i[1]),this._doStroke&&this._pInst.stroke(b[k+1][6]),this._doFill&&this._pInst.fill(b[k+1][5]),m>k+2&&(this.drawingContext.lineTo(b[k+2][0],b[k+2][1]),this._doStroke&&this._pInst.stroke(b[k+2][6]),this._doFill&&this._pInst.fill(b[k+2][5])),this._doFillStrokeClose();else if(h===f.TRIANGLE_FAN){if(m>2)for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),this.drawingContext.lineTo(b[1][0],b[1][1]),this.drawingContext.lineTo(b[2][0],b[2][1]),this._doFill&&this._pInst.fill(b[2][5]),this._doStroke&&this._pInst.stroke(b[2][6]),this._doFillStrokeClose(),k=3;m>k;k++)i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),this.drawingContext.lineTo(b[k-1][0],b[k-1][1]),this.drawingContext.lineTo(i[0],i[1]),this._doFill&&this._pInst.fill(i[5]),this._doStroke&&this._pInst.stroke(i[6]),this._doFillStrokeClose()}else if(h===f.QUADS)for(k=0;m>k+3;k+=4){for(i=b[k],this.drawingContext.beginPath(),this.drawingContext.moveTo(i[0],i[1]),l=1;4>l;l++)this.drawingContext.lineTo(b[k+l][0],b[k+l][1]);this.drawingContext.lineTo(i[0],i[1]),this._doFill&&this._pInst.fill(b[k+3][5]),this._doStroke&&this._pInst.stroke(b[k+3][6]),this._doFillStrokeClose()}else if(h===f.QUAD_STRIP){if(m>3)for(k=0;m>k+1;k+=2)i=b[k],this.drawingContext.beginPath(),m>k+3?(this.drawingContext.moveTo(b[k+2][0],b[k+2][1]),this.drawingContext.lineTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this.drawingContext.lineTo(b[k+3][0],b[k+3][1]),this._doFill&&this._pInst.fill(b[k+3][5]),this._doStroke&&this._pInst.stroke(b[k+3][6])):(this.drawingContext.moveTo(i[0],i[1]),this.drawingContext.lineTo(b[k+1][0],b[k+1][1])),this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[0][0],b[0][1]),k=1;m>k;k++)i=b[k],i.isVert&&(i.moveTo?this.drawingContext.moveTo(i[0],i[1]):this.drawingContext.lineTo(i[0],i[1]));this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),k=0;m>k;k++)b[k].isVert?b[k].moveTo?this.drawingContext.moveTo([0],b[k][1]):this.drawingContext.lineTo(b[k][0],b[k][1]):this.drawingContext.quadraticCurveTo(b[k][0],b[k][1],b[k][2],b[k][3]);this._doFillStrokeClose()}else{for(this.drawingContext.beginPath(),k=0;m>k;k++)b[k].isVert?b[k].moveTo?this.drawingContext.moveTo(b[k][0],b[k][1]):this.drawingContext.lineTo(b[k][0],b[k][1]):this.drawingContext.bezierCurveTo(b[k][0],b[k][1],b[k][2],b[k][3],b[k][4],b[k][5]);this._doFillStrokeClose()}else if(m>3){var n=[],o=1-this._curveTightness;for(this.drawingContext.beginPath(),this.drawingContext.moveTo(b[1][0],b[1][1]),k=1;m>k+2;k++)i=b[k],n[0]=[i[0],i[1]],n[1]=[i[0]+(o*b[k+1][0]-o*b[k-1][0])/6,i[1]+(o*b[k+1][1]-o*b[k-1][1])/6],n[2]=[b[k+1][0]+(o*b[k][0]-o*b[k+2][0])/6,b[k+1][1]+(o*b[k][1]-o*b[k+2][1])/6],n[3]=[b[k+1][0],b[k+1][1]],this.drawingContext.bezierCurveTo(n[1][0],n[1][1],n[2][0],n[2][1],n[3][0],n[3][1]);j&&this.drawingContext.lineTo(b[k+1][0],b[k+1][1]),this._doFillStrokeClose()}return c=!1,d=!1,e=!1,g=!1,j&&b.pop(),this},d.Renderer2D.prototype.noSmooth=function(){return"imageSmoothingEnabled"in this.drawingContext?this.drawingContext.imageSmoothingEnabled=!1:"mozImageSmoothingEnabled"in this.drawingContext?this.drawingContext.mozImageSmoothingEnabled=!1:"webkitImageSmoothingEnabled"in this.drawingContext?this.drawingContext.webkitImageSmoothingEnabled=!1:"msImageSmoothingEnabled"in this.drawingContext&&(this.drawingContext.msImageSmoothingEnabled=!1),this},d.Renderer2D.prototype.smooth=function(){return"imageSmoothingEnabled"in this.drawingContext?this.drawingContext.imageSmoothingEnabled=!0:"mozImageSmoothingEnabled"in this.drawingContext?this.drawingContext.mozImageSmoothingEnabled=!0:"webkitImageSmoothingEnabled"in this.drawingContext?this.drawingContext.webkitImageSmoothingEnabled=!0:"msImageSmoothingEnabled"in this.drawingContext&&(this.drawingContext.msImageSmoothingEnabled=!0),this},d.Renderer2D.prototype.strokeCap=function(a){return(a===f.ROUND||a===f.SQUARE||a===f.PROJECT)&&(this.drawingContext.lineCap=a),this},d.Renderer2D.prototype.strokeJoin=function(a){return(a===f.ROUND||a===f.BEVEL||a===f.MITER)&&(this.drawingContext.lineJoin=a),this},d.Renderer2D.prototype.strokeWeight=function(a){return"undefined"==typeof a||0===a?this.drawingContext.lineWidth=1e-4:this.drawingContext.lineWidth=a,this},d.Renderer2D.prototype._getFill=function(){return this.drawingContext.fillStyle},d.Renderer2D.prototype._getStroke=function(){return this.drawingContext.strokeStyle},d.Renderer2D.prototype.bezier=function(a,b,c,d,e,f,g,h){return this._pInst.beginShape(),this._pInst.vertex(a,b),this._pInst.bezierVertex(c,d,e,f,g,h),this._pInst.endShape(),this},d.Renderer2D.prototype.curve=function(a,b,c,d,e,f,g,h){return this._pInst.beginShape(),this._pInst.curveVertex(a,b),this._pInst.curveVertex(c,d),this._pInst.curveVertex(e,f),this._pInst.curveVertex(g,h),this._pInst.endShape(),this},d.Renderer2D.prototype._doFillStrokeClose=function(){this._doFill&&this.drawingContext.fill(),this._doStroke&&this.drawingContext.stroke(),this.drawingContext.closePath()},d.Renderer2D.prototype.applyMatrix=function(a,b,c,d,e,f){this.drawingContext.transform(a,b,c,d,e,f)},d.Renderer2D.prototype.resetMatrix=function(){return this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pInst._pixelDensity,this._pInst._pixelDensity),this},d.Renderer2D.prototype.rotate=function(a){this.drawingContext.rotate(a)},d.Renderer2D.prototype.scale=function(a,b){return this.drawingContext.scale(a,b),this},d.Renderer2D.prototype.shearX=function(a){return this._pInst._angleMode===f.DEGREES&&(a=this._pInst.degrees(a)),this.drawingContext.transform(1,0,this._pInst.tan(a),1,0,0),this},d.Renderer2D.prototype.shearY=function(a){return this._pInst._angleMode===f.DEGREES&&(a=this._pInst.degrees(a)),this.drawingContext.transform(1,this._pInst.tan(a),0,1,0,0),this},d.Renderer2D.prototype.translate=function(a,b){return this.drawingContext.translate(a,b),this},d.Renderer2D.prototype.text=function(a,b,c,d,e){var g,h,i,j,k,l,m,n,o,p,q=this._pInst,r=Number.MAX_VALUE;if(this._doFill||this._doStroke){if("string"!=typeof a&&(a=a.toString()),a=a.replace(/(\t)/g," "),g=a.split("\n"),"undefined"!=typeof d){for(o=0,i=0;id?(k=n[h]+" ",o+=q.textLeading()):k=l;switch(this._rectMode===f.CENTER&&(b-=d/2,c-=e/2),this.drawingContext.textAlign){case f.CENTER:b+=d/2;break;case f.RIGHT:b+=d}if("undefined"!=typeof e){switch(this.drawingContext.textBaseline){case f.BOTTOM:c+=e-o;break;case f._CTX_MIDDLE:c+=(e-o)/2;break;case f.BASELINE:p=!0,this.drawingContext.textBaseline=f.TOP}r=c+e-q.textAscent()}for(i=0;id&&k.length>0?(this._renderText(q,k,b,c,r),k=n[h]+" ",c+=q.textLeading()):k=l;this._renderText(q,k,b,c,r),c+=q.textLeading()}}else{var s=0,t=q.textAlign().vertical;for(t===f.CENTER?s=(g.length-1)*q.textLeading()/2:t===f.BOTTOM&&(s=(g.length-1)*q.textLeading()),j=0;j=e?void 0:(a.push(),this._isOpenType()?this._textFont._renderPath(b,c,d,{renderer:this}):(this._doStroke&&this._strokeSet&&this.drawingContext.strokeText(b,c,d),this._doFill&&(this.drawingContext.fillStyle=this._fillSet?this.drawingContext.fillStyle:f._DEFAULT_TEXT_FILL,this.drawingContext.fillText(b,c,d))),a.pop(),a)},d.Renderer2D.prototype.textWidth=function(a){return this._isOpenType()?this._textFont._textWidth(a,this._textSize):this.drawingContext.measureText(a).width},d.Renderer2D.prototype.textAlign=function(a,b){if(arguments.length)return(a===f.LEFT||a===f.RIGHT||a===f.CENTER)&&(this.drawingContext.textAlign=a),(b===f.TOP||b===f.BOTTOM||b===f.CENTER||b===f.BASELINE)&&(b===f.CENTER?this.drawingContext.textBaseline=f._CTX_MIDDLE:this.drawingContext.textBaseline=b),this._pInst;var c=this.drawingContext.textBaseline;return c===f._CTX_MIDDLE&&(c=f.CENTER),{horizontal:this.drawingContext.textAlign,vertical:c}},d.Renderer2D.prototype._applyTextProperties=function(){var a,b=this._pInst;return this._setProperty("_textAscent",null),this._setProperty("_textDescent",null),a=this._textFont,this._isOpenType()&&(a=this._textFont.font.familyName,this._setProperty("_textStyle",this._textFont.font.styleName)),this.drawingContext.font=this._textStyle+" "+this._textSize+"px "+a,b},d.Renderer2D.prototype.push=function(){this.drawingContext.save()},d.Renderer2D.prototype.pop=function(){this.drawingContext.restore()},b.exports=d.Renderer2D},{"../image/filters":54,"./canvas":35,"./constants":36,"./core":37,"./p5.Renderer":43}],45:[function(a,b,c){var d=a("./core"),e=a("./constants");a("./p5.Graphics"),a("./p5.Renderer2D"),a("../webgl/p5.RendererGL");var f="defaultCanvas0";d.prototype.createCanvas=function(a,b,c){var g,h,i=c||e.P2D;if(arguments[3]&&(g="boolean"==typeof arguments[3]?arguments[3]:!1),i===e.WEBGL)h=document.getElementById(f),h&&h.parentNode.removeChild(h),h=document.createElement("canvas"),h.id=f;else if(g){h=document.createElement("canvas");for(var j=0;document.getElementById("defaultCanvas"+j);)j++;f="defaultCanvas"+j,h.id=f}else h=this.canvas;return this._setupDone||(h.dataset.hidden=!0,h.style.visibility="hidden"),this._userNode?this._userNode.appendChild(h):document.body.appendChild(h),i===e.WEBGL?(this._setProperty("_renderer",new d.RendererGL(h,this,!0)),this._isdefaultGraphics=!0):this._isdefaultGraphics||(this._setProperty("_renderer",new d.Renderer2D(h,this,!0)),this._isdefaultGraphics=!0),this._renderer.resize(a,b),this._renderer._applyDefaults(),g&&this._elements.push(this._renderer),this._renderer},d.prototype.resizeCanvas=function(a,b,c){if(this._renderer){var d={};for(var e in this.drawingContext){var f=this.drawingContext[e];"object"!=typeof f&&"function"!=typeof f&&(d[e]=f)}this._renderer.resize(a,b);for(var g in d)this.drawingContext[g]=d[g];c||this.redraw()}},d.prototype.noCanvas=function(){this.canvas&&this.canvas.parentNode.removeChild(this.canvas)},d.prototype.createGraphics=function(a,b,c){return new d.Graphics(a,b,c,this)},d.prototype.blendMode=function(a){if(a!==e.BLEND&&a!==e.DARKEST&&a!==e.LIGHTEST&&a!==e.DIFFERENCE&&a!==e.MULTIPLY&&a!==e.EXCLUSION&&a!==e.SCREEN&&a!==e.REPLACE&&a!==e.OVERLAY&&a!==e.HARD_LIGHT&&a!==e.SOFT_LIGHT&&a!==e.DODGE&&a!==e.BURN&&a!==e.ADD&&a!==e.NORMAL)throw new Error("Mode "+a+" not recognized.");this._renderer.blendMode(a)},b.exports=d},{"../webgl/p5.RendererGL":86,"./constants":36,"./core":37,"./p5.Graphics":42,"./p5.Renderer2D":44}],46:[function(a,b,c){window.requestAnimationFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a,b){window.setTimeout(a,1e3/60)}}(),window.performance=window.performance||{},window.performance.now=function(){var a=Date.now();return window.performance.now||window.performance.mozNow||window.performance.msNow||window.performance.oNow||window.performance.webkitNow||function(){return Date.now()-a}}(),function(){"use strict";"undefined"==typeof Uint8ClampedArray||Uint8ClampedArray.prototype.slice||Object.defineProperty(Uint8ClampedArray.prototype,"slice",{value:Array.prototype.slice,writable:!0,configurable:!0,enumerable:!1})}()},{}],47:[function(a,b,c){"use strict";var d=a("./core");d.prototype.exit=function(){throw"exit() not implemented, see remove()"},d.prototype.noLoop=function(){this._loop=!1},d.prototype.loop=function(){this._loop=!0,this._draw()},d.prototype.push=function(){this._renderer.push(),this._styles.push({_doStroke:this._renderer._doStroke,_strokeSet:this._renderer._strokeSet,_doFill:this._renderer._doFill,_fillSet:this._renderer._fillSet,_tint:this._renderer._tint,_imageMode:this._renderer._imageMode,_rectMode:this._renderer._rectMode,_ellipseMode:this._renderer._ellipseMode,_colorMode:this._renderer._colorMode,_textFont:this._renderer._textFont,_textLeading:this._renderer._textLeading,_textSize:this._renderer._textSize,_textStyle:this._renderer._textStyle})},d.prototype.pop=function(){this._renderer.pop();var a=this._styles.pop();for(var b in a)this._renderer[b]=a[b]},d.prototype.pushStyle=function(){throw new Error("pushStyle() not used, see push()")},d.prototype.popStyle=function(){throw new Error("popStyle() not used, see pop()")},d.prototype.redraw=function(){this.resetMatrix(),this._renderer.isP3D&&this._renderer._update();var a=1;if(1===arguments.length)try{parseInt(arguments[0])>1&&(a=parseInt(arguments[0]))}catch(b){}var c=this.setup||window.setup,d=this.draw||window.draw;if("function"==typeof d){"undefined"==typeof c&&this.scale(this._pixelDensity,this._pixelDensity);for(var e=this,f=function(a){a.call(e)},g=0;a>g;g++)this._registeredMethods.pre.forEach(f),d(),this._registeredMethods.post.forEach(f)}},d.prototype.size=function(){var a="size() is not a valid p5 function, to set the size of the ";throw a+="drawing canvas, please use createCanvas() instead"},b.exports=d},{"./core":37}],48:[function(a,b,c){"use strict";var d=a("./core"),e=a("./constants");d.prototype.applyMatrix=function(a,b,c,d,e,f){return this._renderer.applyMatrix(a,b,c,d,e,f),this},d.prototype.popMatrix=function(){throw new Error("popMatrix() not used, see pop()")},d.prototype.printMatrix=function(){throw new Error("printMatrix() not implemented")},d.prototype.pushMatrix=function(){throw new Error("pushMatrix() not used, see push()")},d.prototype.resetMatrix=function(){return this._renderer.resetMatrix(),this},d.prototype.rotate=function(){for(var a,b=new Array(arguments.length),c=0;c1?this._renderer.rotate(a,b[1]):this._renderer.rotate(a),this},d.prototype.rotateX=function(a){for(var b=new Array(arguments.length),c=0;c0))throw"vertex() must be used once before calling quadraticVertex()";k=!0;for(var i=[],j=0;jn||Math.abs(this.accelerationY-this.pAccelerationY)>n||Math.abs(this.accelerationZ-this.pAccelerationZ)>n)&&a();var b=this.deviceTurned||window.deviceTurned;if("function"==typeof b){var c=this.rotationX+180,d=this.pRotationX+180,p=h+180;c-d>0&&270>c-d||-270>c-d?k="clockwise":(0>c-d||c-d>270)&&(k="counter-clockwise"),k!==e&&(p=c),Math.abs(c-p)>90&&Math.abs(c-p)<270&&(p=c,this._setProperty("turnAxis","X"),b()),e=k,h=p-180;var q=this.rotationY+180,r=this.pRotationY+180,s=i+180;q-r>0&&270>q-r||-270>q-r?l="clockwise":(0>q-r||q-this.pRotationY>270)&&(l="counter-clockwise"),l!==f&&(s=q),Math.abs(q-s)>90&&Math.abs(q-s)<270&&(s=q,this._setProperty("turnAxis","Y"),b()),f=l,i=s-180,this.rotationZ-this.pRotationZ>0&&this.rotationZ-this.pRotationZ<270||this.rotationZ-this.pRotationZ<-270?m="clockwise":(this.rotationZ-this.pRotationZ<0||this.rotationZ-this.pRotationZ>270)&&(m="counter-clockwise"),m!==g&&(j=this.rotationZ),Math.abs(this.rotationZ-j)>90&&Math.abs(this.rotationZ-j)<270&&(j=this.rotationZ,this._setProperty("turnAxis","Z"),b()),g=m,this._setProperty("turnAxis",void 0)}var t=this.deviceShaken||window.deviceShaken;if("function"==typeof t){var u,v;null!==this.pAccelerationX&&(u=Math.abs(this.accelerationX-this.pAccelerationX),v=Math.abs(this.accelerationY-this.pAccelerationY)),u+v>o&&t()}},b.exports=d},{"../core/core":37}],51:[function(a,b,c){"use strict";var d=a("../core/core"),e={};d.prototype.isKeyPressed=!1, +d.prototype.keyIsPressed=!1,d.prototype.key="",d.prototype.keyCode=0,d.prototype._onkeydown=function(a){if(!e[a.which]){this._setProperty("isKeyPressed",!0),this._setProperty("keyIsPressed",!0),this._setProperty("keyCode",a.which),e[a.which]=!0;var b=String.fromCharCode(a.which);b||(b=a.which),this._setProperty("key",b);var c=this.keyPressed||window.keyPressed;if("function"==typeof c&&!a.charCode){var d=c(a);d===!1&&a.preventDefault()}}},d.prototype._onkeyup=function(a){var b=this.keyReleased||window.keyReleased;this._setProperty("isKeyPressed",!1),this._setProperty("keyIsPressed",!1),this._setProperty("_lastKeyCodeTyped",null),e[a.which]=!1;var c=String.fromCharCode(a.which);if(c||(c=a.which),this._setProperty("key",c),this._setProperty("keyCode",a.which),"function"==typeof b){var d=b(a);d===!1&&a.preventDefault()}},d.prototype._onkeypress=function(a){if(a.which!==this._lastKeyCodeTyped){this._setProperty("keyCode",a.which),this._setProperty("_lastKeyCodeTyped",a.which),this._setProperty("key",String.fromCharCode(a.which));var b=this.keyTyped||window.keyTyped;if("function"==typeof b){var c=b(a);c===!1&&a.preventDefault()}}},d.prototype._onblur=function(a){e={}},d.prototype.keyIsDown=function(a){return e[a]},b.exports=d},{"../core/core":37}],52:[function(a,b,c){"use strict";function d(a,b){var c=a.getBoundingClientRect();return{x:b.clientX-c.left,y:b.clientY-c.top,winX:b.clientX,winY:b.clientY}}var e=a("../core/core"),f=a("../core/constants");e.prototype._hasMouseInteracted=!1,e.prototype.mouseX=0,e.prototype.mouseY=0,e.prototype.pmouseX=0,e.prototype.pmouseY=0,e.prototype.winMouseX=0,e.prototype.winMouseY=0,e.prototype.pwinMouseX=0,e.prototype.pwinMouseY=0,e.prototype.mouseButton=0,e.prototype.mouseIsPressed=!1,e.prototype.isMousePressed=!1,e.prototype._updateNextMouseCoords=function(a){var b=this.mouseX,c=this.mouseY,e=this.winMouseX,f=this.winMouseY;if("touchstart"===a.type||"touchmove"===a.type||"touchend"===a.type||a.touches)b=this.touchX,c=this.touchY,e=this.winTouchX,f=this.winTouchY;else if(null!==this._curElement){var g=d(this._curElement.elt,a);b=g.x,c=g.y,e=g.winX,f=g.winY}this._setProperty("mouseX",b),this._setProperty("mouseY",c),this._setProperty("winMouseX",e),this._setProperty("winMouseY",f),this._hasMouseInteracted||(this._updateMouseCoords(),this._setProperty("_hasMouseInteracted",!0))},e.prototype._updateMouseCoords=function(){this._setProperty("pmouseX",this.mouseX),this._setProperty("pmouseY",this.mouseY),this._setProperty("pwinMouseX",this.winMouseX),this._setProperty("pwinMouseY",this.winMouseY)},e.prototype._setMouseButton=function(a){1===a.button?this._setProperty("mouseButton",f.CENTER):2===a.button?this._setProperty("mouseButton",f.RIGHT):this._setProperty("mouseButton",f.LEFT)},e.prototype._onmousemove=function(a){var b,c=this._isGlobal?window:this;this._updateNextMouseCoords(a),this._updateNextTouchCoords(a),this.isMousePressed?"function"==typeof c.mouseDragged?(b=c.mouseDragged(a),b===!1&&a.preventDefault()):"function"==typeof c.touchMoved&&(b=c.touchMoved(a),b===!1&&a.preventDefault()):"function"==typeof c.mouseMoved&&(b=c.mouseMoved(a),b===!1&&a.preventDefault())},e.prototype._onmousedown=function(a){var b,c=this._isGlobal?window:this;this._setProperty("isMousePressed",!0),this._setProperty("mouseIsPressed",!0),this._setMouseButton(a),this._updateNextMouseCoords(a),this._updateNextTouchCoords(a),"function"==typeof c.mousePressed?(b=c.mousePressed(a),b===!1&&a.preventDefault()):"function"==typeof c.touchStarted&&(b=c.touchStarted(a),b===!1&&a.preventDefault())},e.prototype._onmouseup=function(a){var b,c=this._isGlobal?window:this;this._setProperty("isMousePressed",!1),this._setProperty("mouseIsPressed",!1),"function"==typeof c.mouseReleased?(b=c.mouseReleased(a),b===!1&&a.preventDefault()):"function"==typeof c.touchEnded&&(b=c.touchEnded(a),b===!1&&a.preventDefault())},e.prototype._ondragend=e.prototype._onmouseup,e.prototype._ondragover=e.prototype._onmousemove,e.prototype._onclick=function(a){var b=this._isGlobal?window:this;if("function"==typeof b.mouseClicked){var c=b.mouseClicked(a);c===!1&&a.preventDefault()}},e.prototype._onwheel=function(a){var b=this._isGlobal?window:this;if("function"==typeof b.mouseWheel){a.delta=a.deltaY;var c=b.mouseWheel(a);c===!1&&a.preventDefault()}},b.exports=e},{"../core/constants":36,"../core/core":37}],53:[function(a,b,c){"use strict";function d(a,b,c){c=c||0;var d=a.getBoundingClientRect(),e=b.touches[c]||b.changedTouches[c];return{x:e.clientX-d.left,y:e.clientY-d.top,winX:e.clientX,winY:e.clientY,id:e.identifier}}var e=a("../core/core");e.prototype._hasTouchInteracted=!1,e.prototype.touchX=0,e.prototype.touchY=0,e.prototype.ptouchX=0,e.prototype.ptouchY=0,e.prototype.winTouchX=0,e.prototype.winTouchY=0,e.prototype.pwinTouchX=0,e.prototype.pwinTouchY=0,e.prototype.touches=[],e.prototype.touchIsDown=!1,e.prototype._updateNextTouchCoords=function(a){var b=this.touchX,c=this.touchY,e=this.winTouchX,f=this.winTouchY;if("mousedown"!==a.type&&"mousemove"!==a.type&&"mouseup"!==a.type&&a.touches){if(null!==this._curElement){var g=d(this._curElement.elt,a,0);b=g.x,c=g.y,e=g.winX,f=g.winY;for(var h=[],i=0;ib?1:248>b?b:248,g!==b){g=b,h=1+g<<1,i=new Int32Array(h),j=new Array(h);for(var c=0;h>c;c++)j[c]=new Int32Array(256);for(var d,e,f,k,l=1,m=b-1;b>l;l++){i[b+l]=i[m]=e=m*m,f=j[b+l],k=j[m--];for(var n=0;256>n;n++)f[n]=k[n]=e*n}d=i[b]=b*b,f=j[b];for(var o=0;256>o;o++)f[o]=d*o}}function e(a,b){for(var c=f._toPixels(a),e=a.width,k=a.height,l=e*k,m=new Int32Array(l),n=0;l>n;n++)m[n]=f._getARGB(c,n);var o,p,q,r,s,t,u,v,w,x,y=new Int32Array(l),z=new Int32Array(l),A=new Int32Array(l),B=new Int32Array(l),C=0;d(b);var D,E,F,G;for(E=0;k>E;E++){for(D=0;e>D;D++){if(r=q=p=s=o=0,t=D-g,0>t)x=-t,t=0;else{if(t>=e)break;x=0}for(F=x;h>F&&!(t>=e);F++){var H=m[t+C];G=j[F],s+=G[(-16777216&H)>>>24],p+=G[(16711680&H)>>16],q+=G[(65280&H)>>8],r+=G[255&H],o+=i[F],t++}u=C+D,y[u]=s/o,z[u]=p/o,A[u]=q/o,B[u]=r/o}C+=e}for(C=0,v=-g,w=v*e,E=0;k>E;E++){for(D=0;e>D;D++){if(r=q=p=s=o=0,0>v)x=u=-v,t=D;else{if(v>=k)break;x=0,u=v,t=D+w}for(F=x;h>F&&!(u>=k);F++)G=j[F],s+=G[y[t]],p+=G[z[t]],q+=G[A[t]],r+=G[B[t]],o+=i[F],u++,t+=e;m[D+C]=s/o<<24|p/o<<16|q/o<<8|r/o}C+=e,w+=e,v++}f._setPixels(c,m)}var f={};f._toPixels=function(a){return a instanceof ImageData?a.data:a.getContext("2d").getImageData(0,0,a.width,a.height).data},f._getARGB=function(a,b){var c=4*b;return a[c+3]<<24&4278190080|a[c]<<16&16711680|a[c+1]<<8&65280|255&a[c+2]},f._setPixels=function(a,b){for(var c=0,d=0,e=a.length;e>d;d++)c=4*d,a[c+0]=(16711680&b[d])>>>16,a[c+1]=(65280&b[d])>>>8,a[c+2]=255&b[d],a[c+3]=(4278190080&b[d])>>>24},f._toImageData=function(a){return a instanceof ImageData?a:a.getContext("2d").getImageData(0,0,a.width,a.height)},f._createImageData=function(a,b){return f._tmpCanvas=document.createElement("canvas"),f._tmpCtx=f._tmpCanvas.getContext("2d"),this._tmpCtx.createImageData(a,b)},f.apply=function(a,b,c){var d=a.getContext("2d"),e=d.getImageData(0,0,a.width,a.height),f=b(e,c);f instanceof ImageData?d.putImageData(f,0,0,0,0,a.width,a.height):d.putImageData(e,0,0,0,0,a.width,a.height)},f.threshold=function(a,b){var c=f._toPixels(a);void 0===b&&(b=.5);for(var d=Math.floor(255*b),e=0;e=d?255:0,c[e]=c[e+1]=c[e+2]=g}},f.gray=function(a){for(var b=f._toPixels(a),c=0;cb||b>255)throw new Error("Level must be greater than 2 and less than 255 for posterize");for(var d=b-1,e=0;e>8)/d,c[e+1]=255*(h*b>>8)/d,c[e+2]=255*(i*b>>8)/d}},f.dilate=function(a){for(var b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t=f._toPixels(a),u=0,v=t.length?t.length/4:0,w=new Int32Array(v);v>u;)for(b=u,c=u+a.width;c>u;)d=e=f._getARGB(t,u),i=u-1,h=u+1,j=u-a.width,k=u+a.width,b>i&&(i=u),h>=c&&(h=u),0>j&&(j=0),k>=v&&(k=u),n=f._getARGB(t,j),m=f._getARGB(t,i),o=f._getARGB(t,k),l=f._getARGB(t,h),g=77*(d>>16&255)+151*(d>>8&255)+28*(255&d),q=77*(m>>16&255)+151*(m>>8&255)+28*(255&m),p=77*(l>>16&255)+151*(l>>8&255)+28*(255&l),r=77*(n>>16&255)+151*(n>>8&255)+28*(255&n),s=77*(o>>16&255)+151*(o>>8&255)+28*(255&o),q>g&&(e=m,g=q),p>g&&(e=l,g=p),r>g&&(e=n,g=r),s>g&&(e=o,g=s),w[u++]=e;f._setPixels(t,w)},f.erode=function(a){for(var b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t=f._toPixels(a),u=0,v=t.length?t.length/4:0,w=new Int32Array(v);v>u;)for(b=u,c=u+a.width;c>u;)d=e=f._getARGB(t,u),i=u-1,h=u+1,j=u-a.width,k=u+a.width,b>i&&(i=u),h>=c&&(h=u),0>j&&(j=0),k>=v&&(k=u),n=f._getARGB(t,j),m=f._getARGB(t,i),o=f._getARGB(t,k),l=f._getARGB(t,h),g=77*(d>>16&255)+151*(d>>8&255)+28*(255&d),q=77*(m>>16&255)+151*(m>>8&255)+28*(255&m),p=77*(l>>16&255)+151*(l>>8&255)+28*(255&l),r=77*(n>>16&255)+151*(n>>8&255)+28*(255&n),s=77*(o>>16&255)+151*(o>>8&255)+28*(255&o),g>q&&(e=m,g=q),g>p&&(e=l,g=p),g>r&&(e=n,g=r),g>s&&(e=o,g=s),w[u++]=e;f._setPixels(t,w)};var g,h,i,j;f.blur=function(a,b){e(a,b)},b.exports=f},{}],55:[function(a,b,c){"use strict";var d=a("../core/core"),e=[];d.prototype.createImage=function(a,b){return new d.Image(a,b)},d.prototype.saveCanvas=function(){var a,b,c;if(3===arguments.length?(a=arguments[0],b=arguments[1],c=arguments[2]):2===arguments.length?"object"==typeof arguments[0]?(a=arguments[0],b=arguments[1]):(b=arguments[0],c=arguments[1]):1===arguments.length&&("object"==typeof arguments[0]?a=arguments[0]:b=arguments[0]),a instanceof d.Element&&(a=a.elt),a instanceof HTMLCanvasElement||(a=null),c||(c=d.prototype._checkFileExtension(b,c)[1],""===c&&(c="png")),a||this._curElement&&this._curElement.elt&&(a=this._curElement.elt),d.prototype._isSafari()){var e="Hello, Safari user!\n";e+="Now capturing a screenshot...\n",e+="To save this image,\n",e+="go to File --> Save As.\n",alert(e),window.location.href=a.toDataURL()}else{var f;if("undefined"==typeof c)c="png",f="image/png";else switch(c){case"png":f="image/png";break;case"jpeg":f="image/jpeg";break;case"jpg":f="image/jpeg";break;default:f="image/png"}var g="image/octet-stream",h=a.toDataURL(f);h=h.replace(f,g),d.prototype.downloadFile(h,b,c)}},d.prototype.saveFrames=function(a,b,c,f,g){var h=c||3;h=d.prototype.constrain(h,0,15),h=1e3*h;var i=f||15;i=d.prototype.constrain(i,0,22);var j=0,k=d.prototype._makeFrame,l=this._curElement.elt,m=setInterval(function(){k(a+j,b,l),j++},1e3/i);setTimeout(function(){if(clearInterval(m),g)g(e);else for(var a=0;a0&&b>a?a:b}var e=a("../core/core"),f=a("./filters"),g=a("../core/canvas"),h=a("../core/constants");a("../core/error_helpers"),e.prototype.loadImage=function(a,b,c){var d=new Image,f=new e.Image(1,1,this),g=e._getDecrementPreload.apply(this,arguments);return d.onload=function(){f.width=f.canvas.width=d.width,f.height=f.canvas.height=d.height,f.drawingContext.drawImage(d,0,0),"function"==typeof b&&b(f),g&&b!==g&&g()},d.onerror=function(a){e._friendlyFileLoadError(0,d.src),"function"==typeof c&&c!==g&&c(a)},0!==a.indexOf("data:image/")&&(d.crossOrigin="Anonymous"),d.src=a,f},e.prototype.image=function(a,b,c,e,f,h,i,j,k){if(arguments.length<=5)if(h=b||0,i=c||0,b=0,c=0,a.elt&&a.elt.videoWidth&&!a.canvas){var l=a.elt.videoWidth,m=a.elt.videoHeight;j=e||a.elt.width,k=f||a.elt.width*m/l,e=l,f=m}else j=e||a.width,k=f||a.height,e=a.width,f=a.height;else{if(9!==arguments.length)throw"Wrong number of arguments to image()";b=b||0,c=c||0,e=d(e,a.width),f=d(f,a.height),h=h||0,i=i||0,j=j||a.width,k=k||a.height}var n=g.modeAdjust(h,i,j,k,this._renderer._imageMode);this._renderer.image(a,b,c,e,f,n.x,n.y,n.w,n.h)},e.prototype.tint=function(){var a=this.color.apply(this,arguments);this._renderer._tint=a.levels},e.prototype.noTint=function(){this._renderer._tint=null},e.prototype._getTintedImageCanvas=function(a){if(!a.canvas)return a;var b=f._toPixels(a.canvas),c=document.createElement("canvas");c.width=a.canvas.width,c.height=a.canvas.height;for(var d=c.getContext("2d"),e=d.createImageData(a.canvas.width,a.canvas.height),g=e.data,h=0;h0&&this.loadPixels()},d.Image.prototype.copy=function(){d.prototype.copy.apply(this,arguments)},d.Image.prototype.mask=function(a){void 0===a&&(a=this);var b=this.drawingContext.globalCompositeOperation,c=1;a instanceof d.Renderer&&(c=a._pInst._pixelDensity);var e=[a,0,0,c*a.width,c*a.height,0,0,this.width,this.height];this.drawingContext.globalCompositeOperation="destination-in",d.Image.prototype.copy.apply(this,e),this.drawingContext.globalCompositeOperation=b},d.Image.prototype.filter=function(a,b){e.apply(this.canvas,e[a.toLowerCase()],b)},d.Image.prototype.blend=function(){d.prototype.blend.apply(this,arguments)},d.Image.prototype.save=function(a,b){var c;if(b)switch(b.toLowerCase()){case"png":c="image/png";break;case"jpeg":c="image/jpeg";break;case"jpg":c="image/jpeg";break;default:c="image/png"}else b="png",c="image/png";var e="image/octet-stream",f=this.canvas.toDataURL(c);f=f.replace(c,e),d.prototype.downloadFile(f,a,b)},b.exports=d.Image},{"../core/core":37,"./filters":54}],58:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./filters");a("../color/p5.Color"),d.prototype.pixels=[],d.prototype.blend=function(){this._renderer?this._renderer.blend.apply(this._renderer,arguments):d.Renderer2D.prototype.blend.apply(this,arguments)},d.prototype.copy=function(){d.Renderer2D._copyHelper.apply(this,arguments)},d.prototype.filter=function(a,b){e.apply(this.canvas,e[a.toLowerCase()],b)},d.prototype.get=function(a,b,c,d){return this._renderer.get(a,b,c,d)},d.prototype.loadPixels=function(){this._renderer.loadPixels()},d.prototype.set=function(a,b,c){this._renderer.set(a,b,c)},d.prototype.updatePixels=function(a,b,c,d){0!==this.pixels.length&&this._renderer.updatePixels(a,b,c,d)},b.exports=d},{"../color/p5.Color":31,"../core/core":37,"./filters":54}],59:[function(a,b,c){"use strict";function d(a,b){var c={};if(b=b||[],"undefined"==typeof b)for(var d=0;d/g,">").replace(/"/g,""").replace(/'/g,"'")}function f(a,b){b&&b!==!0&&"true"!==b||(b=""),a||(a="untitled");var c="";return a&&a.indexOf(".")>-1&&(c=a.split(".").pop()),b&&c!==b&&(c=b,a=a+"."+c),[a,c]}function g(a){document.body.removeChild(a.target)}var h=a("../core/core"),i=a("reqwest"),j=a("opentype.js");a("../core/error_helpers"),h._getDecrementPreload=function(){var a=arguments[arguments.length-1];return(window.preload||this&&this.preload)&&"function"==typeof a?a:null},h.prototype.loadFont=function(a,b,c){var d=new h.Font(this),e=h._getDecrementPreload.apply(this,arguments);return j.load(a,function(f,g){if(f)return"undefined"!=typeof c&&c!==e?c(f):(h._friendlyFileLoadError(4,a),void console.error(f,a));d.font=g,"undefined"!=typeof b&&b(d),e&&b!==e&&e();var i,j,k=["ttf","otf","woff","woff2"],l=a.split("\\").pop().split("/").pop(),m=l.lastIndexOf("."),n=1>m?null:l.substr(m+1);k.indexOf(n)>-1&&(i=l.substr(0,m),j=document.createElement("style"),j.appendChild(document.createTextNode("\n@font-face {\nfont-family: "+i+";\nsrc: url("+a+");\n}\n")),document.head.appendChild(j))}),d},h.prototype.createInput=function(){throw"not yet implemented"},h.prototype.createReader=function(){throw"not yet implemented"},h.prototype.loadBytes=function(){throw"not yet implemented"},h.prototype.loadJSON=function(){for(var a,b=arguments[0],c=arguments[1],d=h._getDecrementPreload.apply(this,arguments),e={},f="json",g=2;g"),d.print("");var k=' "),d.print(""),d.print(" "),"0"!==f[0]){d.print(" ");for(var l=0;l"+m),d.print(" ")}d.print(" ")}for(var n=0;n");for(var o=0;o"+q),d.print(" ")}d.print(" ")}d.print("
"),d.print(""),d.print("")}d.close(),d.flush()},h.prototype.writeFile=function(a,b,c){var d="application/octet-stream";h.prototype._isSafari()&&(d="text/plain");var e=new Blob(a,{type:d}),f=window.URL.createObjectURL(e);h.prototype.downloadFile(f,b,c)},h.prototype.downloadFile=function(a,b,c){var d=f(b,c),e=d[0],i=d[1],j=document.createElement("a");if(j.href=a,j.download=e,j.onclick=g,j.style.display="none",document.body.appendChild(j),h.prototype._isSafari()){var k="Hello, Safari user! To download this file...\n";k+="1. Go to File --> Save As.\n",k+='2. Choose "Page Source" as the Format.\n',k+='3. Name it with this extension: ."'+i+'"',alert(k)}j.click(),a=null},h.prototype._checkFileExtension=f,h.prototype._isSafari=function(){var a=Object.prototype.toString.call(window.HTMLElement);return a.indexOf("Constructor")>0},b.exports=h},{"../core/core":37,"../core/error_helpers":40,"opentype.js":8,reqwest:27}],60:[function(a,b,c){"use strict";var d=a("../core/core");d.Table=function(a){this.columns=[],this.rows=[]},d.Table.prototype.addRow=function(a){var b=a||new d.TableRow;if("undefined"==typeof b.arr||"undefined"==typeof b.obj)throw"invalid TableRow: "+b;return b.table=this,this.rows.push(b),b},d.Table.prototype.removeRow=function(a){this.rows[a].table=null;var b=this.rows.splice(a+1,this.rows.length);this.rows.pop(),this.rows=this.rows.concat(b)},d.Table.prototype.getRow=function(a){return this.rows[a]},d.Table.prototype.getRows=function(){return this.rows},d.Table.prototype.findRow=function(a,b){if("string"==typeof b){for(var c=0;c=0))throw'This table has no column named "'+a+'"';d=b[a],e[d]=b}else e[f]=this.rows[f].obj;return e},d.Table.prototype.getArray=function(){for(var a=[],b=0;b=0))throw'This table has no column named "'+a+'"';this.obj[a]=b,this.arr[c]=b}else{if(!(a0},d.XML.prototype.listChildren=function(){return this.children.map(function(a){return a.name})},d.XML.prototype.getChildren=function(a){return a?this.children.filter(function(b){return b.name===a}):this.children},d.XML.prototype.getChild=function(a){return"string"==typeof a?this.children.find(function(b){return b.name===a}):this.children[a]},d.XML.prototype.addChild=function(a){a instanceof d.XML&&this.children.push(a)},d.XML.prototype.removeChild=function(a){var b=-1;if("string"==typeof a){for(var c=0;ce;e++)d[e]=Math.random()}0>a&&(a=-a),0>b&&(b=-b),0>c&&(c=-c);for(var n,o,p,q,r,s=Math.floor(a),t=Math.floor(b),u=Math.floor(c),v=a-s,w=b-t,x=c-u,y=0,z=.5,A=0;k>A;A++){var B=s+(t<=1&&(s++,v--),w>=1&&(t++,w--),x>=1&&(u++,x--)}return y},e.prototype.noiseDetail=function(a,b){a>0&&(k=a),b>0&&(l=b)},e.prototype.noiseSeed=function(a){var b=function(){var a,b,c=4294967296,d=1664525,e=1013904223;return{setSeed:function(d){b=a=(null==d?Math.random()*c:d)>>>0},getSeed:function(){return a},rand:function(){return b=(d*b+e)%c,b/c}}}();b.setSeed(a),d=new Array(j+1);for(var c=0;j+1>c;c++)d[c]=b.rand()},b.exports=e},{"../core/core":37}],66:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./polargeometry"),f=a("../core/constants");d.Vector=function(){var a,b,c;arguments[0]instanceof d?(this.p5=arguments[0],a=arguments[1][0]||0,b=arguments[1][1]||0,c=arguments[1][2]||0):(a=arguments[0]||0,b=arguments[1]||0,c=arguments[2]||0),this.x=a,this.y=b,this.z=c},d.Vector.prototype.toString=function(){return"p5.Vector Object : ["+this.x+", "+this.y+", "+this.z+"]"},d.Vector.prototype.set=function(a,b,c){return a instanceof d.Vector?(this.x=a.x||0,this.y=a.y||0,this.z=a.z||0,this):a instanceof Array?(this.x=a[0]||0,this.y=a[1]||0,this.z=a[2]||0,this):(this.x=a||0,this.y=b||0,this.z=c||0,this)},d.Vector.prototype.copy=function(){return this.p5?new d.Vector(this.p5,[this.x,this.y,this.z]):new d.Vector(this.x,this.y,this.z)},d.Vector.prototype.add=function(a,b,c){return a instanceof d.Vector?(this.x+=a.x||0,this.y+=a.y||0,this.z+=a.z||0,this):a instanceof Array?(this.x+=a[0]||0,this.y+=a[1]||0,this.z+=a[2]||0,this):(this.x+=a||0,this.y+=b||0,this.z+=c||0,this)},d.Vector.prototype.sub=function(a,b,c){return a instanceof d.Vector?(this.x-=a.x||0,this.y-=a.y||0,this.z-=a.z||0,this):a instanceof Array?(this.x-=a[0]||0,this.y-=a[1]||0,this.z-=a[2]||0,this):(this.x-=a||0,this.y-=b||0,this.z-=c||0,this)},d.Vector.prototype.mult=function(a){return this.x*=a||0,this.y*=a||0,this.z*=a||0,this},d.Vector.prototype.div=function(a){return this.x/=a,this.y/=a,this.z/=a,this},d.Vector.prototype.mag=function(){return Math.sqrt(this.magSq())},d.Vector.prototype.magSq=function(){var a=this.x,b=this.y,c=this.z;return a*a+b*b+c*c},d.Vector.prototype.dot=function(a,b,c){return a instanceof d.Vector?this.dot(a.x,a.y,a.z):this.x*(a||0)+this.y*(b||0)+this.z*(c||0)},d.Vector.prototype.cross=function(a){var b=this.y*a.z-this.z*a.y,c=this.z*a.x-this.x*a.z,e=this.x*a.y-this.y*a.x;return this.p5?new d.Vector(this.p5,[b,c,e]):new d.Vector(b,c,e)},d.Vector.prototype.dist=function(a){var b=a.copy().sub(this);return b.mag()},d.Vector.prototype.normalize=function(){return 0===this.mag()?this:this.div(this.mag())},d.Vector.prototype.limit=function(a){var b=this.magSq();return b>a*a&&(this.div(Math.sqrt(b)),this.mult(a)),this},d.Vector.prototype.setMag=function(a){return this.normalize().mult(a)},d.Vector.prototype.heading=function(){var a=Math.atan2(this.y,this.x);return this.p5?this.p5._angleMode===f.RADIANS?a:e.radiansToDegrees(a):a},d.Vector.prototype.rotate=function(a){this.p5&&this.p5._angleMode===f.DEGREES&&(a=e.degreesToRadians(a));var b=this.heading()+a,c=this.mag();return this.x=Math.cos(b)*c,this.y=Math.sin(b)*c,this},d.Vector.prototype.lerp=function(a,b,c,e){return a instanceof d.Vector?this.lerp(a.x,a.y,a.z,b):(this.x+=(a-this.x)*e||0,this.y+=(b-this.y)*e||0,this.z+=(c-this.z)*e||0,this)},d.Vector.prototype.array=function(){return[this.x||0,this.y||0,this.z||0]},d.Vector.prototype.equals=function(a,b,c){var e,f,g;return a instanceof d.Vector?(e=a.x||0,f=a.y||0,g=a.z||0):a instanceof Array?(e=a[0]||0,f=a[1]||0,g=a[2]||0):(e=a||0,f=b||0,g=c||0),this.x===e&&this.y===f&&this.z===g},d.Vector.fromAngle=function(a){return this.p5&&this.p5._angleMode===f.DEGREES&&(a=e.degreesToRadians(a)),this.p5?new d.Vector(this.p5,[Math.cos(a),Math.sin(a),0]):new d.Vector(Math.cos(a),Math.sin(a),0)},d.Vector.random2D=function(){var a;return a=this.p5?this.p5._angleMode===f.DEGREES?this.p5.random(360):this.p5.random(f.TWO_PI):Math.random()*Math.PI*2,this.fromAngle(a)},d.Vector.random3D=function(){var a,b;this.p5?(a=this.p5.random(0,f.TWO_PI),b=this.p5.random(-1,1)):(a=Math.random()*Math.PI*2,b=2*Math.random()-1);var c=Math.sqrt(1-b*b)*Math.cos(a),e=Math.sqrt(1-b*b)*Math.sin(a);return this.p5?new d.Vector(this.p5,[c,e,b]):new d.Vector(c,e,b)},d.Vector.add=function(a,b,c){return c?c.set(a):c=a.copy(),c.add(b),c},d.Vector.sub=function(a,b,c){return c?c.set(a):c=a.copy(),c.sub(b),c},d.Vector.mult=function(a,b,c){return c?c.set(a):c=a.copy(),c.mult(b),c},d.Vector.div=function(a,b,c){return c?c.set(a):c=a.copy(),c.div(b),c},d.Vector.dot=function(a,b){return a.dot(b)},d.Vector.cross=function(a,b){return a.cross(b)},d.Vector.dist=function(a,b){return a.dist(b)},d.Vector.lerp=function(a,b,c,d){return d?d.set(a):d=a.copy(),d.lerp(b,c),d},d.Vector.angleBetween=function(a,b){var c=Math.acos(a.dot(b)/(a.mag()*b.mag()));return this.p5&&this.p5._angleMode===f.DEGREES&&(c=e.radiansToDegrees(c)),c},d.Vector.mag=function(a){var b=a.x,c=a.y,d=a.z,e=b*b+c*c+d*d;return Math.sqrt(e)},b.exports=d.Vector},{"../core/constants":36,"../core/core":37,"./polargeometry":67}],67:[function(a,b,c){b.exports={degreesToRadians:function(a){return 2*Math.PI*a/360},radiansToDegrees:function(a){return 360*a/(2*Math.PI)}}},{}],68:[function(a,b,c){"use strict";var d=a("../core/core"),e=!1,f=function(){var a,b,c=4294967296,d=1664525,e=1013904223;return{setSeed:function(d){b=a=(null==d?Math.random()*c:d)>>>0},getSeed:function(){return a},rand:function(){return b=(d*b+e)%c,b/c}}}();d.prototype.randomSeed=function(a){f.setSeed(a),e=!0},d.prototype.random=function(a,b){var c;if(c=e?f.rand():Math.random(),"undefined"==typeof a)return c;if("undefined"==typeof b)return a instanceof Array?a[Math.floor(c*a.length)]:c*a;if(a>b){var d=a;a=b,b=d}return c*(b-a)+a};var g,h=!1;d.prototype.randomGaussian=function(a,b){var c,d,e,f;if(h)c=g,h=!1;else{do d=this.random(2)-1,e=this.random(2)-1,f=d*d+e*e;while(f>=1);f=Math.sqrt(-2*Math.log(f)/f),c=d*f,g=e*f,h=!0}var i=a||0,j=b||1;return c*j+i},b.exports=d},{"../core/core":37}],69:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./polargeometry"),f=a("../core/constants");d.prototype._angleMode=f.RADIANS,d.prototype.acos=function(a){return this._angleMode===f.RADIANS?Math.acos(a):e.radiansToDegrees(Math.acos(a))},d.prototype.asin=function(a){return this._angleMode===f.RADIANS?Math.asin(a):e.radiansToDegrees(Math.asin(a))},d.prototype.atan=function(a){return this._angleMode===f.RADIANS?Math.atan(a):e.radiansToDegrees(Math.atan(a))},d.prototype.atan2=function(a,b){return this._angleMode===f.RADIANS?Math.atan2(a,b):e.radiansToDegrees(Math.atan2(a,b))},d.prototype.cos=function(a){return this._angleMode===f.RADIANS?Math.cos(a):Math.cos(this.radians(a))},d.prototype.sin=function(a){return this._angleMode===f.RADIANS?Math.sin(a):Math.sin(this.radians(a))},d.prototype.tan=function(a){return this._angleMode===f.RADIANS?Math.tan(a):Math.tan(this.radians(a))},d.prototype.degrees=function(a){return e.radiansToDegrees(a)},d.prototype.radians=function(a){return e.degreesToRadians(a)},d.prototype.angleMode=function(a){(a===f.DEGREES||a===f.RADIANS)&&(this._angleMode=a)},b.exports=d},{"../core/constants":36,"../core/core":37,"./polargeometry":67}],70:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.textAlign=function(a,b){return this._renderer.textAlign.apply(this._renderer,arguments)},d.prototype.textLeading=function(a){return this._renderer.textLeading.apply(this._renderer,arguments)},d.prototype.textSize=function(a){return this._renderer.textSize.apply(this._renderer,arguments)},d.prototype.textStyle=function(a){return this._renderer.textStyle.apply(this._renderer,arguments)},d.prototype.textWidth=function(a){return 0===a.length?0:this._renderer.textWidth.apply(this._renderer,arguments)},d.prototype.textAscent=function(){return this._renderer.textAscent()},d.prototype.textDescent=function(){return this._renderer.textDescent()},d.prototype._updateTextMetrics=function(){return this._renderer._updateTextMetrics()},b.exports=d},{"../core/core":37}],71:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("../core/constants");a("../core/error_helpers"),d.prototype.text=function(a,b,c,d,e){for(var f=new Array(arguments.length),g=0;gi;i+=f)g.push(n(a,i));return c.simplifyThreshold&&e(g,c.simplifyThreshold),g}function e(a,b){b="undefined"==typeof b?0:b;for(var c=0,d=a.length-1;a.length>3&&d>=0;--d)j(i(a,d-1),i(a,d),i(a,d+1),b)&&(a.splice(d%a.length,1),c++);return c}function f(a){for(var b,c=[],d=0;db?b%c+c:b%c]}function j(a,b,c,d){if(!d)return 0===k(a,b,c);"undefined"==typeof j.tmpPoint1&&(j.tmpPoint1=[],j.tmpPoint2=[]);var e=j.tmpPoint1,f=j.tmpPoint2;e.x=b.x-a.x,e.y=b.y-a.y,f.x=c.x-b.x,f.y=c.y-b.y;var g=e.x*f.x+e.y*f.y,h=Math.sqrt(e.x*e.x+e.y*e.y),i=Math.sqrt(f.x*f.x+f.y*f.y),l=Math.acos(g/(h*i));return d>l}function k(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])}function l(a,b,c,d,e,f,g,h,i){var j=1-i,k=Math.pow(j,3),l=Math.pow(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*Math.atan2(q-s,r-t)/Math.PI;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}}function m(a,b,c,d,e,f,g,h,i){return null==i?u(a,b,c,d,e,f,g,h):l(a,b,c,d,e,f,g,h,v(a,b,c,d,e,f,g,h,i))}function n(a,b,c){a=p(a);for(var d,e,f,g,h,i="",j={},k=0,n=0,o=a.length;o>n;n++){if(f=a[n],"M"===f[0])d=+f[1],e=+f[2];else{if(g=m(d,e,f[1],f[2],f[3],f[4],f[5],f[6]),k+g>b&&!c)return h=m(d,e,f[1],f[2],f[3],f[4],f[5],f[6],b-k),{x:h.x,y:h.y,alpha:h.alpha};k+=g,d=+f[5],e=+f[6]}i+=f.shift()+f}return j.end=i,h=c?k:l(d,e,f[0],f[1],f[2],f[3],f[4],f[5],1),h.alpha&&(h={x:h.x,y:h.y,alpha:h.alpha}),h}function o(a){var b=[],c=0,d=0,e=0,f=0,g=0;"M"===a[0][0]&&(c=+a[0][1],d=+a[0][2],e=c,f=d,g++,b[0]=["M",c,d]);for(var h,i,j,k=3===a.length&&"M"===a[0][0]&&"R"===a[1][0].toUpperCase()&&"Z"===a[2][0].toUpperCase(),l=g,m=a.length;m>l;l++){if(b.push(i=[]),j=a[l],j[0]!==String.prototype.toUpperCase.call(j[0]))switch(i[0]=String.prototype.toUpperCase.call(j[0]),i[0]){case"A":i[1]=j[1],i[2]=j[2],i[3]=j[3],i[4]=j[4],i[5]=j[5],i[6]=+(j[6]+c),i[7]=+(j[7]+d);break;case"V":i[1]=+j[1]+d;break;case"H":i[1]=+j[1]+c;break;case"R":h=[c,d].concat(j.slice(1));for(var n=2,o=h.length;o>n;n++)h[n]=+h[n]+c,h[++n]=+h[n]+d;b.pop(),b=b.concat(r(h,k));break;case"M":e=+j[1]+c,f=+j[2]+d;break;default:for(n=1,o=j.length;o>n;n++)i[n]=+j[n]+(n%2?c:d)}else if("R"===j[0])h=[c,d].concat(j.slice(1)),b.pop(),b=b.concat(r(h,k)),i=["R"].concat(j.slice(-2));else for(var p=0,q=j.length;q>p;p++)i[p]=j[p];switch(i[0]){case"Z":c=e,d=f;break;case"H":c=i[1];break;case"V":d=i[1];break;case"M":e=i[i.length-2],f=i[i.length-1];break;default:c=i[i.length-2],d=i[i.length-1]}}return b}function p(a,b){for(var c=o(a),d=b&&o(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(a[0]in f||(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"].concat(q.apply(0,[b.x,b.y].concat(a.slice(1))));break;case"S":"C"===c||"S"===c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e].concat(a.slice(1));break;case"T":"Q"===c||"T"===c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"].concat(t(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"].concat(t(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"].concat(s(b.x,b.y,a[1],a[2]));break;case"H":a=["C"].concat(s(b.x,b.y,a[1],b.y));break;case"V":a=["C"].concat(s(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"].concat(s(b.x,b.y,b.X,b.Y))}return a}),h=function(a,b){if(a[b].length>7){a[b].shift();for(var e=a[b];e.length;)j[b]="A",d&&(k[b]="A"),a.splice(b++,0,["C"].concat(e.splice(0,6)));a.splice(b,1),p=Math.max(c.length,d&&d.length||0)}},i=function(a,b,e,f,g){a&&b&&"M"===a[g][0]&&"M"!==b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),e.bx=0,e.by=0,e.x=a[g][1],e.y=a[g][2],p=Math.max(c.length,d&&d.length||0))},j=[],k=[],l="",m="",n=0,p=Math.max(c.length,d&&d.length||0);p>n;n++){c[n]&&(l=c[n][0]),"C"!==l&&(j[n]=l,n&&(m=j[n-1])),c[n]=g(c[n],e,m),"A"!==j[n]&&"C"===l&&(j[n]="C"),h(c,n),d&&(d[n]&&(l=d[n][0]),"C"!==l&&(k[n]=l,n&&(m=k[n-1])),d[n]=g(d[n],f,m),"A"!==k[n]&&"C"===l&&(k[n]="C"),h(d,n)),i(c,d,e,f,n),i(d,c,f,e,n);var r=c[n],u=d&&d[n],v=r.length,w=d&&u.length;e.x=r[v-2],e.y=r[v-1],e.bx=parseFloat(r[v-4])||e.x,e.by=parseFloat(r[v-3])||e.y,f.bx=d&&(parseFloat(u[w-4])||f.x),f.by=d&&(parseFloat(u[w-3])||f.y),f.x=d&&u[w-2],f.y=d&&u[w-1]}return d?[c,d]:c}function q(a,b,c,d,e,f,g,h,i,j){var k,l,m,n,o,p=Math.PI,r=120*p/180,s=p/180*(+e||0),t=[],u=function(a,b,c){var d=a*Math.cos(c)-b*Math.sin(c),e=a*Math.sin(c)+b*Math.cos(c);return{x:d,y:e}};if(j)k=j[0],l=j[1],m=j[2],n=j[3];else{o=u(a,b,-s),a=o.x,b=o.y,o=u(h,i,-s),h=o.x,i=o.y;var v=(a-h)/2,w=(b-i)/2,x=v*v/(c*c)+w*w/(d*d);x>1&&(x=Math.sqrt(x),c=x*c,d=x*d);var y=c*c,z=d*d,A=(f===g?-1:1)*Math.sqrt(Math.abs((y*z-y*w*w-z*v*v)/(y*w*w+z*v*v)));m=A*c*w/d+(a+h)/2,n=A*-d*v/c+(b+i)/2,k=Math.asin(((b-n)/d).toFixed(9)),l=Math.asin(((i-n)/d).toFixed(9)),k=m>a?p-k:k,l=m>h?p-l:l,0>k&&(k=2*p+k),0>l&&(l=2*p+l),g&&k>l&&(k-=2*p),!g&&l>k&&(l-=2*p)}var B=l-k;if(Math.abs(B)>r){var C=l,D=h,E=i;l=k+r*(g&&l>k?1:-1),h=m+c*Math.cos(l),i=n+d*Math.sin(l),t=q(h,i,c,d,e,0,g,D,E,[l,C,m,n])}B=l-k;var F=Math.cos(k),G=Math.sin(k),H=Math.cos(l),I=Math.sin(l),J=Math.tan(B/4),K=4/3*c*J,L=4/3*d*J,M=[a,b],N=[a+K*G,b-L*F],O=[h+K*I,i-L*H],P=[h,i];if(N[0]=2*M[0]-N[0],N[1]=2*M[1]-N[1],j)return[N,O,P].concat(t);t=[N,O,P].concat(t).join().split(",");for(var Q=[],R=0,S=t.length;S>R;R++)Q[R]=R%2?u(t[R-1],t[R],s).y:u(t[R],t[R+1],s).x;return Q}function r(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4===d?f[3]={x:+a[0],y:+a[1]}:e-2===d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4===d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function s(a,b,c,d){return[a,b,c,d,c,d]}function t(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]}function u(a,b,c,d,e,f,g,h,i){null==i&&(i=1),i=i>1?1:0>i?0:i;for(var j=i/2,k=12,l=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],m=0,n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0;k>o;o++){var p=j*l[o]+j,q=w(p,a,c,e,g),r=w(p,b,d,f,h),s=q*q+r*r;m+=n[o]*Math.sqrt(s)}return j*m}function v(a,b,c,d,e,f,g,h,i){if(!(0>i||u(a,b,c,d,e,f,g,h)n;)l/=2,m+=(i>j?1:-1)*l,j=u(a,b,c,d,e,f,g,h,m);return m}}function w(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function x(){for(var a=new Array(arguments.length),b=0;b2?a=this._getPath(a,b,c,d):"object"==typeof b&&(d=b),d&&"number"==typeof d.decimals&&(e=d.decimals),a.toPathData(e)},y.Font.prototype._getSVG=function(a,b,c,d){var e=3;return"string"==typeof a&&arguments.length>2?a=this._getPath(a,b,c,d):"object"==typeof b&&(d=b),d&&("number"==typeof d.decimals&&(e=d.decimals),"number"==typeof d.strokeWidth&&(a.strokeWidth=d.strokeWidth),"undefined"!=typeof d.fill&&(a.fill=d.fill),"undefined"!=typeof d.stroke&&(a.stroke=d.stroke)),a.toSVG(e)},y.Font.prototype._renderPath=function(a,b,c,d){var e,f=d&&d.renderer||this.parent._renderer,g=f.drawingContext;e="object"==typeof a&&a.commands?a.commands:this._getPath(a,b,c,d).commands,g.beginPath();for(var h=0;h1;)d=Math.random()*f|0,e=a[--f],a[f]=a[d],a[d]=e;return a},d.prototype.sort=function(a,b){var c=b?a.slice(0,Math.min(b,a.length)):a,d=b?a.slice(Math.min(b,a.length)):[];return c="string"==typeof c[0]?c.sort():c.sort(function(a,b){return a-b}),c.concat(d)},d.prototype.splice=function(a,b,c){return Array.prototype.splice.apply(a,[c,0].concat(b)),a},d.prototype.subset=function(a,b,c){return"undefined"!=typeof c?a.slice(b,b+c):a.slice(b,a.length)},b.exports=d},{"../core/core":37}],74:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype["float"]=function(a){return parseFloat(a)},d.prototype["int"]=function(a,b){return"string"==typeof a?(b=b||10,parseInt(a,b)):"number"==typeof a?0|a:"boolean"==typeof a?a?1:0:a instanceof Array?a.map(function(a){return d.prototype["int"](a,b)}):void 0},d.prototype.str=function(a){return a instanceof Array?a.map(d.prototype.str):String(a)},d.prototype["boolean"]=function(a){return"number"==typeof a?0!==a:"string"==typeof a?"true"===a.toLowerCase():"boolean"==typeof a?a:a instanceof Array?a.map(d.prototype["boolean"]):void 0},d.prototype["byte"]=function(a){var b=d.prototype["int"](a,10);return"number"==typeof b?(b+128)%256-128:b instanceof Array?b.map(d.prototype["byte"]):void 0},d.prototype["char"]=function(a){return"number"!=typeof a||isNaN(a)?a instanceof Array?a.map(d.prototype["char"]):"string"==typeof a?d.prototype["char"](parseInt(a,10)):void 0:String.fromCharCode(a)},d.prototype.unchar=function(a){return"string"==typeof a&&1===a.length?a.charCodeAt(0):a instanceof Array?a.map(d.prototype.unchar):void 0},d.prototype.hex=function(a,b){if(b=void 0===b||null===b?b=8:b,a instanceof Array)return a.map(function(a){return d.prototype.hex(a,b)});if("number"==typeof a){0>a&&(a=4294967295+a+1);for(var c=Number(a).toString(16).toUpperCase();c.length=b&&(c=c.substring(c.length-b,c.length)),c}},d.prototype.unhex=function(a){return a instanceof Array?a.map(d.prototype.unhex):parseInt("0x"+a,16)},b.exports=d},{"../core/core":37}],75:[function(a,b,c){"use strict";function d(){var a=arguments[0],b=0>a,c=b?a.toString().substring(1):a.toString(),d=c.indexOf("."),e=-1!==d?c.substring(0,d):c,f=-1!==d?c.substring(d+1):"",g=b?"-":"";if(3===arguments.length){var h="";(-1!==d||arguments[2]-f.length>0)&&(h="."),f.length>arguments[2]&&(f=f.substring(0,arguments[2]));for(var i=0;ic.length){c+=-1===b?".":"";for(var e=arguments[1]-c.length+1,f=0;e>f;f++)c+="0"}else c=c.substring(0,arguments[1]+1);return d+c}function f(){return parseFloat(arguments[0])>0?"+"+arguments[0].toString():arguments[0].toString()}function g(){return parseFloat(arguments[0])>0?" "+arguments[0].toString():arguments[0].toString()}var h=a("../core/core");h.prototype.join=function(a,b){return a.join(b)},h.prototype.match=function(a,b){return a.match(b)},h.prototype.matchAll=function(a,b){for(var c=new RegExp(b,"g"),d=c.exec(a),e=[];null!==d;)e.push(d),d=c.exec(a);return e},h.prototype.nf=function(){if(arguments[0]instanceof Array){var a=arguments[1],b=arguments[2];return arguments[0].map(function(c){return d(c,a,b)})}var c=Object.prototype.toString.call(arguments[0]);return"[object Arguments]"===c?3===arguments[0].length?this.nf(arguments[0][0],arguments[0][1],arguments[0][2]):2===arguments[0].length?this.nf(arguments[0][0],arguments[0][1]):this.nf(arguments[0][0]):d.apply(this,arguments)},h.prototype.nfc=function(){if(arguments[0]instanceof Array){var a=arguments[1];return arguments[0].map(function(b){return e(b,a)})}return e.apply(this,arguments)},h.prototype.nfp=function(){var a=this.nf.apply(this,arguments);return a instanceof Array?a.map(f):f(a)},h.prototype.nfs=function(){var a=this.nf.apply(this,arguments);return a instanceof Array?a.map(g):g(a)},h.prototype.split=function(a,b){return a.split(b)},h.prototype.splitTokens=function(){var a,b,c,d;return d=arguments[1],arguments.length>1?(c=/\]/g.exec(d),b=/\[/g.exec(d),b&&c?(d=d.slice(0,c.index)+d.slice(c.index+1),b=/\[/g.exec(d),d=d.slice(0,b.index)+d.slice(b.index+1),a=new RegExp("[\\["+d+"\\]]","g")):c?(d=d.slice(0,c.index)+d.slice(c.index+1),a=new RegExp("["+d+"\\]]","g")):b?(d=d.slice(0,b.index)+d.slice(b.index+1),a=new RegExp("["+d+"\\[]","g")):a=new RegExp("["+d+"]","g")):a=/\s/g,arguments[0].split(a).filter(function(a){return a})},h.prototype.trim=function(a){return a instanceof Array?a.map(this.trim):a.trim()},b.exports=h},{"../core/core":37}],76:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.day=function(){return(new Date).getDate()},d.prototype.hour=function(){return(new Date).getHours()},d.prototype.minute=function(){return(new Date).getMinutes()},d.prototype.millis=function(){return window.performance.now()},d.prototype.month=function(){return(new Date).getMonth()+1},d.prototype.second=function(){return(new Date).getSeconds()},d.prototype.year=function(){return(new Date).getFullYear()},b.exports=d},{"../core/core":37}],77:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.camera=function(a,b,c){for(var d=new Array(arguments.length),e=0;e0)if("v"===g[0]||"vn"===g[0]){var h=new e.Vector(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));c[g[0]].push(h)}else if("vt"===g[0]){var i=[parseFloat(g[1]),parseFloat(g[2])];c[g[0]].push(i)}else if("f"===g[0])for(var j=3;j0&&(this._renderer.geometryInHash(a.gid)||this._renderer.createBuffers(a.gid,a),this._renderer.drawBuffers(a.gid))},b.exports=e},{"../core/core":37,"./p5.Geometry":82}],81:[function(a,b,c){"use strict";var d=a("../core/core");d.prototype.normalMaterial=function(){return this._renderer._getShader("normalVert","normalFrag"),this},d.prototype.texture=function(){for(var a=new Array(arguments.length),b=0;bthis.vertices.length-1-this.detailX;b--)a.add(this.vertexNormals[b]);for(a=d.Vector.div(a,this.detailX),b=this.vertices.length-1;b>this.vertices.length-1-this.detailX;b--)this.vertexNormals[b]=a;return this},d.Geometry.prototype.normalize=function(){if(this.vertices.length>0){for(var a=this.vertices[0].copy(),b=this.vertices[0].copy(),c=0;c0?a.reduce(function(a,b){return a.concat(b)}):[]}function e(a){return d(a.map(function(a){return[a.x,a.y,a.z]}))}var f=a("../core/core"),g=0;f.RendererGL.prototype._initBufferDefaults=function(a){if(g++,g>1e3){var b=Object.keys(this.gHash)[0];delete this.gHash[b],g--}var c=this.GL;this.gHash[a]={},this.gHash[a].vertexBuffer=c.createBuffer(),this.gHash[a].normalBuffer=c.createBuffer(),this.gHash[a].uvBuffer=c.createBuffer(),this.gHash[a].indexBuffer=c.createBuffer()},f.RendererGL.prototype.createBuffers=function(a,b){var c=this.GL;this._setDefaultCamera(),this._initBufferDefaults(a);var f=this.mHash[this._getCurShaderId()];this.gHash[a].numberOfItems=3*b.faces.length,c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].vertexBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(e(b.vertices)),c.STATIC_DRAW),f.vertexPositionAttribute=c.getAttribLocation(f,"aPosition"),c.enableVertexAttribArray(f.vertexPositionAttribute),c.vertexAttribPointer(f.vertexPositionAttribute,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].normalBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(e(b.vertexNormals)),c.STATIC_DRAW),f.vertexNormalAttribute=c.getAttribLocation(f,"aNormal"),c.enableVertexAttribArray(f.vertexNormalAttribute),c.vertexAttribPointer(f.vertexNormalAttribute,3,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this.gHash[a].uvBuffer),c.bufferData(c.ARRAY_BUFFER,new Float32Array(d(b.uvs)),c.STATIC_DRAW),f.textureCoordAttribute=c.getAttribLocation(f,"aTexCoord"),c.enableVertexAttribArray(f.textureCoordAttribute),c.vertexAttribPointer(f.textureCoordAttribute,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.gHash[a].indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(d(b.faces)),c.STATIC_DRAW)},f.RendererGL.prototype.drawBuffers=function(a){this._setDefaultCamera();var b=this.GL,c=this._getCurShaderId(),d=this.mHash[c];return b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].vertexBuffer),b.vertexAttribPointer(d.vertexPositionAttribute,3,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].normalBuffer),b.vertexAttribPointer(d.vertexNormalAttribute,3,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,this.gHash[a].uvBuffer),b.vertexAttribPointer(d.textureCoordAttribute,2,b.FLOAT,!1,0,0),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this.gHash[a].indexBuffer),this._setMatrixUniforms(c),b.drawElements(b.TRIANGLES,this.gHash[a].numberOfItems,b.UNSIGNED_SHORT,0),this},b.exports=f.RendererGL},{"../core/core":37}],86:[function(a,b,c){"use strict";var d=a("../core/core"),e=a("./shader");a("../core/p5.Renderer"),a("./p5.Matrix");var f=[],g=1e3,h={alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1};d.RendererGL=function(a,b,c){return d.Renderer.call(this,a,b,c),this._initContext(),this.isP3D=!0,this.GL=this.drawingContext,this.ambientLightCount=0,this.directionalLightCount=0,this.pointLightCount=0,this._curCamera=null,this.uMVMatrix=new d.Matrix,this.uPMatrix=new d.Matrix,this.uNMatrix=new d.Matrix("mat3"),this.gHash={},this.mHash={},this.isImmediateDrawing=!1,this.immediateMode={},this.curFillColor=[.5,.5,.5,1],this.curStrokeColor=[.5,.5,.5,1],this.pointSize=5,this},d.RendererGL.prototype=Object.create(d.Renderer.prototype),d.RendererGL.prototype._initContext=function(){try{if(this.drawingContext=this.canvas.getContext("webgl",h)||this.canvas.getContext("experimental-webgl",h),null===this.drawingContext)throw new Error("Error creating webgl context");console.log("p5.RendererGL: enabled webgl context");var a=this.drawingContext;a.enable(a.DEPTH_TEST),a.depthFunc(a.LEQUAL),a.viewport(0,0,a.drawingBufferWidth,a.drawingBufferHeight)}catch(b){throw new Error(b)}},d.RendererGL.prototype._setDefaultCamera=function(){if(null===this._curCamera){var a=this.width,b=this.height;this.uPMatrix=d.Matrix.identity(),this.uPMatrix.perspective(60/180*Math.PI,a/b,.1,100),this._curCamera="default"}},d.RendererGL.prototype._update=function(){this.uMVMatrix=d.Matrix.identity(),this.translate(0,0,-(this.height/2)/Math.tan(30*Math.PI/180)),this.ambientLightCount=0,this.directionalLightCount=0,this.pointLightCount=0},d.RendererGL.prototype.background=function(){var a=this.GL,b=this._pInst.color.apply(this._pInst,arguments),c=b.levels[0]/255,d=b.levels[1]/255,e=b.levels[2]/255,f=b.levels[3]/255;a.clearColor(c,d,e,f),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},d.RendererGL.prototype._initShaders=function(a,b,c){var d=this.GL,f=d.createShader(d.VERTEX_SHADER);if(d.shaderSource(f,e[a]),d.compileShader(f),!d.getShaderParameter(f,d.COMPILE_STATUS))return alert("Yikes! An error occurred compiling the shaders:"+d.getShaderInfoLog(f)),null;var g=d.createShader(d.FRAGMENT_SHADER);if(d.shaderSource(g,e[b]),d.compileShader(g),!d.getShaderParameter(g,d.COMPILE_STATUS))return alert("Darn! An error occurred compiling the shaders:"+d.getShaderInfoLog(g)),null;var h=d.createProgram();return d.attachShader(h,f),d.attachShader(h,g),d.linkProgram(h),d.getProgramParameter(h,d.LINK_STATUS)||alert("Snap! Error linking shader program"),this._getLocation(h,c),h},d.RendererGL.prototype._getLocation=function(a,b){var c=this.GL;c.useProgram(a),a.uResolution=c.getUniformLocation(a,"uResolution"),c.uniform1f(a.uResolution,g),a.uPMatrixUniform=c.getUniformLocation(a,"uProjectionMatrix"),a.uMVMatrixUniform=c.getUniformLocation(a,"uModelViewMatrix"),void 0===b&&(a.uNMatrixUniform=c.getUniformLocation(a,"uNormalMatrix"),a.samplerUniform=c.getUniformLocation(a,"uSampler"))},d.RendererGL.prototype._setUniform1f=function(a,b,c){var d=this.GL,e=this.mHash[a];return d.useProgram(e),e[b]=d.getUniformLocation(e,b),d.uniform1f(e[b],c),this},d.RendererGL.prototype._setMatrixUniforms=function(a){var b=this.GL,c=this.mHash[a];b.useProgram(c),b.uniformMatrix4fv(c.uPMatrixUniform,!1,this.uPMatrix.mat4),b.uniformMatrix4fv(c.uMVMatrixUniform,!1,this.uMVMatrix.mat4),this.uNMatrix.inverseTranspose(this.uMVMatrix),b.uniformMatrix3fv(c.uNMatrixUniform,!1,this.uNMatrix.mat3)},d.RendererGL.prototype._getShader=function(a,b,c){var d=a+"|"+b;if(!this.materialInHash(d)){var e=this._initShaders(a,b,c);this.mHash[d]=e}return this.curShaderId=d,this.mHash[this.curShaderId]},d.RendererGL.prototype._getCurShaderId=function(){var a,b;return"fill"!==this.drawMode&&void 0===this.curShaderId?(a="normalVert|normalFrag",b=this._initShaders("normalVert","normalFrag"),this.mHash[a]=b,this.curShaderId=a):this.isImmediateDrawing&&"fill"===this.drawMode&&(a="immediateVert|vertexColorFrag",b=this._initShaders("immediateVert","vertexColorFrag"),this.mHash[a]=b,this.curShaderId=a),this.curShaderId},d.RendererGL.prototype.fill=function(a,b,c,d){var e,f=this.GL,g=this._applyColorBlend.apply(this,arguments);return this.curFillColor=g,this.drawMode="fill",this.isImmediateDrawing?(e=this._getShader("immediateVert","vertexColorFrag"),f.useProgram(e)):(e=this._getShader("normalVert","basicFrag"),f.useProgram(e),e.uMaterialColor=f.getUniformLocation(e,"uMaterialColor"),f.uniform4f(e.uMaterialColor,g[0],g[1],g[2],g[3])),this},d.RendererGL.prototype.stroke=function(a,b,c,d){var e=this._pInst.color.apply(this._pInst,arguments),f=e._array;return this.curStrokeColor=f,this.drawMode="stroke",this},d.RendererGL.prototype._strokeCheck=function(){if("stroke"===this.drawMode)throw new Error("stroke for shapes in 3D not yet implemented, use fill for now :(")},d.RendererGL.prototype.strokeWeight=function(a){return this.pointSize=a,this},d.RendererGL.prototype.geometryInHash=function(a){return void 0!==this.gHash[a]},d.RendererGL.prototype.materialInHash=function(a){return void 0!==this.mHash[a]},d.RendererGL.prototype.resize=function(a,b){var c=this.GL;d.Renderer.prototype.resize.call(this,a,b),c.viewport(0,0,c.drawingBufferWidth,c.drawingBufferHeight),"default"===this._curCamera&&(this._curCamera=null,this._setDefaultCamera())},d.RendererGL.prototype.clear=function(){var a=this.GL;a.clearColor(arguments[0],arguments[1],arguments[2],arguments[3]),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},d.RendererGL.prototype.translate=function(a,b,c){return a/=g,b=-b/g,c/=g,this.uMVMatrix.translate([a,b,c]),this},d.RendererGL.prototype.scale=function(a,b,c){return this.uMVMatrix.scale([a,b,c]),this},d.RendererGL.prototype.rotate=function(a,b){return this.uMVMatrix.rotate(a,b),this},d.RendererGL.prototype.rotateX=function(a){return this.rotate(a,[1,0,0]),this},d.RendererGL.prototype.rotateY=function(a){return this.rotate(a,[0,1,0]),this},d.RendererGL.prototype.rotateZ=function(a){return this.rotate(a,[0,0,1]),this},d.RendererGL.prototype.push=function(){f.push(this.uMVMatrix.copy())},d.RendererGL.prototype.pop=function(){if(0===f.length)throw new Error("Invalid popMatrix!");this.uMVMatrix=f.pop()},d.RendererGL.prototype.resetMatrix=function(){return this.uMVMatrix=d.Matrix.identity(),this.translate(0,0,-800),this},d.RendererGL.prototype._applyTextProperties=function(){console.error("text commands not yet implemented in webgl")},b.exports=d.RendererGL},{"../core/core":37,"../core/p5.Renderer":43,"./p5.Matrix":83,"./shader":88}],87:[function(a,b,c){"use strict";var d=a("../core/core");a("./p5.Geometry"),d.prototype.plane=function(){for(var a=new Array(arguments.length),b=0;bj;j++){var k=h[j],l=new d.Vector((2*(1&k)-1)*c/2,((2&k)-1)*e/2,((4&k)/2-1)*f/2);this.vertices.push(l),this.uvs.push([1&j,(2&j)/2]),b++}this.faces.push([i,i+1,i+2]),this.faces.push([i+2,i+1,i+3])}},k=new d.Geometry(g,h,j);k.computeNormals(),this._renderer.createBuffers(i,k)}return this._renderer.drawBuffers(i),this},d.prototype.sphere=function(){for(var a=new Array(arguments.length),b=0;be?3:e,f=1>f?1:f,g=void 0===g?!0:g,h=void 0===h?!0:h;var i,j,k=(g?2:0)+(h?2:0),l=e+1,m=Math.atan2(a-b,c),n=g?-2:0,o=f+(h?2:0);for(i=n;o>=i;++i){var p,q=i/f,r=c*q;for(0>i?(r=0,q=1,p=a):i>f?(r=c,q=1,p=b):p=a+(b-a)*(i/f),(-2===i||i===f+2)&&(p=0,q=0),r-=c/2,j=0;l>j;++j)this.vertices.push(new d.Vector(Math.sin(j*Math.PI*2/e)*p,r,Math.cos(j*Math.PI*2/e)*p)),this.vertexNormals.push(new d.Vector(0>i||i>f?0:Math.sin(j*Math.PI*2/e)*Math.cos(m),0>i?-1:i>f?1:Math.sin(m),0>i||i>f?0:Math.cos(j*Math.PI*2/e)*Math.cos(m))),this.uvs.push([j/e,q])}for(i=0;f+k>i;++i)for(j=0;e>j;++j)this.faces.push([l*(i+0)+0+j,l*(i+0)+1+j,l*(i+1)+1+j]),this.faces.push([l*(i+0)+0+j,l*(i+1)+1+j,l*(i+1)+0+j])};d.prototype.cylinder=function(){for(var a=new Array(arguments.length),b=0;b=e;e++)c[0]=Math.pow(1-e/b,3),c[1]=3*(e/b)*Math.pow(1-e/b,2),c[2]=3*Math.pow(e/b,2)*(1-e/b),c[3]=Math.pow(e/b,3),d[0]=a[0]*c[0]+a[3]*c[1]+a[6]*c[2]+a[9]*c[3],d[1]=a[1]*c[0]+a[4]*c[1]+a[7]*c[2]+a[10]*c[3],d[2]=a[2]*c[0]+a[5]*c[1]+a[8]*c[2]+a[11]*c[3],this.vertex(d[0],d[1],d[2]);return this.endShape(),this},d.RendererGL.prototype.curve=function(a){var b=a[12];this.beginShape();for(var c=[0,0,0,0],d=[0,0,0],e=0;b>=e;e++)c[0]=.5*Math.pow(e/b,3),c[1]=.5*Math.pow(e/b,2),c[2]=e/b*.5,c[3]=.5,d[0]=c[0]*(-a[0]+3*a[3]-3*a[6]+a[9])+c[1]*(2*a[0]-5*a[3]+4*a[6]-a[9])+c[2]*(-a[0]+a[6])+2*c[3]*a[3],d[1]=c[0]*(-a[1]+3*a[4]-3*a[7]+a[10])+c[1]*(2*a[1]-5*a[4]+4*a[7]-a[10])+c[2]*(-a[1]+a[7])+2*c[3]*a[4],d[2]=c[0]*(-a[2]+3*a[5]-3*a[8]+a[11])+c[1]*(2*a[2]-5*a[5]+4*a[8]-a[11])+c[2]*(-a[2]+a[8])+2*c[3]*a[5],this.vertex(d[0],d[1],d[2]);return this.endShape(),this},b.exports=d},{"../core/core":37,"./p5.Geometry":82}],88:[function(a,b,c){b.exports={immediateVert:"attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\nuniform float uPointSize;\n\nvarying vec4 vColor;\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution *vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n gl_PointSize = uPointSize;\n}\n",vertexColorVert:"attribute vec3 aPosition;\nattribute vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vColor = aVertexColor;\n}\n",vertexColorFrag:"precision mediump float;\nvarying vec4 vColor;\nvoid main(void) {\n gl_FragColor = vColor;\n}",normalVert:"attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform float uResolution;\n\nvarying vec3 vVertexNormal;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n vec4 positionVec4 = vec4(aPosition / uResolution * vec3(1.0, -1.0, 1.0), 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n vVertexNormal = vec3( uNormalMatrix * aNormal );\n vVertTexCoord = aTexCoord;\n}\n",normalFrag:"precision mediump float;\nvarying vec3 vVertexNormal;\nvoid main(void) {\n gl_FragColor = vec4(vVertexNormal, 1.0);\n}",basicFrag:"precision mediump float;\nvarying vec3 vVertexNormal;\nuniform vec4 uMaterialColor;\nvoid main(void) {\n gl_FragColor = uMaterialColor;\n}",lightVert:"attribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform float uResolution;\nuniform int uAmbientLightCount;\nuniform int uDirectionalLightCount;\nuniform int uPointLightCount;\n\nuniform vec3 uAmbientColor[8];\nuniform vec3 uLightingDirection[8];\nuniform vec3 uDirectionalColor[8];\nuniform vec3 uPointLightLocation[8];\nuniform vec3 uPointLightColor[8];\nuniform bool uSpecular;\n\nvarying vec3 vVertexNormal;\nvarying vec2 vVertTexCoord;\nvarying vec3 vLightWeighting;\n\nvec3 ambientLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 directionalLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor = vec3(0.0, 0.0, 0.0);\nvec3 pointLightFactor2 = vec3(0.0, 0.0, 0.0);\n\nvoid main(void){\n\n vec4 positionVec4 = vec4(aPosition / uResolution, 1.0);\n gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n\n vec3 vertexNormal = vec3( uNormalMatrix * aNormal );\n vVertexNormal = vertexNormal;\n vVertTexCoord = aTexCoord;\n\n vec4 mvPosition = uModelViewMatrix * vec4(aPosition / uResolution, 1.0);\n vec3 eyeDirection = normalize(-mvPosition.xyz);\n\n float shininess = 32.0;\n float specularFactor = 2.0;\n float diffuseFactor = 0.3;\n\n for(int i = 0; i < 8; i++){\n if(uAmbientLightCount == i) break;\n ambientLightFactor += uAmbientColor[i];\n }\n\n for(int j = 0; j < 8; j++){\n if(uDirectionalLightCount == j) break;\n vec3 dir = uLightingDirection[j];\n float directionalLightWeighting = max(dot(vertexNormal, dir), 0.0);\n directionalLightFactor += uDirectionalColor[j] * directionalLightWeighting;\n }\n\n for(int k = 0; k < 8; k++){\n if(uPointLightCount == k) break;\n vec3 loc = uPointLightLocation[k];\n //loc = loc / uResolution;\n vec3 lightDirection = normalize(loc - mvPosition.xyz);\n\n float directionalLightWeighting = max(dot(vertexNormal, lightDirection), 0.0);\n pointLightFactor += uPointLightColor[k] * directionalLightWeighting;\n\n //factor2 for specular\n vec3 reflectionDirection = reflect(-lightDirection, vertexNormal);\n float specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), shininess);\n\n pointLightFactor2 += uPointLightColor[k] * (specularFactor * specularLightWeighting\n + directionalLightWeighting * diffuseFactor);\n }\n\n if(!uSpecular){\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor;\n }else{\n vLightWeighting = ambientLightFactor + directionalLightFactor + pointLightFactor2;\n }\n\n}\n",lightTextureFrag:"precision mediump float;\n\nuniform vec4 uMaterialColor;\nuniform sampler2D uSampler;\nuniform bool isTexture;\n\nvarying vec3 vLightWeighting;\nvarying highp vec2 vVertTexCoord;\n\nvoid main(void) {\n if(!isTexture){\n gl_FragColor = vec4(vec3(uMaterialColor.rgb * vLightWeighting), uMaterialColor.a);\n }else{\n vec4 textureColor = texture2D(uSampler, vVertTexCoord);\n if(vLightWeighting == vec3(0., 0., 0.)){\n gl_FragColor = textureColor;\n }else{\n gl_FragColor = vec4(vec3(textureColor.rgb * vLightWeighting), textureColor.a);\n }\n }\n}"}},{}]},{},[28])(28)}); \ No newline at end of file diff --git a/src/p29-arduino-server/server/app.js b/src/p29-arduino-server/server/app.js new file mode 100644 index 0000000..f337d9d --- /dev/null +++ b/src/p29-arduino-server/server/app.js @@ -0,0 +1,25 @@ +// Serveur permettant d'afficher la position d'un agent à l'aide d'une LED + +// Paramètres +var webPort = 8080; // Port utilisé pour la communication avec le navigateur +///////////// + +var server = require('http').createServer(), + io = require('socket.io')(server), + five = require("johnny-five"); + +var board = new five.Board({'repl': false}); // Initialisation de la connexion avec la carte Arduino (avec désactivation du REPL fourni par Johnny Five) +board.on('ready', function() { + // Démarrage du serveur Web + server.listen(webPort); + io.on('connection', function(client) { + console.log('Connected with browser'); + var led = new five.Led(13); // Création d'un objet représentant une LED (nous utilisons ici la LED intégrée de la carte Arduino) + client.on('led', function(data) { + data.on ? led.on() : led.off(); + }); + client.on('disconnect', function() { + led.off(); + }); + }); +}); \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/accepts/HISTORY.md b/src/p29-arduino-server/server/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..0477ed7 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/accepts/HISTORY.md @@ -0,0 +1,212 @@ +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: negotiator@0.6.1 + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: negotiator@0.6.0 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: negotiator@0.5.3 + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: negotiator@0.5.2 + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: negotiator@0.5.1 + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: negotiator@0.5.0 + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: negotiator@0.4.9 + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: negotiator@0.4.8 + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: negotiator@0.4.7 + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: negotiator@0.4.6 + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin negotiator@0.4.5 + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis diff --git a/src/p29-arduino-server/server/node_modules/accepts/LICENSE b/src/p29-arduino-server/server/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +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/src/p29-arduino-server/server/node_modules/accepts/README.md b/src/p29-arduino-server/server/node_modules/accepts/README.md new file mode 100644 index 0000000..ae36676 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/accepts/README.md @@ -0,0 +1,135 @@ +# accepts + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +```sh +npm install accepts +``` + +## API + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME types is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app(req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch(accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('hello, world!') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/accepts.svg +[npm-url]: https://npmjs.org/package/accepts +[node-version-image]: https://img.shields.io/node/v/accepts.svg +[node-version-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg +[travis-url]: https://travis-ci.org/jshttp/accepts +[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/accepts +[downloads-image]: https://img.shields.io/npm/dm/accepts.svg +[downloads-url]: https://npmjs.org/package/accepts diff --git a/src/p29-arduino-server/server/node_modules/accepts/index.js b/src/p29-arduino-server/server/node_modules/accepts/index.js new file mode 100644 index 0000000..e80192a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/accepts/index.js @@ -0,0 +1,231 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts(req) { + if (!(this instanceof Accepts)) + return new Accepts(req) + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + if (!this.headers.accept) return types[0]; + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + if (!first) return false; + return types[mimes.indexOf(first)]; +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime(type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {String} + * @private + */ + +function validMime(type) { + return typeof type === 'string'; +} diff --git a/src/p29-arduino-server/server/node_modules/accepts/package.json b/src/p29-arduino-server/server/node_modules/accepts/package.json new file mode 100644 index 0000000..a66029f --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/accepts/package.json @@ -0,0 +1,112 @@ +{ + "_args": [ + [ + { + "raw": "accepts@1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "1.3.3", + "spec": "1.3.3", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io" + ] + ], + "_from": "accepts@1.3.3", + "_id": "accepts@1.3.3", + "_inCache": true, + "_location": "/accepts", + "_nodeVersion": "4.4.3", + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/accepts-1.3.3.tgz_1462251932032_0.7092335098423064" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "2.15.1", + "_phantomChildren": {}, + "_requested": { + "raw": "accepts@1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "1.3.3", + "spec": "1.3.3", + "type": "version" + }, + "_requiredBy": [ + "/engine.io" + ], + "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "_shrinkwrap": null, + "_spec": "accepts@1.3.3", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io", + "bugs": { + "url": "https://github.com/jshttp/accepts/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + } + ], + "dependencies": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + }, + "description": "Higher-level content negotiation", + "devDependencies": { + "istanbul": "0.4.3", + "mocha": "~1.21.5" + }, + "directories": {}, + "dist": { + "shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "gitHead": "3e925b1e65ed7da2798849683d49814680dfa426", + "homepage": "https://github.com/jshttp/accepts#readme", + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "accepts", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/accepts.git" + }, + "scripts": { + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + }, + "version": "1.3.3" +} diff --git a/src/p29-arduino-server/server/node_modules/after/LICENCE b/src/p29-arduino-server/server/node_modules/after/LICENCE new file mode 100644 index 0000000..7c35130 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/after/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2011 Raynos. + +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. \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/after/README.md b/src/p29-arduino-server/server/node_modules/after/README.md new file mode 100644 index 0000000..0012d35 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/after/README.md @@ -0,0 +1,75 @@ +# After [![Build Status][1]][2] + +Invoke callback after n calls + +## Status: production ready + +## Example + + var after = require("after") + , next = after(3, logItWorks) + + next() + next() + next() // it works + + function logItWorks() { + console.log("it works!") + } + +## Example with error handling + + var after = require("after") + , next = after(3, logError) + + next() + next(new Error("oops")) // logs oops + next() // does nothing + + function logError(err) { + console.log(err) + } + +## After < 0.6.0 + +Older versions of after had iterators and flows in them. + +These have been replaced with seperate modules + + - [iterators][8] + - [composite][9] + +## Installation + +`npm install after` + +## Tests + +`npm test` + +## Blog post + + - [Flow control in node.js][3] + +## Examples : + + - [Determining the end of asynchronous operations][4] + - [In javascript what are best practices for executing multiple asynchronous functions][5] + - [JavaScript performance long running tasks][6] + - [Synchronous database queries with node.js][7] + +## Contributors + + - Raynos + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Raynos/after.png + [2]: http://travis-ci.org/Raynos/after + [3]: http://raynos.org/blog/2/Flow-control-in-node.js + [4]: http://stackoverflow.com/questions/6852059/determining-the-end-of-asynchronous-operations-javascript/6852307#6852307 + [5]: http://stackoverflow.com/questions/6869872/in-javascript-what-are-best-practices-for-executing-multiple-asynchronous-functi/6870031#6870031 + [6]: http://stackoverflow.com/questions/6864397/javascript-performance-long-running-tasks/6889419#6889419 + [7]: http://stackoverflow.com/questions/6597493/synchronous-database-queries-with-node-js/6620091#6620091 + [8]: http://github.com/Raynos/iterators + [9]: http://github.com/Raynos/composite diff --git a/src/p29-arduino-server/server/node_modules/after/index.js b/src/p29-arduino-server/server/node_modules/after/index.js new file mode 100644 index 0000000..ec24879 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/after/index.js @@ -0,0 +1,28 @@ +module.exports = after + +function after(count, callback, err_cb) { + var bail = false + err_cb = err_cb || noop + proxy.count = count + + return (count === 0) ? callback() : proxy + + function proxy(err, result) { + if (proxy.count <= 0) { + throw new Error('after called too many times') + } + --proxy.count + + // after first error, rest are passed to err_cb + if (err) { + bail = true + callback(err) + // future error callbacks will go to error handler + callback = err_cb + } else if (proxy.count === 0 && !bail) { + callback(null, result) + } + } +} + +function noop() {} diff --git a/src/p29-arduino-server/server/node_modules/after/package.json b/src/p29-arduino-server/server/node_modules/after/package.json new file mode 100644 index 0000000..dee653b --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/after/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + { + "raw": "after@0.8.1", + "scope": null, + "escapedName": "after", + "name": "after", + "rawSpec": "0.8.1", + "spec": "0.8.1", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser" + ] + ], + "_from": "after@0.8.1", + "_id": "after@0.8.1", + "_inCache": true, + "_location": "/after", + "_npmUser": { + "name": "raynos", + "email": "raynos2@gmail.com" + }, + "_npmVersion": "1.2.25", + "_phantomChildren": {}, + "_requested": { + "raw": "after@0.8.1", + "scope": null, + "escapedName": "after", + "name": "after", + "rawSpec": "0.8.1", + "spec": "0.8.1", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "_shasum": "ab5d4fb883f596816d3515f8f791c0af486dd627", + "_shrinkwrap": null, + "_spec": "after@0.8.1", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser", + "author": { + "name": "Raynos", + "email": "raynos2@gmail.com" + }, + "bugs": { + "url": "https://github.com/Raynos/after/issues" + }, + "contributors": [ + { + "name": "Raynos", + "email": "raynos2@gmail.com", + "url": "http://raynos.org" + } + ], + "dependencies": {}, + "description": "after - tiny flow control", + "devDependencies": { + "mocha": "~1.8.1" + }, + "directories": {}, + "dist": { + "shasum": "ab5d4fb883f596816d3515f8f791c0af486dd627", + "tarball": "https://registry.npmjs.org/after/-/after-0.8.1.tgz" + }, + "homepage": "https://github.com/Raynos/after#readme", + "keywords": [ + "flowcontrol", + "after", + "flow", + "control", + "arch" + ], + "maintainers": [ + { + "name": "raynos", + "email": "raynos2@gmail.com" + }, + { + "name": "shtylman", + "email": "shtylman@gmail.com" + } + ], + "name": "after", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/Raynos/after.git" + }, + "scripts": { + "test": "mocha --ui tdd --reporter spec test/*.js" + }, + "version": "0.8.1" +} diff --git a/src/p29-arduino-server/server/node_modules/after/test/after-test.js b/src/p29-arduino-server/server/node_modules/after/test/after-test.js new file mode 100644 index 0000000..0d63f4c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/after/test/after-test.js @@ -0,0 +1,120 @@ +/*global suite, test*/ + +var assert = require("assert") + , after = require("../") + +test("exists", function () { + assert(typeof after === "function", "after is not a function") +}) + +test("after when called with 0 invokes", function (done) { + after(0, done) +}); + +test("after 1", function (done) { + var next = after(1, done) + next() +}) + +test("after 5", function (done) { + var next = after(5, done) + , i = 5 + + while (i--) { + next() + } +}) + +test("manipulate count", function (done) { + var next = after(1, done) + , i = 5 + + next.count = i + while (i--) { + next() + } +}) + +test("after terminates on error", function (done) { + var next = after(2, function(err) { + assert.equal(err.message, 'test'); + done(); + }) + next(new Error('test')) + next(new Error('test2')) +}) + +test('gee', function(done) { + done = after(2, done) + + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + assert.equal(err.message, 2) + done() + }); + + next() + next(new Error(1)) + next(new Error(2)) +}) + +test('eee', function(done) { + done = after(3, done) + + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + assert.equal(err.message, 2) + done() + }); + + next(new Error(1)) + next(new Error(2)) + next(new Error(2)) +}) + +test('gge', function(done) { + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + // should not happen + assert.ok(false); + }); + + next() + next() + next(new Error(1)) +}) + +test('egg', function(done) { + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + // should not happen + assert.ok(false); + }); + + next(new Error(1)) + next() + next() +}) + +test('throws on too many calls', function(done) { + var next = after(1, done); + next() + assert.throws(next, /after called too many times/); +}); + diff --git a/src/p29-arduino-server/server/node_modules/ansi-regex/index.js b/src/p29-arduino-server/server/node_modules/ansi-regex/index.js new file mode 100644 index 0000000..4906755 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-regex/index.js @@ -0,0 +1,4 @@ +'use strict'; +module.exports = function () { + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; +}; diff --git a/src/p29-arduino-server/server/node_modules/ansi-regex/license b/src/p29-arduino-server/server/node_modules/ansi-regex/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-regex/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/src/p29-arduino-server/server/node_modules/ansi-regex/package.json b/src/p29-arduino-server/server/node_modules/ansi-regex/package.json new file mode 100644 index 0000000..77becdb --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-regex/package.json @@ -0,0 +1,121 @@ +{ + "_args": [ + [ + { + "raw": "ansi-regex@^2.0.0", + "scope": null, + "escapedName": "ansi-regex", + "name": "ansi-regex", + "rawSpec": "^2.0.0", + "spec": ">=2.0.0 <3.0.0", + "type": "range" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/has-ansi" + ] + ], + "_from": "ansi-regex@>=2.0.0 <3.0.0", + "_id": "ansi-regex@2.0.0", + "_inCache": true, + "_location": "/ansi-regex", + "_nodeVersion": "0.12.5", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "_npmVersion": "2.11.2", + "_phantomChildren": {}, + "_requested": { + "raw": "ansi-regex@^2.0.0", + "scope": null, + "escapedName": "ansi-regex", + "name": "ansi-regex", + "rawSpec": "^2.0.0", + "spec": ">=2.0.0 <3.0.0", + "type": "range" + }, + "_requiredBy": [ + "/has-ansi", + "/strip-ansi" + ], + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", + "_shrinkwrap": null, + "_spec": "ansi-regex@^2.0.0", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/has-ansi", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-regex/issues" + }, + "dependencies": {}, + "description": "Regular expression for matching ANSI escape codes", + "devDependencies": { + "mocha": "*" + }, + "directories": {}, + "dist": { + "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", + "tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f", + "homepage": "https://github.com/sindresorhus/ansi-regex", + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "license": "MIT", + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "name": "ansi-regex", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/ansi-regex.git" + }, + "scripts": { + "test": "mocha test/test.js", + "view-supported": "node test/viewCodes.js" + }, + "version": "2.0.0" +} diff --git a/src/p29-arduino-server/server/node_modules/ansi-regex/readme.md b/src/p29-arduino-server/server/node_modules/ansi-regex/readme.md new file mode 100644 index 0000000..1a4894e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-regex/readme.md @@ -0,0 +1,31 @@ +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) + +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +``` +$ npm install --save ansi-regex +``` + + +## Usage + +```js +var ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001b[4mcake\u001b[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001b[4mcake\u001b[0m'.match(ansiRegex()); +//=> ['\u001b[4m', '\u001b[0m'] +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/src/p29-arduino-server/server/node_modules/ansi-styles/index.js b/src/p29-arduino-server/server/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..7894527 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-styles/index.js @@ -0,0 +1,65 @@ +'use strict'; + +function assembleStyles () { + var styles = { + modifiers: { + reset: [0, 0], + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + colors: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColors: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.colors.grey = styles.colors.gray; + + Object.keys(styles).forEach(function (groupName) { + var group = styles[groupName]; + + Object.keys(group).forEach(function (styleName) { + var style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: '\u001b[' + style[0] + 'm', + close: '\u001b[' + style[1] + 'm' + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/src/p29-arduino-server/server/node_modules/ansi-styles/license b/src/p29-arduino-server/server/node_modules/ansi-styles/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-styles/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/src/p29-arduino-server/server/node_modules/ansi-styles/package.json b/src/p29-arduino-server/server/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..bda2ec1 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-styles/package.json @@ -0,0 +1,114 @@ +{ + "_args": [ + [ + { + "raw": "ansi-styles@^2.2.1", + "scope": null, + "escapedName": "ansi-styles", + "name": "ansi-styles", + "rawSpec": "^2.2.1", + "spec": ">=2.2.1 <3.0.0", + "type": "range" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/chalk" + ] + ], + "_from": "ansi-styles@>=2.2.1 <3.0.0", + "_id": "ansi-styles@2.2.1", + "_inCache": true, + "_location": "/ansi-styles", + "_nodeVersion": "4.3.0", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176" + }, + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "_npmVersion": "3.8.3", + "_phantomChildren": {}, + "_requested": { + "raw": "ansi-styles@^2.2.1", + "scope": null, + "escapedName": "ansi-styles", + "name": "ansi-styles", + "rawSpec": "^2.2.1", + "spec": ">=2.2.1 <3.0.0", + "type": "range" + }, + "_requiredBy": [ + "/chalk" + ], + "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe", + "_shrinkwrap": null, + "_spec": "ansi-styles@^2.2.1", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/chalk", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/chalk/ansi-styles/issues" + }, + "dependencies": {}, + "description": "ANSI escape codes for styling strings in the terminal", + "devDependencies": { + "mocha": "*" + }, + "directories": {}, + "dist": { + "shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe", + "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "gitHead": "95c59b23be760108b6530ca1c89477c21b258032", + "homepage": "https://github.com/chalk/ansi-styles#readme", + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "license": "MIT", + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "name": "ansi-styles", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/chalk/ansi-styles.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "2.2.1" +} diff --git a/src/p29-arduino-server/server/node_modules/ansi-styles/readme.md b/src/p29-arduino-server/server/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..3f933f6 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ansi-styles/readme.md @@ -0,0 +1,86 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + +![](screenshot.png) + + +## Install + +``` +$ npm install --save ansi-styles +``` + + +## Usage + +```js +var ansi = require('ansi-styles'); + +console.log(ansi.green.open + 'Hello world!' + ansi.green.close); +``` + + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` + + +## Advanced usage + +By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `ansi.modifiers` +- `ansi.colors` +- `ansi.bgColors` + + +###### Example + +```js +console.log(ansi.colors.green.open); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/src/p29-arduino-server/server/node_modules/arraybuffer.slice/Makefile b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/Makefile new file mode 100644 index 0000000..849887f --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/Makefile @@ -0,0 +1,8 @@ + +REPORTER = dot + +test: + @./node_modules/.bin/mocha \ + --reporter $(REPORTER) + +.PHONY: test diff --git a/src/p29-arduino-server/server/node_modules/arraybuffer.slice/README.md b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/README.md new file mode 100644 index 0000000..15e465e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/README.md @@ -0,0 +1,17 @@ +# How to +```javascript +var sliceBuffer = require('arraybuffer.slice'); +var ab = (new Int8Array(5)).buffer; +var sliced = sliceBuffer(ab, 1, 3); +sliced = sliceBuffer(ab, 1); +``` + +# Licence (MIT) +Copyright (C) 2013 Rase- + + +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/src/p29-arduino-server/server/node_modules/arraybuffer.slice/index.js b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/index.js new file mode 100644 index 0000000..11ac556 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/index.js @@ -0,0 +1,29 @@ +/** + * An abstraction for slicing an arraybuffer even when + * ArrayBuffer.prototype.slice is not supported + * + * @api public + */ + +module.exports = function(arraybuffer, start, end) { + var bytes = arraybuffer.byteLength; + start = start || 0; + end = end || bytes; + + if (arraybuffer.slice) { return arraybuffer.slice(start, end); } + + if (start < 0) { start += bytes; } + if (end < 0) { end += bytes; } + if (end > bytes) { end = bytes; } + + if (start >= bytes || start >= end || bytes === 0) { + return new ArrayBuffer(0); + } + + var abv = new Uint8Array(arraybuffer); + var result = new Uint8Array(end - start); + for (var i = start, ii = 0; i < end; i++, ii++) { + result[ii] = abv[i]; + } + return result.buffer; +}; diff --git a/src/p29-arduino-server/server/node_modules/arraybuffer.slice/package.json b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/package.json new file mode 100644 index 0000000..cc278cb --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/package.json @@ -0,0 +1,72 @@ +{ + "_args": [ + [ + { + "raw": "arraybuffer.slice@0.0.6", + "scope": null, + "escapedName": "arraybuffer.slice", + "name": "arraybuffer.slice", + "rawSpec": "0.0.6", + "spec": "0.0.6", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser" + ] + ], + "_from": "arraybuffer.slice@0.0.6", + "_id": "arraybuffer.slice@0.0.6", + "_inCache": true, + "_location": "/arraybuffer.slice", + "_npmUser": { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + }, + "_npmVersion": "1.3.5", + "_phantomChildren": {}, + "_requested": { + "raw": "arraybuffer.slice@0.0.6", + "scope": null, + "escapedName": "arraybuffer.slice", + "name": "arraybuffer.slice", + "rawSpec": "0.0.6", + "spec": "0.0.6", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "_shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", + "_shrinkwrap": null, + "_spec": "arraybuffer.slice@0.0.6", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser", + "bugs": { + "url": "https://github.com/rase-/arraybuffer.slice/issues" + }, + "dependencies": {}, + "description": "Exports a function for slicing ArrayBuffers (no polyfilling)", + "devDependencies": { + "expect.js": "0.2.0", + "mocha": "1.17.1" + }, + "directories": {}, + "dist": { + "shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", + "tarball": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" + }, + "homepage": "https://github.com/rase-/arraybuffer.slice", + "maintainers": [ + { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + } + ], + "name": "arraybuffer.slice", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/rase-/arraybuffer.slice.git" + }, + "version": "0.0.6" +} diff --git a/src/p29-arduino-server/server/node_modules/arraybuffer.slice/test/slice-buffer.js b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/test/slice-buffer.js new file mode 100644 index 0000000..4778da6 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/arraybuffer.slice/test/slice-buffer.js @@ -0,0 +1,227 @@ +/* + * Test dependencies + */ + +var sliceBuffer = require('../index.js'); +var expect = require('expect.js'); + +/** + * Tests + */ + +describe('sliceBuffer', function() { + describe('using standard slice', function() { + it('should slice correctly with only start provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 3); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with start and end provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 3, 8); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < 8; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 0, -3); + var sabv = new Uint8Array(sliced); + for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, -6, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with equal start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 1, 1); + expect(sliced.byteLength).to.equal(0); + }); + + it('should slice correctly when end larger than buffer', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 0, 100); + expect(new Uint8Array(sliced)).to.eql(abv); + }); + + it('shoud slice correctly when start larger than end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 6, 5); + expect(sliced.byteLength).to.equal(0); + }); + }); + + describe('using fallback', function() { + it('should slice correctly with only start provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 3); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with start and end provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + + var sliced = sliceBuffer(ab, 3, 8); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < 8; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + + var sliced = sliceBuffer(ab, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 0, -3); + var sabv = new Uint8Array(sliced); + for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, -6, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with equal start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 1, 1); + expect(sliced.byteLength).to.equal(0); + }); + + it('should slice correctly when end larger than buffer', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 0, 100); + var sabv = new Uint8Array(sliced); + for (var i = 0; i < abv.length; i++) { + expect(abv[i]).to.equal(sabv[i]); + } + }); + + it('shoud slice correctly when start larger than end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 6, 5); + expect(sliced.byteLength).to.equal(0); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/backo2/History.md b/src/p29-arduino-server/server/node_modules/backo2/History.md new file mode 100644 index 0000000..8eb28b8 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/History.md @@ -0,0 +1,12 @@ + +1.0.1 / 2014-02-17 +================== + + * go away decimal point + * history + +1.0.0 / 2014-02-17 +================== + + * add jitter option + * Initial commit diff --git a/src/p29-arduino-server/server/node_modules/backo2/Makefile b/src/p29-arduino-server/server/node_modules/backo2/Makefile new file mode 100644 index 0000000..9987df8 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/Makefile @@ -0,0 +1,8 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter dot \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/backo2/Readme.md b/src/p29-arduino-server/server/node_modules/backo2/Readme.md new file mode 100644 index 0000000..0df2a39 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/Readme.md @@ -0,0 +1,34 @@ +# backo + + Simple exponential backoff because the others seem to have weird abstractions. + +## Installation + +``` +$ npm install backo +``` + +## Options + + - `min` initial timeout in milliseconds [100] + - `max` max timeout [10000] + - `jitter` [0] + - `factor` [2] + +## Example + +```js +var Backoff = require('backo'); +var backoff = new Backoff({ min: 100, max: 20000 }); + +setTimeout(function(){ + something.reconnect(); +}, backoff.duration()); + +// later when something works +backoff.reset() +``` + +# License + + MIT diff --git a/src/p29-arduino-server/server/node_modules/backo2/component.json b/src/p29-arduino-server/server/node_modules/backo2/component.json new file mode 100644 index 0000000..994845a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/component.json @@ -0,0 +1,11 @@ +{ + "name": "backo", + "repo": "segmentio/backo", + "dependencies": {}, + "version": "1.0.1", + "description": "simple backoff without the weird abstractions", + "keywords": ["backoff"], + "license": "MIT", + "scripts": ["index.js"], + "main": "index.js" +} diff --git a/src/p29-arduino-server/server/node_modules/backo2/index.js b/src/p29-arduino-server/server/node_modules/backo2/index.js new file mode 100644 index 0000000..fac4429 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/index.js @@ -0,0 +1,85 @@ + +/** + * Expose `Backoff`. + */ + +module.exports = Backoff; + +/** + * Initialize backoff timer with `opts`. + * + * - `min` initial timeout in milliseconds [100] + * - `max` max timeout [10000] + * - `jitter` [0] + * - `factor` [2] + * + * @param {Object} opts + * @api public + */ + +function Backoff(opts) { + opts = opts || {}; + this.ms = opts.min || 100; + this.max = opts.max || 10000; + this.factor = opts.factor || 2; + this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0; + this.attempts = 0; +} + +/** + * Return the backoff duration. + * + * @return {Number} + * @api public + */ + +Backoff.prototype.duration = function(){ + var ms = this.ms * Math.pow(this.factor, this.attempts++); + if (this.jitter) { + var rand = Math.random(); + var deviation = Math.floor(rand * this.jitter * ms); + ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation; + } + return Math.min(ms, this.max) | 0; +}; + +/** + * Reset the number of attempts. + * + * @api public + */ + +Backoff.prototype.reset = function(){ + this.attempts = 0; +}; + +/** + * Set the minimum duration + * + * @api public + */ + +Backoff.prototype.setMin = function(min){ + this.ms = min; +}; + +/** + * Set the maximum duration + * + * @api public + */ + +Backoff.prototype.setMax = function(max){ + this.max = max; +}; + +/** + * Set the jitter + * + * @api public + */ + +Backoff.prototype.setJitter = function(jitter){ + this.jitter = jitter; +}; + diff --git a/src/p29-arduino-server/server/node_modules/backo2/package.json b/src/p29-arduino-server/server/node_modules/backo2/package.json new file mode 100644 index 0000000..317c9c8 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/package.json @@ -0,0 +1,78 @@ +{ + "_args": [ + [ + { + "raw": "backo2@1.0.2", + "scope": null, + "escapedName": "backo2", + "name": "backo2", + "rawSpec": "1.0.2", + "spec": "1.0.2", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/socket.io-client" + ] + ], + "_from": "backo2@1.0.2", + "_id": "backo2@1.0.2", + "_inCache": true, + "_location": "/backo2", + "_npmUser": { + "name": "mokesmokes", + "email": "mokesmokes@gmail.com" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "raw": "backo2@1.0.2", + "scope": null, + "escapedName": "backo2", + "name": "backo2", + "rawSpec": "1.0.2", + "spec": "1.0.2", + "type": "version" + }, + "_requiredBy": [ + "/socket.io-client" + ], + "_resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "_shasum": "31ab1ac8b129363463e35b3ebb69f4dfcfba7947", + "_shrinkwrap": null, + "_spec": "backo2@1.0.2", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/socket.io-client", + "bugs": { + "url": "https://github.com/mokesmokes/backo/issues" + }, + "dependencies": {}, + "description": "simple backoff based on segmentio/backo", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "31ab1ac8b129363463e35b3ebb69f4dfcfba7947", + "tarball": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + }, + "gitHead": "3e695bade7756fef2295e8883bf3570a06e5d9ec", + "homepage": "https://github.com/mokesmokes/backo", + "keywords": [ + "backoff" + ], + "license": "MIT", + "maintainers": [ + { + "name": "mokesmokes", + "email": "mokesmokes@gmail.com" + } + ], + "name": "backo2", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/mokesmokes/backo.git" + }, + "scripts": {}, + "version": "1.0.2" +} diff --git a/src/p29-arduino-server/server/node_modules/backo2/test/index.js b/src/p29-arduino-server/server/node_modules/backo2/test/index.js new file mode 100644 index 0000000..ea1f6de --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/backo2/test/index.js @@ -0,0 +1,18 @@ + +var Backoff = require('..'); +var assert = require('assert'); + +describe('.duration()', function(){ + it('should increase the backoff', function(){ + var b = new Backoff; + + assert(100 == b.duration()); + assert(200 == b.duration()); + assert(400 == b.duration()); + assert(800 == b.duration()); + + b.reset(); + assert(100 == b.duration()); + assert(200 == b.duration()); + }) +}) \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/base64-arraybuffer/LICENSE-MIT b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/LICENSE-MIT new file mode 100644 index 0000000..ed27b41 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) 2012 Niklas von Hertzen + +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/src/p29-arduino-server/server/node_modules/base64-arraybuffer/README.md b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/README.md new file mode 100644 index 0000000..50009e4 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/README.md @@ -0,0 +1,20 @@ +# base64-arraybuffer + +[![Build Status](https://travis-ci.org/niklasvh/base64-arraybuffer.png)](https://travis-ci.org/niklasvh/base64-arraybuffer) +[![NPM Downloads](https://img.shields.io/npm/dm/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer) +[![NPM Version](https://img.shields.io/npm/v/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer) + +Encode/decode base64 data into ArrayBuffers + +## Getting Started +Install the module with: `npm install base64-arraybuffer` + +## API +The library encodes and decodes base64 to and from ArrayBuffers + + - __encode(buffer)__ - Encodes `ArrayBuffer` into base64 string + - __decode(str)__ - Decodes base64 string to `ArrayBuffer` + +## License +Copyright (c) 2012 Niklas von Hertzen +Licensed under the MIT license. diff --git a/src/p29-arduino-server/server/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js new file mode 100644 index 0000000..e6b6306 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js @@ -0,0 +1,67 @@ +/* + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ +(function(){ + "use strict"; + + var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + // Use a lookup table to find the index. + var lookup = new Uint8Array(256); + for (var i = 0; i < chars.length; i++) { + lookup[chars.charCodeAt(i)] = i; + } + + exports.encode = function(arraybuffer) { + var bytes = new Uint8Array(arraybuffer), + i, len = bytes.length, base64 = ""; + + for (i = 0; i < len; i+=3) { + base64 += chars[bytes[i] >> 2]; + base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; + base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; + base64 += chars[bytes[i + 2] & 63]; + } + + if ((len % 3) === 2) { + base64 = base64.substring(0, base64.length - 1) + "="; + } else if (len % 3 === 1) { + base64 = base64.substring(0, base64.length - 2) + "=="; + } + + return base64; + }; + + exports.decode = function(base64) { + var bufferLength = base64.length * 0.75, + len = base64.length, i, p = 0, + encoded1, encoded2, encoded3, encoded4; + + if (base64[base64.length - 1] === "=") { + bufferLength--; + if (base64[base64.length - 2] === "=") { + bufferLength--; + } + } + + var arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer); + + for (i = 0; i < len; i+=4) { + encoded1 = lookup[base64.charCodeAt(i)]; + encoded2 = lookup[base64.charCodeAt(i+1)]; + encoded3 = lookup[base64.charCodeAt(i+2)]; + encoded4 = lookup[base64.charCodeAt(i+3)]; + + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + + return arraybuffer; + }; +})(); diff --git a/src/p29-arduino-server/server/node_modules/base64-arraybuffer/package.json b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/package.json new file mode 100644 index 0000000..360aa30 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64-arraybuffer/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + { + "raw": "base64-arraybuffer@0.1.5", + "scope": null, + "escapedName": "base64-arraybuffer", + "name": "base64-arraybuffer", + "rawSpec": "0.1.5", + "spec": "0.1.5", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser" + ] + ], + "_from": "base64-arraybuffer@0.1.5", + "_id": "base64-arraybuffer@0.1.5", + "_inCache": true, + "_location": "/base64-arraybuffer", + "_nodeVersion": "2.5.0", + "_npmUser": { + "name": "niklasvh", + "email": "niklasvh@gmail.com" + }, + "_npmVersion": "3.4.0", + "_phantomChildren": {}, + "_requested": { + "raw": "base64-arraybuffer@0.1.5", + "scope": null, + "escapedName": "base64-arraybuffer", + "name": "base64-arraybuffer", + "rawSpec": "0.1.5", + "spec": "0.1.5", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "_shasum": "73926771923b5a19747ad666aa5cd4bf9c6e9ce8", + "_shrinkwrap": null, + "_spec": "base64-arraybuffer@0.1.5", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser", + "author": { + "name": "Niklas von Hertzen", + "email": "niklasvh@gmail.com", + "url": "http://hertzen.com" + }, + "bugs": { + "url": "https://github.com/niklasvh/base64-arraybuffer/issues" + }, + "dependencies": {}, + "description": "Encode/decode base64 data into ArrayBuffers", + "devDependencies": { + "grunt": "^0.4.5", + "grunt-cli": "^0.1.13", + "grunt-contrib-jshint": "^0.11.2", + "grunt-contrib-nodeunit": "^0.4.1", + "grunt-contrib-watch": "^0.6.1" + }, + "directories": {}, + "dist": { + "shasum": "73926771923b5a19747ad666aa5cd4bf9c6e9ce8", + "tarball": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz" + }, + "engines": { + "node": ">= 0.6.0" + }, + "gitHead": "e9457ccb7b140f5ae54a2880c8e9b967ffb03a7d", + "homepage": "https://github.com/niklasvh/base64-arraybuffer", + "keywords": [], + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/niklasvh/base64-arraybuffer/blob/master/LICENSE-MIT" + } + ], + "main": "lib/base64-arraybuffer", + "maintainers": [ + { + "name": "niklasvh", + "email": "niklasvh@gmail.com" + } + ], + "name": "base64-arraybuffer", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/niklasvh/base64-arraybuffer.git" + }, + "scripts": { + "test": "grunt nodeunit" + }, + "version": "0.1.5" +} diff --git a/src/p29-arduino-server/server/node_modules/base64id/README.md b/src/p29-arduino-server/server/node_modules/base64id/README.md new file mode 100644 index 0000000..b4361c1 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64id/README.md @@ -0,0 +1,18 @@ +base64id +======== + +Node.js module that generates a base64 id. + +Uses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4. + +To increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes. + +## Installation + + $ npm install mongoose + +## Usage + + var base64id = require('base64id'); + + var id = base64id.generateId(); diff --git a/src/p29-arduino-server/server/node_modules/base64id/lib/base64id.js b/src/p29-arduino-server/server/node_modules/base64id/lib/base64id.js new file mode 100644 index 0000000..f688159 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64id/lib/base64id.js @@ -0,0 +1,103 @@ +/*! + * base64id v0.1.0 + */ + +/** + * Module dependencies + */ + +var crypto = require('crypto'); + +/** + * Constructor + */ + +var Base64Id = function() { }; + +/** + * Get random bytes + * + * Uses a buffer if available, falls back to crypto.randomBytes + */ + +Base64Id.prototype.getRandomBytes = function(bytes) { + + var BUFFER_SIZE = 4096 + var self = this; + + bytes = bytes || 12; + + if (bytes > BUFFER_SIZE) { + return crypto.randomBytes(bytes); + } + + var bytesInBuffer = parseInt(BUFFER_SIZE/bytes); + var threshold = parseInt(bytesInBuffer*0.85); + + if (!threshold) { + return crypto.randomBytes(bytes); + } + + if (this.bytesBufferIndex == null) { + this.bytesBufferIndex = -1; + } + + if (this.bytesBufferIndex == bytesInBuffer) { + this.bytesBuffer = null; + this.bytesBufferIndex = -1; + } + + // No buffered bytes available or index above threshold + if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) { + + if (!this.isGeneratingBytes) { + this.isGeneratingBytes = true; + crypto.randomBytes(BUFFER_SIZE, function(err, bytes) { + self.bytesBuffer = bytes; + self.bytesBufferIndex = 0; + self.isGeneratingBytes = false; + }); + } + + // Fall back to sync call when no buffered bytes are available + if (this.bytesBufferIndex == -1) { + return crypto.randomBytes(bytes); + } + } + + var result = this.bytesBuffer.slice(bytes*this.bytesBufferIndex, bytes*(this.bytesBufferIndex+1)); + this.bytesBufferIndex++; + + return result; +} + +/** + * Generates a base64 id + * + * (Original version from socket.io ) + */ + +Base64Id.prototype.generateId = function () { + var rand = new Buffer(15); // multiple of 3 for base64 + if (!rand.writeInt32BE) { + return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() + + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); + } + this.sequenceNumber = (this.sequenceNumber + 1) | 0; + rand.writeInt32BE(this.sequenceNumber, 11); + if (crypto.randomBytes) { + this.getRandomBytes(12).copy(rand); + } else { + // not secure for node 0.4 + [0, 4, 8].forEach(function(i) { + rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); + }); + } + return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); +}; + +/** + * Export + */ + +exports = module.exports = new Base64Id(); diff --git a/src/p29-arduino-server/server/node_modules/base64id/package.json b/src/p29-arduino-server/server/node_modules/base64id/package.json new file mode 100644 index 0000000..8e31946 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/base64id/package.json @@ -0,0 +1,80 @@ +{ + "_args": [ + [ + { + "raw": "base64id@0.1.0", + "scope": null, + "escapedName": "base64id", + "name": "base64id", + "rawSpec": "0.1.0", + "spec": "0.1.0", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io" + ] + ], + "_defaultsLoaded": true, + "_engineSupported": true, + "_from": "base64id@0.1.0", + "_id": "base64id@0.1.0", + "_inCache": true, + "_location": "/base64id", + "_nodeVersion": "v0.6.15", + "_npmUser": { + "name": "faeldt_kristian", + "email": "faeldt_kristian@cyberagent.co.jp" + }, + "_npmVersion": "1.1.16", + "_phantomChildren": {}, + "_requested": { + "raw": "base64id@0.1.0", + "scope": null, + "escapedName": "base64id", + "name": "base64id", + "rawSpec": "0.1.0", + "spec": "0.1.0", + "type": "version" + }, + "_requiredBy": [ + "/engine.io" + ], + "_resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "_shasum": "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f", + "_shrinkwrap": null, + "_spec": "base64id@0.1.0", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io", + "author": { + "name": "Kristian Faeldt", + "email": "faeldt_kristian@cyberagent.co.jp" + }, + "bugs": { + "url": "https://github.com/faeldt/base64id/issues" + }, + "dependencies": {}, + "description": "Generates a base64 id", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f", + "tarball": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" + }, + "engines": { + "node": ">= 0.4.0" + }, + "homepage": "https://github.com/faeldt/base64id#readme", + "main": "./lib/base64id.js", + "maintainers": [ + { + "name": "faeldt_kristian", + "email": "faeldt_kristian@cyberagent.co.jp" + } + ], + "name": "base64id", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/faeldt/base64id.git" + }, + "version": "0.1.0" +} diff --git a/src/p29-arduino-server/server/node_modules/better-assert/History.md b/src/p29-arduino-server/server/node_modules/better-assert/History.md new file mode 100644 index 0000000..cbb579b --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/History.md @@ -0,0 +1,15 @@ + +1.0.0 / 2013-02-03 +================== + + * Stop using the removed magic __stack global getter + +0.1.0 / 2012-10-04 +================== + + * add throwing of AssertionError for test frameworks etc + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/p29-arduino-server/server/node_modules/better-assert/Makefile b/src/p29-arduino-server/server/node_modules/better-assert/Makefile new file mode 100644 index 0000000..36a3ed7 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/Makefile @@ -0,0 +1,5 @@ + +test: + @echo "populate me" + +.PHONY: test \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/better-assert/Readme.md b/src/p29-arduino-server/server/node_modules/better-assert/Readme.md new file mode 100644 index 0000000..d8d3a63 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/Readme.md @@ -0,0 +1,61 @@ + +# better-assert + + Better c-style assertions using [callsite](https://github.com/visionmedia/callsite) for + self-documenting failure messages. + +## Installation + + $ npm install better-assert + +## Example + + By default assertions are enabled, however the __NO_ASSERT__ environment variable + will deactivate them when truthy. + +```js +var assert = require('better-assert'); + +test(); + +function test() { + var user = { name: 'tobi' }; + assert('tobi' == user.name); + assert('number' == typeof user.age); +} + +AssertionError: 'number' == typeof user.age + at test (/Users/tj/projects/better-assert/example.js:9:3) + at Object. (/Users/tj/projects/better-assert/example.js:4:1) + at Module._compile (module.js:449:26) + at Object.Module._extensions..js (module.js:467:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Module.runMain (module.js:492:10) + at process.startup.processNextTick.process._tickCallback (node.js:244:9) +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +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. \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/better-assert/example.js b/src/p29-arduino-server/server/node_modules/better-assert/example.js new file mode 100644 index 0000000..688c29e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/example.js @@ -0,0 +1,10 @@ + +var assert = require('./'); + +test(); + +function test() { + var user = { name: 'tobi' }; + assert('tobi' == user.name); + assert('number' == typeof user.age); +} \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/better-assert/index.js b/src/p29-arduino-server/server/node_modules/better-assert/index.js new file mode 100644 index 0000000..fd1c9b7 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/index.js @@ -0,0 +1,38 @@ +/** + * Module dependencies. + */ + +var AssertionError = require('assert').AssertionError + , callsite = require('callsite') + , fs = require('fs') + +/** + * Expose `assert`. + */ + +module.exports = process.env.NO_ASSERT + ? function(){} + : assert; + +/** + * Assert the given `expr`. + */ + +function assert(expr) { + if (expr) return; + + var stack = callsite(); + var call = stack[1]; + var file = call.getFileName(); + var lineno = call.getLineNumber(); + var src = fs.readFileSync(file, 'utf8'); + var line = src.split('\n')[lineno-1]; + var src = line.match(/assert\((.*)\)/)[1]; + + var err = new AssertionError({ + message: src, + stackStartFunction: stack[0].getFunction() + }); + + throw err; +} diff --git a/src/p29-arduino-server/server/node_modules/better-assert/package.json b/src/p29-arduino-server/server/node_modules/better-assert/package.json new file mode 100644 index 0000000..e2e7192 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/better-assert/package.json @@ -0,0 +1,100 @@ +{ + "_args": [ + [ + { + "raw": "better-assert@~1.0.0", + "scope": null, + "escapedName": "better-assert", + "name": "better-assert", + "rawSpec": "~1.0.0", + "spec": ">=1.0.0 <1.1.0", + "type": "range" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/parsejson" + ] + ], + "_from": "better-assert@>=1.0.0 <1.1.0", + "_id": "better-assert@1.0.2", + "_inCache": true, + "_location": "/better-assert", + "_npmUser": { + "name": "tony_ado", + "email": "coolhzb@163.com" + }, + "_npmVersion": "1.4.9", + "_phantomChildren": {}, + "_requested": { + "raw": "better-assert@~1.0.0", + "scope": null, + "escapedName": "better-assert", + "name": "better-assert", + "rawSpec": "~1.0.0", + "spec": ">=1.0.0 <1.1.0", + "type": "range" + }, + "_requiredBy": [ + "/parsejson", + "/parseqs", + "/parseuri" + ], + "_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "_shasum": "40866b9e1b9e0b55b481894311e68faffaebc522", + "_shrinkwrap": null, + "_spec": "better-assert@~1.0.0", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/parsejson", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "bugs": { + "url": "https://github.com/visionmedia/better-assert/issues" + }, + "contributors": [ + { + "name": "TonyHe", + "email": "coolhzb@163.com" + }, + { + "name": "ForbesLindesay" + } + ], + "dependencies": { + "callsite": "1.0.0" + }, + "description": "Better assertions for node, reporting the expr, filename, lineno etc", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "40866b9e1b9e0b55b481894311e68faffaebc522", + "tarball": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + }, + "engines": { + "node": "*" + }, + "homepage": "https://github.com/visionmedia/better-assert", + "keywords": [ + "assert", + "stack", + "trace", + "debug" + ], + "main": "index", + "maintainers": [ + { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + }, + { + "name": "tony_ado", + "email": "coolhzb@163.com" + } + ], + "name": "better-assert", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/visionmedia/better-assert.git" + }, + "version": "1.0.2" +} diff --git a/src/p29-arduino-server/server/node_modules/bindings/README.md b/src/p29-arduino-server/server/node_modules/bindings/README.md new file mode 100644 index 0000000..585cf51 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/bindings/README.md @@ -0,0 +1,97 @@ +node-bindings +============= +### Helper module for loading your native module's .node file + +This is a helper module for authors of Node.js native addon modules. +It is basically the "swiss army knife" of `require()`ing your native module's +`.node` file. + +Throughout the course of Node's native addon history, addons have ended up being +compiled in a variety of different places, depending on which build tool and which +version of node was used. To make matters worse, now the _gyp_ build tool can +produce either a _Release_ or _Debug_ build, each being built into different +locations. + +This module checks _all_ the possible locations that a native addon would be built +at, and returns the first one that loads successfully. + + +Installation +------------ + +Install with `npm`: + +``` bash +$ npm install bindings +``` + +Or add it to the `"dependencies"` section of your _package.json_ file. + + +Example +------- + +`require()`ing the proper bindings file for the current node version, platform +and architecture is as simple as: + +``` js +var bindings = require('bindings')('binding.node') + +// Use your bindings defined in your C files +bindings.your_c_function() +``` + + +Nice Error Output +----------------- + +When the `.node` file could not be loaded, `node-bindings` throws an Error with +a nice error message telling you exactly what was tried. You can also check the +`err.tries` Array property. + +``` +Error: Could not load the bindings file. Tried: + → /Users/nrajlich/ref/build/binding.node + → /Users/nrajlich/ref/build/Debug/binding.node + → /Users/nrajlich/ref/build/Release/binding.node + → /Users/nrajlich/ref/out/Debug/binding.node + → /Users/nrajlich/ref/Debug/binding.node + → /Users/nrajlich/ref/out/Release/binding.node + → /Users/nrajlich/ref/Release/binding.node + → /Users/nrajlich/ref/build/default/binding.node + → /Users/nrajlich/ref/compiled/0.8.2/darwin/x64/binding.node + at bindings (/Users/nrajlich/ref/node_modules/bindings/bindings.js:84:13) + at Object. (/Users/nrajlich/ref/lib/ref.js:5:47) + at Module._compile (module.js:449:26) + at Object.Module._extensions..js (module.js:467:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + ... +``` + + +License +------- + +(The MIT License) + +Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> + +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/src/p29-arduino-server/server/node_modules/bindings/bindings.js b/src/p29-arduino-server/server/node_modules/bindings/bindings.js new file mode 100644 index 0000000..93dcf85 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/bindings/bindings.js @@ -0,0 +1,166 @@ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , path = require('path') + , join = path.join + , dirname = path.dirname + , exists = fs.existsSync || path.existsSync + , defaults = { + arrow: process.env.NODE_BINDINGS_ARROW || ' → ' + , compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled' + , platform: process.platform + , arch: process.arch + , version: process.versions.node + , bindings: 'bindings.node' + , try: [ + // node-gyp's linked version in the "build" dir + [ 'module_root', 'build', 'bindings' ] + // node-waf and gyp_addon (a.k.a node-gyp) + , [ 'module_root', 'build', 'Debug', 'bindings' ] + , [ 'module_root', 'build', 'Release', 'bindings' ] + // Debug files, for development (legacy behavior, remove for node v0.9) + , [ 'module_root', 'out', 'Debug', 'bindings' ] + , [ 'module_root', 'Debug', 'bindings' ] + // Release files, but manually compiled (legacy behavior, remove for node v0.9) + , [ 'module_root', 'out', 'Release', 'bindings' ] + , [ 'module_root', 'Release', 'bindings' ] + // Legacy from node-waf, node <= 0.4.x + , [ 'module_root', 'build', 'default', 'bindings' ] + // Production "Release" buildtype binary (meh...) + , [ 'module_root', 'compiled', 'version', 'platform', 'arch', 'bindings' ] + ] + } + +/** + * The main `bindings()` function loads the compiled bindings for a given module. + * It uses V8's Error API to determine the parent filename that this function is + * being invoked from, which is then used to find the root directory. + */ + +function bindings (opts) { + + // Argument surgery + if (typeof opts == 'string') { + opts = { bindings: opts } + } else if (!opts) { + opts = {} + } + opts.__proto__ = defaults + + // Get the module root + if (!opts.module_root) { + opts.module_root = exports.getRoot(exports.getFileName()) + } + + // Ensure the given bindings name ends with .node + if (path.extname(opts.bindings) != '.node') { + opts.bindings += '.node' + } + + var tries = [] + , i = 0 + , l = opts.try.length + , n + , b + , err + + for (; i blob.js + +test: + @./node_modules/.bin/zuul -- test/index.js + +clean: + rm blob.js + +.PHONY: test blob.js diff --git a/src/p29-arduino-server/server/node_modules/blob/README.md b/src/p29-arduino-server/server/node_modules/blob/README.md new file mode 100644 index 0000000..6915955 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/blob/README.md @@ -0,0 +1,14 @@ +Blob +==== + +A module that exports a constructor that uses window.Blob when available, and a BlobBuilder with any vendor prefix in other cases. If neither is available, it exports undefined. + +Usage: + +```javascript +var Blob = require('blob'); +var b = new Blob(['hi', 'constructing', 'a', 'blob']); +``` + +## Licence +MIT diff --git a/src/p29-arduino-server/server/node_modules/blob/index.js b/src/p29-arduino-server/server/node_modules/blob/index.js new file mode 100644 index 0000000..cad3f84 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/blob/index.js @@ -0,0 +1,96 @@ +/** + * Create a blob builder even when vendor prefixes exist + */ + +var BlobBuilder = global.BlobBuilder + || global.WebKitBlobBuilder + || global.MSBlobBuilder + || global.MozBlobBuilder; + +/** + * Check if Blob constructor is supported + */ + +var blobSupported = (function() { + try { + var a = new Blob(['hi']); + return a.size === 2; + } catch(e) { + return false; + } +})(); + +/** + * Check if Blob constructor supports ArrayBufferViews + * Fails in Safari 6, so we need to map to ArrayBuffers there. + */ + +var blobSupportsArrayBufferView = blobSupported && (function() { + try { + var b = new Blob([new Uint8Array([1,2])]); + return b.size === 2; + } catch(e) { + return false; + } +})(); + +/** + * Check if BlobBuilder is supported + */ + +var blobBuilderSupported = BlobBuilder + && BlobBuilder.prototype.append + && BlobBuilder.prototype.getBlob; + +/** + * Helper function that maps ArrayBufferViews to ArrayBuffers + * Used by BlobBuilder constructor and old browsers that didn't + * support it in the Blob constructor. + */ + +function mapArrayBufferViews(ary) { + for (var i = 0; i < ary.length; i++) { + var chunk = ary[i]; + if (chunk.buffer instanceof ArrayBuffer) { + var buf = chunk.buffer; + + // if this is a subarray, make a copy so we only + // include the subarray region from the underlying buffer + if (chunk.byteLength !== buf.byteLength) { + var copy = new Uint8Array(chunk.byteLength); + copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength)); + buf = copy.buffer; + } + + ary[i] = buf; + } + } +} + +function BlobBuilderConstructor(ary, options) { + options = options || {}; + + var bb = new BlobBuilder(); + mapArrayBufferViews(ary); + + for (var i = 0; i < ary.length; i++) { + bb.append(ary[i]); + } + + return (options.type) ? bb.getBlob(options.type) : bb.getBlob(); +}; + +function BlobConstructor(ary, options) { + mapArrayBufferViews(ary); + return new Blob(ary, options || {}); +}; + +module.exports = (function() { + if (blobSupported) { + return blobSupportsArrayBufferView ? global.Blob : BlobConstructor; + } else if (blobBuilderSupported) { + return BlobBuilderConstructor; + } else { + return undefined; + } +})(); diff --git a/src/p29-arduino-server/server/node_modules/blob/package.json b/src/p29-arduino-server/server/node_modules/blob/package.json new file mode 100644 index 0000000..8db9990 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/blob/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + { + "raw": "blob@0.0.4", + "scope": null, + "escapedName": "blob", + "name": "blob", + "rawSpec": "0.0.4", + "spec": "0.0.4", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser" + ] + ], + "_from": "blob@0.0.4", + "_id": "blob@0.0.4", + "_inCache": true, + "_location": "/blob", + "_npmUser": { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + }, + "_npmVersion": "1.4.6", + "_phantomChildren": {}, + "_requested": { + "raw": "blob@0.0.4", + "scope": null, + "escapedName": "blob", + "name": "blob", + "rawSpec": "0.0.4", + "spec": "0.0.4", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "_shasum": "bcf13052ca54463f30f9fc7e95b9a47630a94921", + "_shrinkwrap": null, + "_spec": "blob@0.0.4", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/engine.io-parser", + "bugs": { + "url": "https://github.com/rase-/blob/issues" + }, + "dependencies": {}, + "description": "Abstracts out Blob and uses BlobBulder in cases where it is supported with any vendor prefix.", + "devDependencies": { + "browserify": "3.30.1", + "expect.js": "0.2.0", + "mocha": "1.17.1", + "zuul": "1.5.4" + }, + "directories": {}, + "dist": { + "shasum": "bcf13052ca54463f30f9fc7e95b9a47630a94921", + "tarball": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" + }, + "homepage": "https://github.com/rase-/blob", + "maintainers": [ + { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + } + ], + "name": "blob", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/rase-/blob.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.0.4" +} diff --git a/src/p29-arduino-server/server/node_modules/blob/test/index.js b/src/p29-arduino-server/server/node_modules/blob/test/index.js new file mode 100644 index 0000000..df9303f --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/blob/test/index.js @@ -0,0 +1,94 @@ +var Blob = require('../'); +var expect = require('expect.js'); + +describe('blob', function() { + if (!Blob) { + it('should not have a blob or a blob builder in the global namespace, or blob should not be a constructor function if the module exports false', function() { + try { + var ab = (new Uint8Array(5)).buffer; + global.Blob([ab]); + expect().fail('Blob shouldn\'t be constructable'); + } catch (e) {} + + var BlobBuilder = global.BlobBuilder + || global.WebKitBlobBuilder + || global.MSBlobBuilder + || global.MozBlobBuilder; + expect(BlobBuilder).to.be(undefined); + }); + } else { + it('should encode a proper sized blob when given a string argument', function() { + var b = new Blob(['hi']); + expect(b.size).to.be(2); + }); + + it('should encode a blob with proper size when given two strings as arguments', function() { + var b = new Blob(['hi', 'hello']); + expect(b.size).to.be(7); + }); + + it('should encode arraybuffers with right content', function(done) { + var ary = new Uint8Array(5); + for (var i = 0; i < 5; i++) ary[i] = i; + var b = new Blob([ary.buffer]); + var fr = new FileReader(); + fr.onload = function() { + var newAry = new Uint8Array(this.result); + for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); + done(); + }; + fr.readAsArrayBuffer(b); + }); + + it('should encode typed arrays with right content', function(done) { + var ary = new Uint8Array(5); + for (var i = 0; i < 5; i++) ary[i] = i; + var b = new Blob([ary]); + var fr = new FileReader(); + fr.onload = function() { + var newAry = new Uint8Array(this.result); + for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); + done(); + }; + fr.readAsArrayBuffer(b); + }); + + it('should encode sliced typed arrays with right content', function(done) { + var ary = new Uint8Array(5); + for (var i = 0; i < 5; i++) ary[i] = i; + var b = new Blob([ary.subarray(2)]); + var fr = new FileReader(); + fr.onload = function() { + var newAry = new Uint8Array(this.result); + for (var i = 0; i < 3; i++) expect(newAry[i]).to.be(i + 2); + done(); + }; + fr.readAsArrayBuffer(b); + }); + + it('should encode with blobs', function(done) { + var ary = new Uint8Array(5); + for (var i = 0; i < 5; i++) ary[i] = i; + var b = new Blob([new Blob([ary.buffer])]); + var fr = new FileReader(); + fr.onload = function() { + var newAry = new Uint8Array(this.result); + for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i); + done(); + }; + fr.readAsArrayBuffer(b); + }); + + it('should enode mixed contents to right size', function() { + var ary = new Uint8Array(5); + for (var i = 0; i < 5; i++) ary[i] = i; + var b = new Blob([ary.buffer, 'hello']); + expect(b.size).to.be(10); + }); + + it('should accept mime type', function() { + var b = new Blob(['hi', 'hello'], { type: 'text/html' }); + expect(b.type).to.be('text/html'); + }); + } +}); diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/LICENSE.md b/src/p29-arduino-server/server/node_modules/browser-serialport/LICENSE.md new file mode 100644 index 0000000..e9c4840 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Glen Arrowsmith + +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. \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/README.md b/src/p29-arduino-server/server/node_modules/browser-serialport/README.md new file mode 100644 index 0000000..a4f85a0 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/README.md @@ -0,0 +1,147 @@ +# browser-serialport + +Robots in the browser. Just like [node-serialport](https://npmjs.org/package/serialport) but for browser apps. + + +## Why not Node.js? + +[Nodebots](http://nodebots.io/) are awesome but HTML5 apps have access to a lot of APIs that make sense for robotics like the [GamepadAPI](http://www.html5rocks.com/en/tutorials/doodles/gamepad/), [WebRTC Video and Data](http://www.webrtc.org/), [Web Speech API](http://www.google.com/intl/en/chrome/demos/speech.html), etc. Also you get a nice GUI and its easier to run. I have also made a fork of [Johnny-Five](https://github.com/garrows/johnny-five) to work with [Browserify](http://browserify.org/) as well by modifying it's dependancy [Firmata](https://github.com/garrows/firmata) to use browser-serialport. + +## Restrictions + +You will not be able to add this to your normal website. + +This library only works in a [Chrome Packaged App](http://developer.chrome.com/apps/about_apps.html) as this is the only way to get access to the [serial ports API](http://developer.chrome.com/apps/serial.html) in the browser. + +If you want help making your first Chrome App, read the ["Create Your First App"](http://developer.chrome.com/apps/first_app.html) tutorial. + +There is currently no Firefox extension support but that might come soon if possible. + + +Known incompatibilities with node-serialport +------------------------------------------- +* Parsers not implemented +* Inconsistent error messages +* Chrome has a slightly different options set: + * __dataBits__: 7, 8 + * __stopBits__: 1, 2 + * __parity__: 'none', 'even', 'mark', 'odd', 'space' + * __flowControl__: 'RTSCTS' + + +## Installation + +``` +npm install browser-serialport +``` + +To Use +------ + +Opening a serial port: + +```js +var SerialPort = require("browser-serialport").SerialPort +var serialPort = new SerialPort("/dev/tty-usbserial1", { + baudrate: 57600 +}); +``` + +When opening a serial port, you can specify (in this order). + +1. Path to Serial Port - required. +1. Options - optional and described below. + +The options object allows you to pass named options to the serial port during initialization. The valid attributes for the options object are the following: + +* baudrate: Baud Rate, defaults to 9600. Should be one of: 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1800, 1200, 600, 300, 200, 150, 134, 110, 75, or 50. Custom rates as allowed by hardware is supported. +* databits: Data Bits, defaults to 8. Must be one of: 8, 7, ~~6~~, or ~~5~~. +* stopbits: Stop Bits, defaults to 1. Must be one of: 1 or 2. +* parity: Parity, defaults to 'none'. Must be one of: 'none', 'even', 'mark', 'odd', 'space' +* buffersize: Size of read buffer, defaults to 255. Must be an integer value. +* parser: The parser engine to use with read data, defaults to rawPacket strategy which just emits the raw buffer as a "data" event. Can be any function that accepts EventEmitter as first parameter and the raw buffer as the second parameter. + +**Note, we have added support for either all lowercase OR camelcase of the options (thanks @jagautier), use whichever style you prefer.** + +open event +---------- + +You MUST wait for the open event to be emitted before reading/writing to the serial port. The open happens asynchronously so installing 'data' listeners and writing +before the open event might result in... nothing at all. + +Assuming you are connected to a serial console, you would for example: + +```js +serialPort.on("open", function () { + console.log('open'); + serialPort.on('data', function(data) { + console.log('data received: ' + data); + }); + serialPort.write("ls\n", function(err, results) { + console.log('err ' + err); + console.log('results ' + results); + }); +}); +``` + +You can also call the open function, in this case instanciate the serialport with an additional flag. + +```js +var SerialPort = require("browser-serialport").SerialPort +var serialPort = new SerialPort("/dev/tty-usbserial1", { + baudrate: 57600 +}, false); // this is the openImmediately flag [default is true] + +serialPort.open(function (error) { + if ( error ) { + console.log('failed to open: '+error); + } else { + console.log('open'); + serialPort.on('data', function(data) { + console.log('data received: ' + data); + }); + serialPort.write("ls\n", function(err, results) { + console.log('err ' + err); + console.log('results ' + results); + }); + } +}); +``` + +List Ports +---------- + +You can also list the ports along with some metadata as well. + +```js +var serialPort = require("browser-serialport"); +serialPort.list(function (err, ports) { + ports.forEach(function(port) { + console.log(port.comName); + console.log(port.pnpId); + console.log(port.manufacturer); + }); +}); +``` + +Parsers +------- + +Browser-serialport doesn't as of 2.0.0 support parsers. + + +You can get updates of new data from the Serial Port as follows: + +```js +serialPort.on("data", function (data) { + sys.puts("here: "+data); +}); +``` + +You can write to the serial port by sending a string or buffer to the write method as follows: + +```js +serialPort.write("OMG IT WORKS\r"); +``` + +Enjoy and do cool things with this code. diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/index.js b/src/p29-arduino-server/server/node_modules/browser-serialport/index.js new file mode 100644 index 0000000..67c8b7c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/index.js @@ -0,0 +1,419 @@ +'use strict'; + +var EE = require('events').EventEmitter; +var util = require('util'); + +var DATABITS = [7, 8]; +var STOPBITS = [1, 2]; +var PARITY = ['none', 'even', 'mark', 'odd', 'space']; +var FLOWCONTROLS = ['RTSCTS']; + +var _options = { + baudrate: 9600, + parity: 'none', + rtscts: false, + databits: 8, + stopbits: 1, + buffersize: 256 +}; + +function convertOptions(options){ + switch (options.dataBits) { + case 7: + options.dataBits = 'seven'; + break; + case 8: + options.dataBits = 'eight'; + break; + } + + switch (options.stopBits) { + case 1: + options.stopBits = 'one'; + break; + case 2: + options.stopBits = 'two'; + break; + } + + switch (options.parity) { + case 'none': + options.parity = 'no'; + break; + } + + return options; +} + +function SerialPort(path, options, openImmediately, callback) { + + EE.call(this); + + var self = this; + + var args = Array.prototype.slice.call(arguments); + callback = args.pop(); + if (typeof(callback) !== 'function') { + callback = null; + } + + options = (typeof options !== 'function') && options || {}; + + openImmediately = (openImmediately === undefined || openImmediately === null) ? true : openImmediately; + + callback = callback || function (err) { + if (err) { + self.emit('error', err); + } + }; + + var err; + + options.baudRate = options.baudRate || options.baudrate || _options.baudrate; + + options.dataBits = options.dataBits || options.databits || _options.databits; + if (DATABITS.indexOf(options.dataBits) === -1) { + err = new Error('Invalid "databits": ' + options.dataBits); + callback(err); + return; + } + + options.stopBits = options.stopBits || options.stopbits || _options.stopbits; + if (STOPBITS.indexOf(options.stopBits) === -1) { + err = new Error('Invalid "stopbits": ' + options.stopbits); + callback(err); + return; + } + + options.parity = options.parity || _options.parity; + if (PARITY.indexOf(options.parity) === -1) { + err = new Error('Invalid "parity": ' + options.parity); + callback(err); + return; + } + + if (!path) { + err = new Error('Invalid port specified: ' + path); + callback(err); + return; + } + + options.rtscts = _options.rtscts; + + if (options.flowControl || options.flowcontrol) { + var fc = options.flowControl || options.flowcontrol; + + if (typeof fc === 'boolean') { + options.rtscts = true; + } else { + var clean = fc.every(function (flowControl) { + var fcup = flowControl.toUpperCase(); + var idx = FLOWCONTROLS.indexOf(fcup); + if (idx < 0) { + var err = new Error('Invalid "flowControl": ' + fcup + '. Valid options: ' + FLOWCONTROLS.join(', ')); + callback(err); + return false; + } else { + + // "XON", "XOFF", "XANY", "DTRDTS", "RTSCTS" + switch (idx) { + case 0: options.rtscts = true; break; + } + return true; + } + }); + if(!clean){ + return; + } + } + } + + options.bufferSize = options.bufferSize || options.buffersize || _options.buffersize; + + // defaults to chrome.serial if no options.serial passed + // inlined instead of on _options to allow mocking global chrome.serial for optional options test + options.serial = options.serial || (typeof chrome !== 'undefined' && chrome.serial); + + if (!options.serial) { + throw new Error('No access to serial ports. Try loading as a Chrome Application.'); + } + + this.options = convertOptions(options); + + this.options.serial.onReceiveError.addListener(function(info){ + + switch (info.error) { + + case 'disconnected': + case 'device_lost': + case 'system_error': + err = new Error('Disconnected'); + // send notification of disconnect + if (self.options.disconnectedCallback) { + self.options.disconnectedCallback(err); + } else { + self.emit('disconnect', err); + } + if(self.connectionId >= 0){ + self.close(); + } + break; + case 'timeout': + break; + } + + }); + + this.path = path; + + if (openImmediately) { + process.nextTick(function () { + self.open(callback); + }); + } +} + +util.inherits(SerialPort, EE); + +SerialPort.prototype.connectionId = -1; + +SerialPort.prototype.open = function (callback) { + var options = { + bitrate: parseInt(this.options.baudRate, 10), + dataBits: this.options.dataBits, + parityBit: this.options.parity, + stopBits: this.options.stopBits, + ctsFlowControl: this.options.rtscts + }; + + this.options.serial.connect(this.path, options, this.proxy('onOpen', callback)); +}; + +SerialPort.prototype.onOpen = function (callback, openInfo) { + if(chrome.runtime.lastError){ + if(typeof callback === 'function'){ + callback(chrome.runtime.lastError); + }else{ + this.emit('error', chrome.runtime.lastError); + } + return; + } + + this.connectionId = openInfo.connectionId; + + if (this.connectionId === -1) { + this.emit('error', new Error('Could not open port.')); + return; + } + + this.emit('open', openInfo); + + this._reader = this.proxy('onRead'); + + this.options.serial.onReceive.addListener(this._reader); + + if(typeof callback === 'function'){ + callback(chrome.runtime.lastError, openInfo); + } +}; + +SerialPort.prototype.onRead = function (readInfo) { + if (readInfo && this.connectionId === readInfo.connectionId) { + + if (this.options.dataCallback) { + this.options.dataCallback(toBuffer(readInfo.data)); + } else { + this.emit('data', toBuffer(readInfo.data)); + } + + } +}; + +SerialPort.prototype.write = function (buffer, callback) { + if (this.connectionId < 0) { + var err = new Error('Serialport not open.'); + if(typeof callback === 'function'){ + callback(err); + }else{ + this.emit('error', err); + } + return; + } + + if (typeof buffer === 'string') { + buffer = str2ab(buffer); + } + + //Make sure its not a browserify faux Buffer. + if (buffer instanceof ArrayBuffer === false) { + buffer = buffer2ArrayBuffer(buffer); + } + + this.options.serial.send(this.connectionId, buffer, function(info) { + if (typeof callback === 'function') { + callback(chrome.runtime.lastError, info); + } + }); +}; + + +SerialPort.prototype.close = function (callback) { + if (this.connectionId < 0) { + var err = new Error('Serialport not open.'); + if(typeof callback === 'function'){ + callback(err); + }else{ + this.emit('error', err); + } + return; + } + + this.options.serial.disconnect(this.connectionId, this.proxy('onClose', callback)); +}; + +SerialPort.prototype.onClose = function (callback, result) { + this.connectionId = -1; + this.emit('close'); + + this.removeAllListeners(); + if(this._reader){ + this.options.serial.onReceive.removeListener(this._reader); + this._reader = null; + } + + if (typeof callback === 'function') { + callback(chrome.runtime.lastError, result); + } +}; + +SerialPort.prototype.flush = function (callback) { + if (this.connectionId < 0) { + var err = new Error('Serialport not open.'); + if(typeof callback === 'function'){ + callback(err); + }else{ + this.emit('error', err); + } + return; + } + + var self = this; + + this.options.serial.flush(this.connectionId, function(result) { + if (chrome.runtime.lastError) { + if (typeof callback === 'function') { + callback(chrome.runtime.lastError, result); + } else { + self.emit('error', chrome.runtime.lastError); + } + return; + } else { + callback(null, result); + } + }); +}; + +SerialPort.prototype.drain = function (callback) { + if (this.connectionId < 0) { + var err = new Error('Serialport not open.'); + if(typeof callback === 'function'){ + callback(err); + }else{ + this.emit('error', err); + } + return; + } + + if (typeof callback === 'function') { + callback(); + } +}; + + +SerialPort.prototype.proxy = function () { + var self = this; + var proxyArgs = []; + + //arguments isnt actually an array. + for (var i = 0; i < arguments.length; i++) { + proxyArgs[i] = arguments[i]; + } + + var functionName = proxyArgs.splice(0, 1)[0]; + + var func = function() { + var funcArgs = []; + for (var i = 0; i < arguments.length; i++) { + funcArgs[i] = arguments[i]; + } + var allArgs = proxyArgs.concat(funcArgs); + + self[functionName].apply(self, allArgs); + }; + + return func; +}; + +SerialPort.prototype.set = function (options, callback) { + this.options.serial.setControlSignals(this.connectionId, options, function(result){ + callback(chrome.runtime.lastError, result); + }); +}; + +function SerialPortList(callback) { + if (typeof chrome != 'undefined' && chrome.serial) { + chrome.serial.getDevices(function(ports) { + var portObjects = new Array(ports.length); + for (var i = 0; i < ports.length; i++) { + portObjects[i] = { + comName: ports[i].path, + manufacturer: ports[i].displayName, + serialNumber: '', + pnpId: '', + locationId:'', + vendorId: '0x' + (ports[i].vendorId||0).toString(16), + productId: '0x' + (ports[i].productId||0).toString(16) + }; + } + callback(chrome.runtime.lastError, portObjects); + }); + } else { + callback(new Error('No access to serial ports. Try loading as a Chrome Application.'), null); + } +} + +// Convert string to ArrayBuffer +function str2ab(str) { + var buf = new ArrayBuffer(str.length); + var bufView = new Uint8Array(buf); + for (var i = 0; i < str.length; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} + +// Convert buffer to ArrayBuffer +function buffer2ArrayBuffer(buffer) { + var buf = new ArrayBuffer(buffer.length); + var bufView = new Uint8Array(buf); + for (var i = 0; i < buffer.length; i++) { + bufView[i] = buffer[i]; + } + return buf; +} + +function toBuffer(ab) { + var buffer = new Buffer(ab.byteLength); + var view = new Uint8Array(ab); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = view[i]; + } + return buffer; +} + +module.exports = { + SerialPort: SerialPort, + list: SerialPortList, + buffer2ArrayBuffer: buffer2ArrayBuffer, + used: [] //TODO: Populate this somewhere. +}; diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/package.json b/src/p29-arduino-server/server/node_modules/browser-serialport/package.json new file mode 100644 index 0000000..943dfed --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/package.json @@ -0,0 +1,105 @@ +{ + "_args": [ + [ + { + "raw": "browser-serialport@latest", + "scope": null, + "escapedName": "browser-serialport", + "name": "browser-serialport", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five" + ] + ], + "_from": "browser-serialport@latest", + "_id": "browser-serialport@2.0.3", + "_inCache": true, + "_location": "/browser-serialport", + "_nodeVersion": "0.10.36", + "_npmUser": { + "name": "phated", + "email": "blaine@iceddev.com" + }, + "_npmVersion": "2.8.3", + "_phantomChildren": {}, + "_requested": { + "raw": "browser-serialport@latest", + "scope": null, + "escapedName": "browser-serialport", + "name": "browser-serialport", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "/firmata", + "/johnny-five" + ], + "_resolved": "https://registry.npmjs.org/browser-serialport/-/browser-serialport-2.0.3.tgz", + "_shasum": "3890aad440dc364540ad9f86f1e251d1b2011d73", + "_shrinkwrap": null, + "_spec": "browser-serialport@latest", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five", + "author": { + "name": "Glen Arrowsmith @garrows" + }, + "browser": "./index.js", + "bugs": { + "url": "https://github.com/garrows/browser-serialport/issues" + }, + "dependencies": {}, + "description": "Robots in the browser. Just like node-serialport but for browser/chrome apps.", + "devDependencies": { + "chai": "^1.10.0", + "jshint": "^2.5.11", + "lodash": "^3.6.0", + "mocha": "^2.1.0", + "sinon": "^1.12.2", + "sinon-chai": "^2.6.0" + }, + "directories": {}, + "dist": { + "shasum": "3890aad440dc364540ad9f86f1e251d1b2011d73", + "tarball": "https://registry.npmjs.org/browser-serialport/-/browser-serialport-2.0.3.tgz" + }, + "gitHead": "4855a281079285691f9c8576d10717371a33d5de", + "homepage": "https://github.com/garrows/browser-serialport#readme", + "keywords": [ + "serial", + "firmata", + "nodebots", + "chromebots", + "browserbots", + "robot", + "robots" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "name": "garrows", + "email": "glen.arrowsmith@gmail.com" + }, + { + "name": "phated", + "email": "blaine@iceddev.com" + }, + { + "name": "jjrosent", + "email": "jakerosenthal@gmail.com" + } + ], + "name": "browser-serialport", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/garrows/browser-serialport.git" + }, + "scripts": { + "test": "jshint index.js && mocha" + }, + "version": "2.0.3" +} diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/test/parsers.js b/src/p29-arduino-server/server/node_modules/browser-serialport/test/parsers.js new file mode 100644 index 0000000..d024c7a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/test/parsers.js @@ -0,0 +1,47 @@ +"use strict"; + +var chai = require('chai'); +var expect = chai.expect; +var sinonChai = require("sinon-chai"); +var sinon = require("sinon"); +chai.use(sinonChai); + +// var parsers = require('../parsers'); + +describe.skip("parsers", function () { + + describe("#raw", function () { + it("emits data exactly as it's written", function () { + var data = new Buffer("BOGUS"); + var spy = sinon.spy(); + parsers.raw({ emit: spy }, data); + expect(spy.getCall(0).args[1]).to.deep.equal(new Buffer("BOGUS")); + }); + }); + + describe("#readline", function () { + it("emits data events split on a delimiter", function () { + var data = new Buffer("I love robots\rEach and Every One\r"); + var spy = sinon.spy(); + var parser = parsers.readline(); + parser({ emit: spy }, data); + expect(spy).to.have.been.calledWith("data", "I love robots"); + expect(spy).to.have.been.calledWith("data", "Each and Every One"); + }); + }); + + describe('#byteLength', function(){ + it("emits data events every 8 bytes", function () { + var data = new Buffer("Robots are so freaking cool!"); + var spy = sinon.spy(); + var parser = parsers.byteLength(8); + parser({ emit: spy }, data); + expect(spy.callCount).to.equal(3); + expect(spy.getCall(0).args[1].length).to.equal(8); + expect(spy.getCall(0).args[1]).to.deep.equal(new Buffer("Robots a")); + expect(spy.getCall(1).args[1]).to.deep.equal(new Buffer("re so fr")); + expect(spy.getCall(2).args[1]).to.deep.equal(new Buffer("eaking c")); + }); + }); + +}); diff --git a/src/p29-arduino-server/server/node_modules/browser-serialport/test/serialport-basic.js b/src/p29-arduino-server/server/node_modules/browser-serialport/test/serialport-basic.js new file mode 100644 index 0000000..e58a127 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/browser-serialport/test/serialport-basic.js @@ -0,0 +1,434 @@ +'use strict'; + +var sinon = require('sinon'); +var chai = require('chai'); +var without = require('lodash/array/without'); +var expect = chai.expect; + +var MockedSerialPort = require('../'); +var SerialPort = MockedSerialPort.SerialPort; + +var options; + +function unset(msg){ + return function(){ + throw new Error(msg); + }; +} + +var serialListeners = []; + +var hardware = { + ports: {}, + createPort: function(path){ + this.ports[path] = true; + }, + reset: function(){ + this.ports = {}; + this.onReceive = unset('onreceive unset'); + this.onReceiveError = unset('onReceiveError unset'); + }, + onReceive: unset('onReceive unset'), + onReceiveError: unset('onReceiveError unset'), + emitData: function(buffer){ + process.nextTick(function(){ + var readInfo = {data: MockedSerialPort.buffer2ArrayBuffer(buffer), connectionId: 1}; + serialListeners.forEach(function(cb){ + cb(readInfo); + }); + }); + }, + disconnect: function(path){ + this.ports[path] = false; + var info = {error: 'disconnected', connectionId: 1}; + this.onReceiveError(info); + }, + timeout: function(path){ + this.ports[path] = false; + var info = {error: 'timeout', connectionId: 1}; + this.onReceiveError(info); + }, + loseDevice: function(path){ + this.ports[path] = false; + var info = {error: 'device_lost', connectionId: 1}; + this.onReceiveError(info); + }, + systemError: function(path){ + this.ports[path] = false; + var info = {error: 'system_error', connectionId: 1}; + this.onReceiveError(info); + } +}; + +describe('SerialPort', function () { + var sandbox; + + beforeEach(function () { + sandbox = sinon.sandbox.create(); + + global.chrome = { runtime: { lastError: null } }; + + serialListeners = []; + + options = { + serial: { + connect: function(path, options, cb){ + if (!hardware.ports[path]) { + global.chrome.runtime.lastError = new Error({message: 'Failed to connect to the port.'}); + } + + chai.assert.ok(options.bitrate, 'baudrate not set'); + chai.assert.ok(options.dataBits, 'databits not set'); + chai.assert.ok(options.parityBit, 'parity not set'); + chai.assert.ok(options.stopBits, 'stopbits not set'); + chai.assert.isBoolean(options.ctsFlowControl, 'flowcontrol not set'); + + cb({ + bitrate: 9600, + bufferSize: 4096, + connectionId: 1, + ctsFlowControl: true, + dataBits: 'eight', + name: '', + parityBit: 'no', + paused: false, + persistent: false, + receiveTimeout: 0, + sendTimeout: 0, + stopBits: 'one' + }); + }, + onReceive: { + addListener: function(cb){ + serialListeners.push(cb); + }, + removeListener: function(cb){ + serialListeners = without(serialListeners, cb); + } + }, + onReceiveError: { + addListener: function(cb){ + hardware.onReceiveError = cb; + } + }, + send: function(connectionId, buffer, cb){ + + }, + disconnect: function(connectionId, cb){ + cb(); + }, + setControlSignals: function(connectionId, options, cb){ + cb(); + } + } + }; + // Create a port for fun and profit + hardware.reset(); + hardware.createPort('/dev/exists'); + }); + + afterEach(function () { + options = null; + + sandbox.restore(); + }); + + describe('Constructor', function () { + it('opens the port immediately', function (done) { + var port = new SerialPort('/dev/exists', options, function (err) { + expect(err).to.not.be.ok; + done(); + }); + }); + + it('emits the open event', function (done) { + var port = new SerialPort('/dev/exists', options); + port.on('open', function(){ + done(); + }); + }); + + it.skip('emits an error on the factory when erroring without a callback', function (done) { + // finish the test on error + MockedSerialPort.once('error', function (err) { + chai.assert.isDefined(err, 'didn\'t get an error'); + done(); + }); + + var port = new SerialPort('/dev/johnJacobJingleheimerSchmidt'); + }); + + it('emits an error on the serialport when explicit error handler present', function (done) { + var port = new SerialPort('/dev/johnJacobJingleheimerSchmidt', options); + + port.once('error', function(err) { + chai.assert.isDefined(err); + done(); + }); + }); + + it('errors with invalid databits', function (done) { + var errorCallback = function (err) { + chai.assert.isDefined(err, 'err is not defined'); + done(); + }; + + var port = new SerialPort('/dev/exists', { databits : 19 }, false, errorCallback); + }); + + it('errors with invalid stopbits', function (done) { + var errorCallback = function (err) { + chai.assert.isDefined(err, 'err is not defined'); + done(); + }; + + var port = new SerialPort('/dev/exists', { stopbits : 19 }, false, errorCallback); + }); + + it('errors with invalid parity', function (done) { + var errorCallback = function (err) { + chai.assert.isDefined(err, 'err is not defined'); + done(); + }; + + var port = new SerialPort('/dev/exists', { parity : 'pumpkins' }, false, errorCallback); + }); + + it('errors with invalid flow control', function (done) { + var errorCallback = function (err) { + chai.assert.isDefined(err, 'err is not defined'); + done(); + }; + + var port = new SerialPort('/dev/exists', { flowcontrol : ['pumpkins'] }, false, errorCallback); + }); + + it('errors with invalid path', function (done) { + var errorCallback = function (err) { + chai.assert.isDefined(err, 'err is not defined'); + done(); + }; + + var port = new SerialPort(null, false, errorCallback); + }); + + it('allows optional options', function (done) { + global.chrome.serial = options.serial; + var cb = function () {}; + var port = new SerialPort('/dev/exists', cb); + // console.log(port); + expect(typeof port.options).to.eq('object'); + delete global.chrome.serial; + done(); + }); + + }); + + describe('Functions', function () { + + it('write errors when serialport not open', function (done) { + var cb = function () {}; + var port = new SerialPort('/dev/exists', options, false, cb); + port.write(null, function(err){ + chai.assert.isDefined(err, 'err is not defined'); + done(); + }); + }); + + it('close errors when serialport not open', function (done) { + var cb = function () {}; + var port = new SerialPort('/dev/exists', options, false, cb); + port.close(function(err){ + chai.assert.isDefined(err, 'err is not defined'); + done(); + }); + }); + + it('flush errors when serialport not open', function (done) { + var cb = function () {}; + var port = new SerialPort('/dev/exists', options, false, cb); + port.flush(function(err){ + chai.assert.isDefined(err, 'err is not defined'); + done(); + }); + }); + + it('set errors when serialport not open', function (done) { + var cb = function () {}; + var port = new SerialPort('/dev/exists', options, false, cb); + port.set({}, function(err){ + chai.assert.isDefined(err, 'err is not defined'); + done(); + }); + }); + + it('drain errors when serialport not open', function (done) { + var cb = function () {}; + var port = new SerialPort('/dev/exists', options, false, cb); + port.drain(function(err){ + chai.assert.isDefined(err, 'err is not defined'); + done(); + }); + }); + + }); + + describe('reading data', function () { + + it('emits data events by default', function (done) { + var testData = new Buffer('I am a really short string'); + var port = new SerialPort('/dev/exists', options, function () { + port.once('data', function(recvData) { + expect(recvData).to.eql(testData); + done(); + }); + hardware.emitData(testData); + }); + }); + + it('calls the dataCallback if set', function (done) { + var testData = new Buffer('I am a really short string'); + options.dataCallback = function (recvData) { + expect(recvData).to.eql(testData); + done(); + }; + + var port = new SerialPort('/dev/exists', options, function () { + hardware.emitData(testData); + }); + }); + + }); + + describe('#open', function () { + + it('passes the port to the bindings', function (done) { + var openSpy = sandbox.spy(options.serial, 'connect'); + var port = new SerialPort('/dev/exists', options, false); + port.open(function (err) { + expect(err).to.not.be.ok; + expect(openSpy.calledWith('/dev/exists')); + done(); + }); + }); + + it('calls back an error when opening an invalid port', function (done) { + var port = new SerialPort('/dev/unhappy', options, false); + port.open(function (err) { + expect(err).to.be.ok; + done(); + }); + }); + + it('emits data after being reopened', function (done) { + var data = new Buffer('Howdy!'); + var port = new SerialPort('/dev/exists', options, function () { + port.close(function () { + port.open(function () { + port.once('data', function (res) { + expect(res).to.eql(data); + done(); + }); + hardware.emitData(data); + }); + }); + }); + }); + + it('does not emit data twice if reopened', function (done) { + var data = new Buffer('Howdy!'); + var port = new SerialPort('/dev/exists', options, function () { + port.close(function () { + port.open(function () { + var count = 0; + port.on('data', function (res) { + count++; + }); + hardware.emitData(data); + + setTimeout(function(){ + expect(count).to.equal(1); + done(); + }, 200); + }); + }); + }); + }); + }); + + describe('#send', function () { + + it('errors when writing a closed port', function (done) { + var port = new SerialPort('/dev/exists', options, false); + port.write(new Buffer(''), function(err){ + expect(err).to.be.ok; + done(); + }); + }); + + }); + + describe('close', function () { + it('fires a close event when it\'s closed', function (done) { + var port = new SerialPort('/dev/exists', options, function () { + var closeSpy = sandbox.spy(); + port.on('close', closeSpy); + port.close(); + expect(closeSpy.calledOnce); + done(); + }); + }); + + it('fires a close event after being reopened', function (done) { + var port = new SerialPort('/dev/exists', options, function () { + var closeSpy = sandbox.spy(); + port.on('close', closeSpy); + port.close(); + port.open(); + port.close(); + expect(closeSpy.calledTwice); + done(); + }); + }); + + it('errors when closing an invalid port', function (done) { + var port = new SerialPort('/dev/exists', options, false); + port.close(function(err){ + expect(err).to.be.ok; + done(); + }); + }); + + it('emits a close event', function (done) { + var port = new SerialPort('/dev/exists', options, function () { + port.on('close', function () { + done(); + }); + port.close(); + }); + }); + }); + + describe('disconnect', function () { + it('fires a disconnect event', function (done) { + options.disconnectedCallback = function (err) { + expect(err).to.be.ok; + done(); + }; + var port = new SerialPort('/dev/exists', options, function () { + hardware.disconnect('/dev/exists'); + }); + }); + + it('emits a disconnect event', function (done) { + var port = new SerialPort('/dev/exists', options, function () { + port.on('disconnect', function () { + done(); + }); + hardware.disconnect('/dev/exists'); + }); + }); + }); + +}); + diff --git a/src/p29-arduino-server/server/node_modules/callsite/History.md b/src/p29-arduino-server/server/node_modules/callsite/History.md new file mode 100644 index 0000000..4994198 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/callsite/History.md @@ -0,0 +1,10 @@ + +1.0.0 / 2013-01-24 +================== + + * remove lame magical getters + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/src/p29-arduino-server/server/node_modules/callsite/Makefile b/src/p29-arduino-server/server/node_modules/callsite/Makefile new file mode 100644 index 0000000..634e372 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/callsite/Makefile @@ -0,0 +1,6 @@ + +test: + @./node_modules/.bin/mocha \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/callsite/Readme.md b/src/p29-arduino-server/server/node_modules/callsite/Readme.md new file mode 100644 index 0000000..0dbd16a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/callsite/Readme.md @@ -0,0 +1,44 @@ +# callstack + + Access to v8's "raw" `CallSite`s. + +## Installation + + $ npm install callsite + +## Example + +```js +var stack = require('callsite'); + +foo(); + +function foo() { + bar(); +} + +function bar() { + baz(); +} + +function baz() { + console.log(); + stack().forEach(function(site){ + console.log(' \033[36m%s\033[90m in %s:%d\033[0m' + , site.getFunctionName() || 'anonymous' + , site.getFileName() + , site.getLineNumber()); + }); + console.log(); +} +``` + +## Why? + + Because you can do weird, stupid, clever, wacky things such as: + + - [better-assert](https://github.com/visionmedia/better-assert) + +## License + + MIT diff --git a/src/p29-arduino-server/server/node_modules/callsite/index.js b/src/p29-arduino-server/server/node_modules/callsite/index.js new file mode 100644 index 0000000..d3ee6f8 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/callsite/index.js @@ -0,0 +1,10 @@ + +module.exports = function(){ + var orig = Error.prepareStackTrace; + Error.prepareStackTrace = function(_, stack){ return stack; }; + var err = new Error; + Error.captureStackTrace(err, arguments.callee); + var stack = err.stack; + Error.prepareStackTrace = orig; + return stack; +}; diff --git a/src/p29-arduino-server/server/node_modules/callsite/package.json b/src/p29-arduino-server/server/node_modules/callsite/package.json new file mode 100644 index 0000000..34da30c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/callsite/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + { + "raw": "callsite@1.0.0", + "scope": null, + "escapedName": "callsite", + "name": "callsite", + "rawSpec": "1.0.0", + "spec": "1.0.0", + "type": "version" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/better-assert" + ] + ], + "_from": "callsite@1.0.0", + "_id": "callsite@1.0.0", + "_inCache": true, + "_location": "/callsite", + "_npmUser": { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + }, + "_npmVersion": "1.2.2", + "_phantomChildren": {}, + "_requested": { + "raw": "callsite@1.0.0", + "scope": null, + "escapedName": "callsite", + "name": "callsite", + "rawSpec": "1.0.0", + "spec": "1.0.0", + "type": "version" + }, + "_requiredBy": [ + "/better-assert" + ], + "_resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "_shasum": "280398e5d664bd74038b6f0905153e6e8af1bc20", + "_shrinkwrap": null, + "_spec": "callsite@1.0.0", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/better-assert", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "description": "access to v8's CallSites", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": {}, + "dist": { + "shasum": "280398e5d664bd74038b6f0905153e6e8af1bc20", + "tarball": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + }, + "engines": { + "node": "*" + }, + "keywords": [ + "stack", + "trace", + "line" + ], + "main": "index", + "maintainers": [ + { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + } + ], + "name": "callsite", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "version": "1.0.0" +} diff --git a/src/p29-arduino-server/server/node_modules/chalk/index.js b/src/p29-arduino-server/server/node_modules/chalk/index.js new file mode 100644 index 0000000..2d85a91 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/chalk/index.js @@ -0,0 +1,116 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +module.exports = new Chalk(); +module.exports.styles = ansiStyles; +module.exports.hasColor = hasAnsi; +module.exports.stripColor = stripAnsi; +module.exports.supportsColor = supportsColor; diff --git a/src/p29-arduino-server/server/node_modules/chalk/license b/src/p29-arduino-server/server/node_modules/chalk/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/chalk/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/src/p29-arduino-server/server/node_modules/chalk/package.json b/src/p29-arduino-server/server/node_modules/chalk/package.json new file mode 100644 index 0000000..3b1561a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/chalk/package.json @@ -0,0 +1,140 @@ +{ + "_args": [ + [ + { + "raw": "chalk@latest", + "scope": null, + "escapedName": "chalk", + "name": "chalk", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five" + ] + ], + "_from": "chalk@latest", + "_id": "chalk@1.1.3", + "_inCache": true, + "_location": "/chalk", + "_nodeVersion": "0.10.32", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276" + }, + "_npmUser": { + "name": "qix", + "email": "i.am.qix@gmail.com" + }, + "_npmVersion": "2.14.2", + "_phantomChildren": {}, + "_requested": { + "raw": "chalk@latest", + "scope": null, + "escapedName": "chalk", + "name": "chalk", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "/johnny-five" + ], + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98", + "_shrinkwrap": null, + "_spec": "chalk@latest", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five", + "bugs": { + "url": "https://github.com/chalk/chalk/issues" + }, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "description": "Terminal string styling done right. Much color.", + "devDependencies": { + "coveralls": "^2.11.2", + "matcha": "^0.6.0", + "mocha": "*", + "nyc": "^3.0.0", + "require-uncached": "^1.0.2", + "resolve-from": "^1.0.0", + "semver": "^4.3.3", + "xo": "*" + }, + "directories": {}, + "dist": { + "shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98", + "tarball": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "gitHead": "0d8d8c204eb87a4038219131ad4d8369c9f59d24", + "homepage": "https://github.com/chalk/chalk#readme", + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "license": "MIT", + "maintainers": [ + { + "name": "qix", + "email": "i.am.qix@gmail.com" + }, + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "unicorn", + "email": "sindresorhus+unicorn@gmail.com" + } + ], + "name": "chalk", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/chalk/chalk.git" + }, + "scripts": { + "bench": "matcha benchmark.js", + "coverage": "nyc npm test && nyc report", + "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls", + "test": "xo && mocha" + }, + "version": "1.1.3", + "xo": { + "envs": [ + "node", + "mocha" + ] + } +} diff --git a/src/p29-arduino-server/server/node_modules/chalk/readme.md b/src/p29-arduino-server/server/node_modules/chalk/readme.md new file mode 100644 index 0000000..5cf111e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/chalk/readme.md @@ -0,0 +1,213 @@ +

+
+
+ chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) +[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master) +[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) + + +[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png) + + +## Why + +- Highly performant +- Doesn't extend `String.prototype` +- Expressive API +- Ability to nest styles +- Clean and focused +- Auto-detects color support +- Actively maintained +- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015 + + +## Install + +``` +$ npm install --save chalk +``` + + +## Usage + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +chalk.blue('Hello world!'); + +// combine styled and normal strings +chalk.blue('Hello') + 'World' + chalk.red('!'); + +// compose multiple styles using the chainable API +chalk.blue.bgRed.bold('Hello world!'); + +// pass in multiple arguments +chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'); + +// nest styles +chalk.red('Hello', chalk.underline.bgBlue('world') + '!'); + +// nest styles of the same type even (color, underline, background) +chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +); +``` + +Easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + +Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). + +```js +var name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> Hello Sindre +``` + + +## API + +### chalk.` + + + + + + \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/ease-component/index.js b/src/p29-arduino-server/server/node_modules/ease-component/index.js new file mode 100644 index 0000000..4516199 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ease-component/index.js @@ -0,0 +1,170 @@ + +// easing functions from "Tween.js" + +exports.linear = function(n){ + return n; +}; + +exports.inQuad = function(n){ + return n * n; +}; + +exports.outQuad = function(n){ + return n * (2 - n); +}; + +exports.inOutQuad = function(n){ + n *= 2; + if (n < 1) return 0.5 * n * n; + return - 0.5 * (--n * (n - 2) - 1); +}; + +exports.inCube = function(n){ + return n * n * n; +}; + +exports.outCube = function(n){ + return --n * n * n + 1; +}; + +exports.inOutCube = function(n){ + n *= 2; + if (n < 1) return 0.5 * n * n * n; + return 0.5 * ((n -= 2 ) * n * n + 2); +}; + +exports.inQuart = function(n){ + return n * n * n * n; +}; + +exports.outQuart = function(n){ + return 1 - (--n * n * n * n); +}; + +exports.inOutQuart = function(n){ + n *= 2; + if (n < 1) return 0.5 * n * n * n * n; + return -0.5 * ((n -= 2) * n * n * n - 2); +}; + +exports.inQuint = function(n){ + return n * n * n * n * n; +} + +exports.outQuint = function(n){ + return --n * n * n * n * n + 1; +} + +exports.inOutQuint = function(n){ + n *= 2; + if (n < 1) return 0.5 * n * n * n * n * n; + return 0.5 * ((n -= 2) * n * n * n * n + 2); +}; + +exports.inSine = function(n){ + return 1 - Math.cos(n * Math.PI / 2 ); +}; + +exports.outSine = function(n){ + return Math.sin(n * Math.PI / 2); +}; + +exports.inOutSine = function(n){ + return .5 * (1 - Math.cos(Math.PI * n)); +}; + +exports.inExpo = function(n){ + return 0 == n ? 0 : Math.pow(1024, n - 1); +}; + +exports.outExpo = function(n){ + return 1 == n ? n : 1 - Math.pow(2, -10 * n); +}; + +exports.inOutExpo = function(n){ + if (0 == n) return 0; + if (1 == n) return 1; + if ((n *= 2) < 1) return .5 * Math.pow(1024, n - 1); + return .5 * (-Math.pow(2, -10 * (n - 1)) + 2); +}; + +exports.inCirc = function(n){ + return 1 - Math.sqrt(1 - n * n); +}; + +exports.outCirc = function(n){ + return Math.sqrt(1 - (--n * n)); +}; + +exports.inOutCirc = function(n){ + n *= 2 + if (n < 1) return -0.5 * (Math.sqrt(1 - n * n) - 1); + return 0.5 * (Math.sqrt(1 - (n -= 2) * n) + 1); +}; + +exports.inBack = function(n){ + var s = 1.70158; + return n * n * (( s + 1 ) * n - s); +}; + +exports.outBack = function(n){ + var s = 1.70158; + return --n * n * ((s + 1) * n + s) + 1; +}; + +exports.inOutBack = function(n){ + var s = 1.70158 * 1.525; + if ( ( n *= 2 ) < 1 ) return 0.5 * ( n * n * ( ( s + 1 ) * n - s ) ); + return 0.5 * ( ( n -= 2 ) * n * ( ( s + 1 ) * n + s ) + 2 ); +}; + +exports.inBounce = function(n){ + return 1 - exports.outBounce(1 - n); +}; + +exports.outBounce = function(n){ + if ( n < ( 1 / 2.75 ) ) { + return 7.5625 * n * n; + } else if ( n < ( 2 / 2.75 ) ) { + return 7.5625 * ( n -= ( 1.5 / 2.75 ) ) * n + 0.75; + } else if ( n < ( 2.5 / 2.75 ) ) { + return 7.5625 * ( n -= ( 2.25 / 2.75 ) ) * n + 0.9375; + } else { + return 7.5625 * ( n -= ( 2.625 / 2.75 ) ) * n + 0.984375; + } +}; + +exports.inOutBounce = function(n){ + if (n < .5) return exports.inBounce(n * 2) * .5; + return exports.outBounce(n * 2 - 1) * .5 + .5; +}; + +// aliases + +exports['in-quad'] = exports.inQuad; +exports['out-quad'] = exports.outQuad; +exports['in-out-quad'] = exports.inOutQuad; +exports['in-cube'] = exports.inCube; +exports['out-cube'] = exports.outCube; +exports['in-out-cube'] = exports.inOutCube; +exports['in-quart'] = exports.inQuart; +exports['out-quart'] = exports.outQuart; +exports['in-out-quart'] = exports.inOutQuart; +exports['in-quint'] = exports.inQuint; +exports['out-quint'] = exports.outQuint; +exports['in-out-quint'] = exports.inOutQuint; +exports['in-sine'] = exports.inSine; +exports['out-sine'] = exports.outSine; +exports['in-out-sine'] = exports.inOutSine; +exports['in-expo'] = exports.inExpo; +exports['out-expo'] = exports.outExpo; +exports['in-out-expo'] = exports.inOutExpo; +exports['in-circ'] = exports.inCirc; +exports['out-circ'] = exports.outCirc; +exports['in-out-circ'] = exports.inOutCirc; +exports['in-back'] = exports.inBack; +exports['out-back'] = exports.outBack; +exports['in-out-back'] = exports.inOutBack; +exports['in-bounce'] = exports.inBounce; +exports['out-bounce'] = exports.outBounce; +exports['in-out-bounce'] = exports.inOutBounce; diff --git a/src/p29-arduino-server/server/node_modules/ease-component/package.json b/src/p29-arduino-server/server/node_modules/ease-component/package.json new file mode 100644 index 0000000..af0ae14 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/ease-component/package.json @@ -0,0 +1,73 @@ +{ + "_args": [ + [ + { + "raw": "ease-component@latest", + "scope": null, + "escapedName": "ease-component", + "name": "ease-component", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five" + ] + ], + "_from": "ease-component@latest", + "_id": "ease-component@1.0.0", + "_inCache": true, + "_location": "/ease-component", + "_npmUser": { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + }, + "_npmVersion": "1.2.14", + "_phantomChildren": {}, + "_requested": { + "raw": "ease-component@latest", + "scope": null, + "escapedName": "ease-component", + "name": "ease-component", + "rawSpec": "latest", + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "/johnny-five" + ], + "_resolved": "https://registry.npmjs.org/ease-component/-/ease-component-1.0.0.tgz", + "_shasum": "b375726db0b5b04595b77440396fec7daa5d77c9", + "_shrinkwrap": null, + "_spec": "ease-component@latest", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/johnny-five", + "component": { + "scripts": { + "ease/index.js": "index.js" + } + }, + "dependencies": {}, + "description": "Easing functions (for canvas etc)", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "b375726db0b5b04595b77440396fec7daa5d77c9", + "tarball": "https://registry.npmjs.org/ease-component/-/ease-component-1.0.0.tgz" + }, + "keywords": [ + "ease", + "easing", + "tween" + ], + "license": "MIT", + "maintainers": [ + { + "name": "tjholowaychuk", + "email": "tj@vision-media.ca" + } + ], + "name": "ease-component", + "optionalDependencies": {}, + "readme": "\n# ease\n\n Easing functions (for canvas etc)\n\n - linear\n - inQuad\n - outQuad\n - inOutQuad\n - inCube\n - outCube\n - inOutCube\n - inQuart\n - outQuart\n - inOutQuart\n - inQuint\n - outQuint\n - inOutQuint\n - inSine\n - outSine\n - inOutSine\n - inExpo\n - outExpo\n - inOutExpo\n - inCirc\n - outCirc\n - inOutCirc\n - inBack\n - outBack\n - inOutBack\n - inBounce\n - outBounce\n - inOutBounce\n\n## Aliases\n\n - in-quad\n - out-quad\n - in-out-quad\n - in-cube\n - out-cube\n - in-out-cube\n - in-quart\n - out-quart\n - in-out-quart\n - in-quint\n - out-quint\n - in-out-quint\n - in-sine\n - out-sine\n - in-out-sine\n - in-expo\n - out-expo\n - in-out-expo\n - in-circ\n - out-circ\n - in-out-circ\n - in-back\n - out-back\n - in-out-back\n - in-bounce\n - out-bounce\n - in-out-bounce\n\n## Example\n\n```js\nvar ease = require('ease');\nvar requestAnimationFrame = require('raf');\nvar canvas = document.querySelector('canvas');\nvar ctx = canvas.getContext('2d');\n\nvar stop = false;\nfunction animate() {\n if (stop) return;\n requestAnimationFrame(animate);\n draw();\n}\n\nvar startx = 20;\nvar x = startx;\nvar destx = 300;\nvar y = 400 / 2;\nvar duration = 1000;\nvar start = Date.now();\nvar end = start + duration;\n\nfunction draw() {\n var now = Date.now();\n if (now - start >= duration) stop = true;\n var p = (now - start) / duration;\n val = ease.inOutBounce(p);\n x = startx + (destx - startx) * val;\n canvas.width = canvas.width;\n ctx.fillStyle = 'red';\n ctx.arc(x, y, 10, 0, Math.PI * 2, false);\n ctx.fill();\n}\n\nanimate();\n\n```\n\n# License\n\n MIT\n", + "readmeFilename": "Readme.md", + "version": "1.0.0" +} diff --git a/src/p29-arduino-server/server/node_modules/engine.io-client/History.md b/src/p29-arduino-server/server/node_modules/engine.io-client/History.md new file mode 100644 index 0000000..af9f54c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/engine.io-client/History.md @@ -0,0 +1,622 @@ + +1.8.1 / 2016-11-27 +=================== + + * [fix] Only add defined callbacks to the stack (#447) + +1.8.0 / 2016-11-20 +=================== + + * [fix] Fixed regression creating connection over https from node (#513) + * [fix] Fixed regression creating connection over wss from node (#514) + * [feature] Enable definition of timeouts for xhr-polling (#456) + * [feature] Added flag forceNode to override the normal behavior of prefering Browser based implementations. (#469) + * [feature] add localAddress option (#487) + * [chore] update dependencies (#516) + * [chore] Speed up lint by avoiding '**/*.js' matching pattern (#517) + * [chore] Bump debug to version 2.3.3 (#520) + +1.7.2 / 2016-10-24 +=================== + + * [fix] Set accept header to */* to support react app proxy (#508) + * [fix] remove a workaround for ios (#465) + * [fix] onPacket now emits data on 'closing' state as well (#484) + * [fix] Obfuscate `ActiveXObject` occurrences (#509) + * [docs] Add missing `onlyBinaryUpgrades` option in the docs (#510) + * [chore] Add Github issue and PR templates (#511) + +1.7.1 / 2016-10-20 +=================== + + * [fix] Define "requestsCount" var and "requests" hash unconditionally (#490) + * [perf] Add all properties to the socket in the constructor (#488) + * [chore] Update zuul browser settings (#504) + * [chore] Bump engine.io-parser to 1.3.1 (#505) + * [chore] Use more-specific imports for StealJS compatibility (#467) + +1.7.0 / 2016-10-05 +=================== + + * [fix] Revert "default `rejectUnauthorized` to `true`" (#496) + * [fix] Use xhr.responseText if xhr.response is not provided (#483) + * [fix] Fix issue with errors during WebSocket creation not being caught (#475) + * [style] Add missing semi-colon (#501) + * [chore] Add gulp & babel in the build process (#455) + * [chore] Add eslint (#458) + * [chore] Bump zuul (#464) + * [chore] Remove unused submodule (#466) + * [chore] Bumping ws to 1.1.1 (#478) + * [chore] Update zuul browser settings following EOL notices (#486) + * [chore] Bump engine.io-parser (#492) + * [chore] Make the build status badge point towards master (#497) + * [chore] Bump zuul to 3.11.0 & zuul-ngrok to 4.0.0 (#498) + * [chore] Restrict files included in npm package (#499) + +1.6.11 / 2016-06-23 +=================== + + * bump version + +1.6.10 / 2016-06-23 +=================== + + * bump version + +1.6.9 / 2016-05-02 +================== + + * default `rejectUnauthorized` to `true` + +1.6.8 / 2016-01-25 +================== + + * safely resolve `ws` module + +1.6.7 / 2016-01-10 +================== + + * prevent `ws` from being added to the bundle + * added jsonp fix for when no ` + +``` + +### With browserify + +Engine.IO is a commonjs module, which means you can include it by using +`require` on the browser and package using [browserify](http://browserify.org/): + +1. install the client package + + ```bash + $ npm install engine.io-client + ``` + +1. write your app code + + ```js + var socket = require('engine.io-client')('ws://localhost'); + socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); + }); + ``` + +1. build your app bundle + + ```bash + $ browserify app.js > bundle.js + ``` + +1. include on your page + + ```html + + ``` + +### Sending and receiving binary + +```html + + +``` + +### Node.JS + +Add `engine.io-client` to your `package.json` and then: + +```js +var socket = require('engine.io-client')('ws://localhost'); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +### Node.js with certificates +```js +var opts = { + key: fs.readFileSync('test/fixtures/client.key'), + cert: fs.readFileSync('test/fixtures/client.crt'), + ca: fs.readFileSync('test/fixtures/ca.crt') +}; + +var socket = require('engine.io-client')('ws://localhost', opts); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +### Node.js with extraHeaders +```js +var opts = { + extraHeaders: { + 'X-Custom-Header-For-My-Project': 'my-secret-access-token', + 'Cookie': 'user_session=NI2JlCKF90aE0sJZD9ZzujtdsUqNYSBYxzlTsvdSUe35ZzdtVRGqYFr0kdGxbfc5gUOkR9RGp20GVKza; path=/; expires=Tue, 07-Apr-2015 18:18:08 GMT; secure; HttpOnly' + } +}; + +var socket = require('engine.io-client')('ws://localhost', opts); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +## Features + +- Lightweight +- Runs on browser and node.js seamlessly +- Transports are independent of `Engine` + - Easy to debug + - Easy to unit test +- Runs inside HTML5 WebWorker +- Can send and receive binary data + - Receives as ArrayBuffer or Blob when in browser, and Buffer or ArrayBuffer + in Node + - When XHR2 or WebSockets are used, binary is emitted directly. Otherwise + binary is encoded into base64 strings, and decoded when binary types are + supported. + - With browsers that don't support ArrayBuffer, an object { base64: true, + data: dataAsBase64String } is emitted on the `message` event. + +## API + +### Socket + +The client class. Mixes in [Emitter](http://github.com/component/emitter). +Exposed as `eio` in the browser standalone build. + +#### Properties + +- `protocol` _(Number)_: protocol revision number +- `binaryType` _(String)_ : can be set to 'arraybuffer' or 'blob' in browsers, + and `buffer` or `arraybuffer` in Node. Blob is only used in browser if it's + supported. + +#### Events + +- `open` + - Fired upon successful connection. +- `message` + - Fired when data is received from the server. + - **Arguments** + - `String` | `ArrayBuffer`: utf-8 encoded data or ArrayBuffer containing + binary data +- `close` + - Fired upon disconnection. In compliance with the WebSocket API spec, this event may be + fired even if the `open` event does not occur (i.e. due to connection error or `close()`). +- `error` + - Fired when an error occurs. +- `flush` + - Fired upon completing a buffer flush +- `drain` + - Fired after `drain` event of transport if writeBuffer is empty +- `upgradeError` + - Fired if an error occurs with a transport we're trying to upgrade to. +- `upgrade` + - Fired upon upgrade success, after the new transport is set +- `ping` + - Fired upon _flushing_ a ping packet (ie: actual packet write out) +- `pong` + - Fired upon receiving a pong packet. + +#### Methods + +- **constructor** + - Initializes the client + - **Parameters** + - `String` uri + - `Object`: optional, options object + - **Options** + - `agent` (`http.Agent`): `http.Agent` to use, defaults to `false` (NodeJS only) + - `upgrade` (`Boolean`): defaults to true, whether the client should try + to upgrade the transport from long-polling to something better. + - `forceJSONP` (`Boolean`): forces JSONP for polling transport. + - `jsonp` (`Boolean`): determines whether to use JSONP when + necessary for polling. If disabled (by settings to false) an error will + be emitted (saying "No transports available") if no other transports + are available. If another transport is available for opening a + connection (e.g. WebSocket) that transport + will be used instead. + - `forceBase64` (`Boolean`): forces base 64 encoding for polling transport even when XHR2 responseType is available and WebSocket even if the used standard supports binary. + - `enablesXDR` (`Boolean`): enables XDomainRequest for IE8 to avoid loading bar flashing with click sound. default to `false` because XDomainRequest has a flaw of not sending cookie. + - `timestampRequests` (`Boolean`): whether to add the timestamp with each + transport request. Note: polling requests are always stamped unless this + option is explicitly set to `false` (`false`) + - `timestampParam` (`String`): timestamp parameter (`t`) + - `policyPort` (`Number`): port the policy server listens on (`843`) + - `path` (`String`): path to connect to, default is `/engine.io` + - `transports` (`Array`): a list of transports to try (in order). + Defaults to `['polling', 'websocket']`. `Engine` + always attempts to connect directly with the first one, provided the + feature detection test for it passes. + - `rememberUpgrade` (`Boolean`): defaults to false. + If true and if the previous websocket connection to the server succeeded, + the connection attempt will bypass the normal upgrade process and will initially + try websocket. A connection attempt following a transport error will use the + normal upgrade process. It is recommended you turn this on only when using + SSL/TLS connections, or if you know that your network does not block websockets. + - `pfx` (`String`): Certificate, Private key and CA certificates to use for SSL. Can be used in Node.js client environment to manually specify certificate information. + - `key` (`String`): Private key to use for SSL. Can be used in Node.js client environment to manually specify certificate information. + - `passphrase` (`String`): A string of passphrase for the private key or pfx. Can be used in Node.js client environment to manually specify certificate information. + - `cert` (`String`): Public x509 certificate to use. Can be used in Node.js client environment to manually specify certificate information. + - `ca` (`String`|`Array`): An authority certificate or array of authority certificates to check the remote host against.. Can be used in Node.js client environment to manually specify certificate information. + - `ciphers` (`String`): A string describing the ciphers to use or exclude. Consult the [cipher format list](http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT) for details on the format. Can be used in Node.js client environment to manually specify certificate information. + - `rejectUnauthorized` (`Boolean`): If true, the server certificate is verified against the list of supplied CAs. An 'error' event is emitted if verification fails. Verification happens at the connection level, before the HTTP request is sent. Can be used in Node.js client environment to manually specify certificate information. + - `perMessageDeflate` (`Object|Boolean`): parameters of the WebSocket permessage-deflate extension + (see [ws module](https://github.com/einaros/ws) api docs). Set to `false` to disable. (`true`) + - `threshold` (`Number`): data is compressed only if the byte size is above this value. This option is ignored on the browser. (`1024`) + - `extraHeaders` (`Object`): Headers that will be passed for each request to the server (via xhr-polling and via websockets). These values then can be used during handshake or for special proxies. Can only be used in Node.js client environment. + - `onlyBinaryUpgrades` (`Boolean`): whether transport upgrades should be restricted to transports supporting binary data (`false`) + - `requestTimeout` (`Number`): Timeout for xhr-polling requests in milliseconds (`0`) + - `forceNode` (`Boolean`): Uses NodeJS implementation for websockets - even if there is a native Browser-Websocket available, which is preferred by default over the NodeJS implementation. (This is useful when using hybrid platforms like nw.js or electron) (`false`, NodeJS only) + - `localAddress` (`String`): the local IP address to connect to +- `send` + - Sends a message to the server + - **Parameters** + - `String` | `ArrayBuffer` | `ArrayBufferView` | `Blob`: data to send + - `Object`: optional, options object + - `Function`: optional, callback upon `drain` + - **Options** + - `compress` (`Boolean`): whether to compress sending data. This option is ignored and forced to be `true` on the browser. (`true`) +- `close` + - Disconnects the client. + +### Transport + +The transport class. Private. _Inherits from EventEmitter_. + +#### Events + +- `poll`: emitted by polling transports upon starting a new request +- `pollComplete`: emitted by polling transports upon completing a request +- `drain`: emitted by polling transports upon a buffer drain + +## Tests + +`engine.io-client` is used to test +[engine](http://github.com/socketio/engine.io). Running the `engine.io` +test suite ensures the client works and vice-versa. + +Browser tests are run using [zuul](https://github.com/defunctzombie/zuul). You can +run the tests locally using the following command. + +``` +./node_modules/.bin/zuul --local 8080 -- test/index.js +``` + +Additionally, `engine.io-client` has a standalone test suite you can run +with `make test` which will run node.js and browser tests. You must have zuul setup with +a saucelabs account. + +## Support + +The support channels for `engine.io-client` are the same as `socket.io`: + - irc.freenode.net **#socket.io** + - [Google Groups](http://groups.google.com/group/socket_io) + - [Website](http://socket.io) + +## Development + +To contribute patches, run tests or benchmarks, make sure to clone the +repository: + +```bash +git clone git://github.com/socketio/engine.io-client.git +``` + +Then: + +```bash +cd engine.io-client +npm install +``` + +See the `Tests` section above for how to run tests before submitting any patches. + +## License + +MIT - Copyright (c) 2014 Automattic, Inc. diff --git a/src/p29-arduino-server/server/node_modules/engine.io-client/engine.io.js b/src/p29-arduino-server/server/node_modules/engine.io-client/engine.io.js new file mode 100644 index 0000000..2bab37c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/engine.io-client/engine.io.js @@ -0,0 +1,4670 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["eio"] = factory(); + else + root["eio"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(1); + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(2); + + /** + * Exports parser + * + * @api public + * + */ + module.exports.parser = __webpack_require__(9); + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + /** + * Module dependencies. + */ + + var transports = __webpack_require__(3); + var Emitter = __webpack_require__(19); + var debug = __webpack_require__(23)('engine.io-client:socket'); + var index = __webpack_require__(30); + var parser = __webpack_require__(9); + var parseuri = __webpack_require__(31); + var parsejson = __webpack_require__(32); + var parseqs = __webpack_require__(20); + + /** + * Module exports. + */ + + module.exports = Socket; + + /** + * Socket constructor. + * + * @param {String|Object} uri or options + * @param {Object} options + * @api public + */ + + function Socket(uri, opts) { + if (!(this instanceof Socket)) return new Socket(uri, opts); + + opts = opts || {}; + + if (uri && 'object' === (typeof uri === 'undefined' ? 'undefined' : _typeof(uri))) { + opts = uri; + uri = null; + } + + if (uri) { + uri = parseuri(uri); + opts.hostname = uri.host; + opts.secure = uri.protocol === 'https' || uri.protocol === 'wss'; + opts.port = uri.port; + if (uri.query) opts.query = uri.query; + } else if (opts.host) { + opts.hostname = parseuri(opts.host).host; + } + + this.secure = null != opts.secure ? opts.secure : global.location && 'https:' === location.protocol; + + if (opts.hostname && !opts.port) { + // if no port is specified manually, use the protocol default + opts.port = this.secure ? '443' : '80'; + } + + this.agent = opts.agent || false; + this.hostname = opts.hostname || (global.location ? location.hostname : 'localhost'); + this.port = opts.port || (global.location && location.port ? location.port : this.secure ? 443 : 80); + this.query = opts.query || {}; + if ('string' === typeof this.query) this.query = parseqs.decode(this.query); + this.upgrade = false !== opts.upgrade; + this.path = (opts.path || '/engine.io').replace(/\/$/, '') + '/'; + this.forceJSONP = !!opts.forceJSONP; + this.jsonp = false !== opts.jsonp; + this.forceBase64 = !!opts.forceBase64; + this.enablesXDR = !!opts.enablesXDR; + this.timestampParam = opts.timestampParam || 't'; + this.timestampRequests = opts.timestampRequests; + this.transports = opts.transports || ['polling', 'websocket']; + this.readyState = ''; + this.writeBuffer = []; + this.prevBufferLen = 0; + this.policyPort = opts.policyPort || 843; + this.rememberUpgrade = opts.rememberUpgrade || false; + this.binaryType = null; + this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades; + this.perMessageDeflate = false !== opts.perMessageDeflate ? opts.perMessageDeflate || {} : false; + + if (true === this.perMessageDeflate) this.perMessageDeflate = {}; + if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) { + this.perMessageDeflate.threshold = 1024; + } + + // SSL options for Node.js client + this.pfx = opts.pfx || null; + this.key = opts.key || null; + this.passphrase = opts.passphrase || null; + this.cert = opts.cert || null; + this.ca = opts.ca || null; + this.ciphers = opts.ciphers || null; + this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? null : opts.rejectUnauthorized; + this.forceNode = !!opts.forceNode; + + // other options for Node.js client + var freeGlobal = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global; + if (freeGlobal.global === freeGlobal) { + if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) { + this.extraHeaders = opts.extraHeaders; + } + + if (opts.localAddress) { + this.localAddress = opts.localAddress; + } + } + + // set on handshake + this.id = null; + this.upgrades = null; + this.pingInterval = null; + this.pingTimeout = null; + + // set on heartbeat + this.pingIntervalTimer = null; + this.pingTimeoutTimer = null; + + this.open(); + } + + Socket.priorWebsocketSuccess = false; + + /** + * Mix in `Emitter`. + */ + + Emitter(Socket.prototype); + + /** + * Protocol version. + * + * @api public + */ + + Socket.protocol = parser.protocol; // this is an int + + /** + * Expose deps for legacy compatibility + * and standalone browser access. + */ + + Socket.Socket = Socket; + Socket.Transport = __webpack_require__(8); + Socket.transports = __webpack_require__(3); + Socket.parser = __webpack_require__(9); + + /** + * Creates transport of the given type. + * + * @param {String} transport name + * @return {Transport} + * @api private + */ + + Socket.prototype.createTransport = function (name) { + debug('creating transport "%s"', name); + var query = clone(this.query); + + // append engine.io protocol identifier + query.EIO = parser.protocol; + + // transport name + query.transport = name; + + // session id if we already have one + if (this.id) query.sid = this.id; + + var transport = new transports[name]({ + agent: this.agent, + hostname: this.hostname, + port: this.port, + secure: this.secure, + path: this.path, + query: query, + forceJSONP: this.forceJSONP, + jsonp: this.jsonp, + forceBase64: this.forceBase64, + enablesXDR: this.enablesXDR, + timestampRequests: this.timestampRequests, + timestampParam: this.timestampParam, + policyPort: this.policyPort, + socket: this, + pfx: this.pfx, + key: this.key, + passphrase: this.passphrase, + cert: this.cert, + ca: this.ca, + ciphers: this.ciphers, + rejectUnauthorized: this.rejectUnauthorized, + perMessageDeflate: this.perMessageDeflate, + extraHeaders: this.extraHeaders, + forceNode: this.forceNode, + localAddress: this.localAddress + }); + + return transport; + }; + + function clone(obj) { + var o = {}; + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = obj[i]; + } + } + return o; + } + + /** + * Initializes transport to use and starts probe. + * + * @api private + */ + Socket.prototype.open = function () { + var transport; + if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) { + transport = 'websocket'; + } else if (0 === this.transports.length) { + // Emit error on next tick so it can be listened to + var self = this; + setTimeout(function () { + self.emit('error', 'No transports available'); + }, 0); + return; + } else { + transport = this.transports[0]; + } + this.readyState = 'opening'; + + // Retry with the next transport if the transport is disabled (jsonp: false) + try { + transport = this.createTransport(transport); + } catch (e) { + this.transports.shift(); + this.open(); + return; + } + + transport.open(); + this.setTransport(transport); + }; + + /** + * Sets the current transport. Disables the existing one (if any). + * + * @api private + */ + + Socket.prototype.setTransport = function (transport) { + debug('setting transport %s', transport.name); + var self = this; + + if (this.transport) { + debug('clearing existing transport %s', this.transport.name); + this.transport.removeAllListeners(); + } + + // set up transport + this.transport = transport; + + // set up transport listeners + transport.on('drain', function () { + self.onDrain(); + }).on('packet', function (packet) { + self.onPacket(packet); + }).on('error', function (e) { + self.onError(e); + }).on('close', function () { + self.onClose('transport close'); + }); + }; + + /** + * Probes a transport. + * + * @param {String} transport name + * @api private + */ + + Socket.prototype.probe = function (name) { + debug('probing transport "%s"', name); + var transport = this.createTransport(name, { probe: 1 }); + var failed = false; + var self = this; + + Socket.priorWebsocketSuccess = false; + + function onTransportOpen() { + if (self.onlyBinaryUpgrades) { + var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary; + failed = failed || upgradeLosesBinary; + } + if (failed) return; + + debug('probe transport "%s" opened', name); + transport.send([{ type: 'ping', data: 'probe' }]); + transport.once('packet', function (msg) { + if (failed) return; + if ('pong' === msg.type && 'probe' === msg.data) { + debug('probe transport "%s" pong', name); + self.upgrading = true; + self.emit('upgrading', transport); + if (!transport) return; + Socket.priorWebsocketSuccess = 'websocket' === transport.name; + + debug('pausing current transport "%s"', self.transport.name); + self.transport.pause(function () { + if (failed) return; + if ('closed' === self.readyState) return; + debug('changing transport and sending upgrade packet'); + + cleanup(); + + self.setTransport(transport); + transport.send([{ type: 'upgrade' }]); + self.emit('upgrade', transport); + transport = null; + self.upgrading = false; + self.flush(); + }); + } else { + debug('probe transport "%s" failed', name); + var err = new Error('probe error'); + err.transport = transport.name; + self.emit('upgradeError', err); + } + }); + } + + function freezeTransport() { + if (failed) return; + + // Any callback called by transport should be ignored since now + failed = true; + + cleanup(); + + transport.close(); + transport = null; + } + + // Handle any error that happens while probing + function onerror(err) { + var error = new Error('probe error: ' + err); + error.transport = transport.name; + + freezeTransport(); + + debug('probe transport "%s" failed because of error: %s', name, err); + + self.emit('upgradeError', error); + } + + function onTransportClose() { + onerror('transport closed'); + } + + // When the socket is closed while we're probing + function onclose() { + onerror('socket closed'); + } + + // When the socket is upgraded while we're probing + function onupgrade(to) { + if (transport && to.name !== transport.name) { + debug('"%s" works - aborting "%s"', to.name, transport.name); + freezeTransport(); + } + } + + // Remove all listeners on the transport and on self + function cleanup() { + transport.removeListener('open', onTransportOpen); + transport.removeListener('error', onerror); + transport.removeListener('close', onTransportClose); + self.removeListener('close', onclose); + self.removeListener('upgrading', onupgrade); + } + + transport.once('open', onTransportOpen); + transport.once('error', onerror); + transport.once('close', onTransportClose); + + this.once('close', onclose); + this.once('upgrading', onupgrade); + + transport.open(); + }; + + /** + * Called when connection is deemed open. + * + * @api public + */ + + Socket.prototype.onOpen = function () { + debug('socket open'); + this.readyState = 'open'; + Socket.priorWebsocketSuccess = 'websocket' === this.transport.name; + this.emit('open'); + this.flush(); + + // we check for `readyState` in case an `open` + // listener already closed the socket + if ('open' === this.readyState && this.upgrade && this.transport.pause) { + debug('starting upgrade probes'); + for (var i = 0, l = this.upgrades.length; i < l; i++) { + this.probe(this.upgrades[i]); + } + } + }; + + /** + * Handles a packet. + * + * @api private + */ + + Socket.prototype.onPacket = function (packet) { + if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) { + debug('socket receive: type "%s", data "%s"', packet.type, packet.data); + + this.emit('packet', packet); + + // Socket is live - any packet counts + this.emit('heartbeat'); + + switch (packet.type) { + case 'open': + this.onHandshake(parsejson(packet.data)); + break; + + case 'pong': + this.setPing(); + this.emit('pong'); + break; + + case 'error': + var err = new Error('server error'); + err.code = packet.data; + this.onError(err); + break; + + case 'message': + this.emit('data', packet.data); + this.emit('message', packet.data); + break; + } + } else { + debug('packet received with socket readyState "%s"', this.readyState); + } + }; + + /** + * Called upon handshake completion. + * + * @param {Object} handshake obj + * @api private + */ + + Socket.prototype.onHandshake = function (data) { + this.emit('handshake', data); + this.id = data.sid; + this.transport.query.sid = data.sid; + this.upgrades = this.filterUpgrades(data.upgrades); + this.pingInterval = data.pingInterval; + this.pingTimeout = data.pingTimeout; + this.onOpen(); + // In case open handler closes socket + if ('closed' === this.readyState) return; + this.setPing(); + + // Prolong liveness of socket on heartbeat + this.removeListener('heartbeat', this.onHeartbeat); + this.on('heartbeat', this.onHeartbeat); + }; + + /** + * Resets ping timeout. + * + * @api private + */ + + Socket.prototype.onHeartbeat = function (timeout) { + clearTimeout(this.pingTimeoutTimer); + var self = this; + self.pingTimeoutTimer = setTimeout(function () { + if ('closed' === self.readyState) return; + self.onClose('ping timeout'); + }, timeout || self.pingInterval + self.pingTimeout); + }; + + /** + * Pings server every `this.pingInterval` and expects response + * within `this.pingTimeout` or closes connection. + * + * @api private + */ + + Socket.prototype.setPing = function () { + var self = this; + clearTimeout(self.pingIntervalTimer); + self.pingIntervalTimer = setTimeout(function () { + debug('writing ping packet - expecting pong within %sms', self.pingTimeout); + self.ping(); + self.onHeartbeat(self.pingTimeout); + }, self.pingInterval); + }; + + /** + * Sends a ping packet. + * + * @api private + */ + + Socket.prototype.ping = function () { + var self = this; + this.sendPacket('ping', function () { + self.emit('ping'); + }); + }; + + /** + * Called on `drain` event + * + * @api private + */ + + Socket.prototype.onDrain = function () { + this.writeBuffer.splice(0, this.prevBufferLen); + + // setting prevBufferLen = 0 is very important + // for example, when upgrading, upgrade packet is sent over, + // and a nonzero prevBufferLen could cause problems on `drain` + this.prevBufferLen = 0; + + if (0 === this.writeBuffer.length) { + this.emit('drain'); + } else { + this.flush(); + } + }; + + /** + * Flush write buffers. + * + * @api private + */ + + Socket.prototype.flush = function () { + if ('closed' !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { + debug('flushing %d packets in socket', this.writeBuffer.length); + this.transport.send(this.writeBuffer); + // keep track of current length of writeBuffer + // splice writeBuffer and callbackBuffer on `drain` + this.prevBufferLen = this.writeBuffer.length; + this.emit('flush'); + } + }; + + /** + * Sends a message. + * + * @param {String} message. + * @param {Function} callback function. + * @param {Object} options. + * @return {Socket} for chaining. + * @api public + */ + + Socket.prototype.write = Socket.prototype.send = function (msg, options, fn) { + this.sendPacket('message', msg, options, fn); + return this; + }; + + /** + * Sends a packet. + * + * @param {String} packet type. + * @param {String} data. + * @param {Object} options. + * @param {Function} callback function. + * @api private + */ + + Socket.prototype.sendPacket = function (type, data, options, fn) { + if ('function' === typeof data) { + fn = data; + data = undefined; + } + + if ('function' === typeof options) { + fn = options; + options = null; + } + + if ('closing' === this.readyState || 'closed' === this.readyState) { + return; + } + + options = options || {}; + options.compress = false !== options.compress; + + var packet = { + type: type, + data: data, + options: options + }; + this.emit('packetCreate', packet); + this.writeBuffer.push(packet); + if (fn) this.once('flush', fn); + this.flush(); + }; + + /** + * Closes the connection. + * + * @api private + */ + + Socket.prototype.close = function () { + if ('opening' === this.readyState || 'open' === this.readyState) { + this.readyState = 'closing'; + + var self = this; + + if (this.writeBuffer.length) { + this.once('drain', function () { + if (this.upgrading) { + waitForUpgrade(); + } else { + close(); + } + }); + } else if (this.upgrading) { + waitForUpgrade(); + } else { + close(); + } + } + + function close() { + self.onClose('forced close'); + debug('socket closing - telling transport to close'); + self.transport.close(); + } + + function cleanupAndClose() { + self.removeListener('upgrade', cleanupAndClose); + self.removeListener('upgradeError', cleanupAndClose); + close(); + } + + function waitForUpgrade() { + // wait for upgrade to finish since we can't send packets while pausing a transport + self.once('upgrade', cleanupAndClose); + self.once('upgradeError', cleanupAndClose); + } + + return this; + }; + + /** + * Called upon transport error + * + * @api private + */ + + Socket.prototype.onError = function (err) { + debug('socket error %j', err); + Socket.priorWebsocketSuccess = false; + this.emit('error', err); + this.onClose('transport error', err); + }; + + /** + * Called upon transport close. + * + * @api private + */ + + Socket.prototype.onClose = function (reason, desc) { + if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) { + debug('socket close with reason: "%s"', reason); + var self = this; + + // clear timers + clearTimeout(this.pingIntervalTimer); + clearTimeout(this.pingTimeoutTimer); + + // stop event from firing again for transport + this.transport.removeAllListeners('close'); + + // ensure transport won't stay open + this.transport.close(); + + // ignore further transport communication + this.transport.removeAllListeners(); + + // set ready state + this.readyState = 'closed'; + + // clear session id + this.id = null; + + // emit close event + this.emit('close', reason, desc); + + // clean buffers after, so users can still + // grab the buffers on `close` event + self.writeBuffer = []; + self.prevBufferLen = 0; + } + }; + + /** + * Filters upgrades, returning only those matching client transports. + * + * @param {Array} server upgrades + * @api private + * + */ + + Socket.prototype.filterUpgrades = function (upgrades) { + var filteredUpgrades = []; + for (var i = 0, j = upgrades.length; i < j; i++) { + if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]); + } + return filteredUpgrades; + }; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module dependencies + */ + + var XMLHttpRequest = __webpack_require__(4); + var XHR = __webpack_require__(6); + var JSONP = __webpack_require__(27); + var websocket = __webpack_require__(28); + + /** + * Export transports. + */ + + exports.polling = polling; + exports.websocket = websocket; + + /** + * Polling transport polymorphic constructor. + * Decides on xhr vs jsonp based on feature detection. + * + * @api private + */ + + function polling(opts) { + var xhr; + var xd = false; + var xs = false; + var jsonp = false !== opts.jsonp; + + if (global.location) { + var isSSL = 'https:' === location.protocol; + var port = location.port; + + // some user agents have empty `location.port` + if (!port) { + port = isSSL ? 443 : 80; + } + + xd = opts.hostname !== location.hostname || port !== opts.port; + xs = opts.secure !== isSSL; + } + + opts.xdomain = xd; + opts.xscheme = xs; + xhr = new XMLHttpRequest(opts); + + if ('open' in xhr && !opts.forceJSONP) { + return new XHR(opts); + } else { + if (!jsonp) throw new Error('JSONP disabled'); + return new JSONP(opts); + } + } + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + // browser shim for xmlhttprequest module + + var hasCORS = __webpack_require__(5); + + module.exports = function (opts) { + var xdomain = opts.xdomain; + + // scheme must be same when usign XDomainRequest + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + var xscheme = opts.xscheme; + + // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default. + // https://github.com/Automattic/engine.io-client/pull/217 + var enablesXDR = opts.enablesXDR; + + // XMLHttpRequest can be disabled on IE + try { + if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { + return new XMLHttpRequest(); + } + } catch (e) {} + + // Use XDomainRequest for IE8 if enablesXDR is true + // because loading bar keeps flashing when using jsonp-polling + // https://github.com/yujiosaka/socke.io-ie8-loading-example + try { + if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) { + return new XDomainRequest(); + } + } catch (e) {} + + if (!xdomain) { + try { + return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP'); + } catch (e) {} + } + }; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 5 */ +/***/ function(module, exports) { + + + /** + * Module exports. + * + * Logic borrowed from Modernizr: + * + * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js + */ + + try { + module.exports = typeof XMLHttpRequest !== 'undefined' && + 'withCredentials' in new XMLHttpRequest(); + } catch (err) { + // if XMLHttp support is disabled in IE then it will throw + // when trying to create + module.exports = false; + } + + +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module requirements. + */ + + var XMLHttpRequest = __webpack_require__(4); + var Polling = __webpack_require__(7); + var Emitter = __webpack_require__(19); + var inherit = __webpack_require__(21); + var debug = __webpack_require__(23)('engine.io-client:polling-xhr'); + + /** + * Module exports. + */ + + module.exports = XHR; + module.exports.Request = Request; + + /** + * Empty function + */ + + function empty() {} + + /** + * XHR Polling constructor. + * + * @param {Object} opts + * @api public + */ + + function XHR(opts) { + Polling.call(this, opts); + this.requestTimeout = opts.requestTimeout; + + if (global.location) { + var isSSL = 'https:' === location.protocol; + var port = location.port; + + // some user agents have empty `location.port` + if (!port) { + port = isSSL ? 443 : 80; + } + + this.xd = opts.hostname !== global.location.hostname || port !== opts.port; + this.xs = opts.secure !== isSSL; + } else { + this.extraHeaders = opts.extraHeaders; + } + } + + /** + * Inherits from Polling. + */ + + inherit(XHR, Polling); + + /** + * XHR supports binary + */ + + XHR.prototype.supportsBinary = true; + + /** + * Creates a request. + * + * @param {String} method + * @api private + */ + + XHR.prototype.request = function (opts) { + opts = opts || {}; + opts.uri = this.uri(); + opts.xd = this.xd; + opts.xs = this.xs; + opts.agent = this.agent || false; + opts.supportsBinary = this.supportsBinary; + opts.enablesXDR = this.enablesXDR; + + // SSL options for Node.js client + opts.pfx = this.pfx; + opts.key = this.key; + opts.passphrase = this.passphrase; + opts.cert = this.cert; + opts.ca = this.ca; + opts.ciphers = this.ciphers; + opts.rejectUnauthorized = this.rejectUnauthorized; + opts.requestTimeout = this.requestTimeout; + + // other options for Node.js client + opts.extraHeaders = this.extraHeaders; + + return new Request(opts); + }; + + /** + * Sends data. + * + * @param {String} data to send. + * @param {Function} called upon flush. + * @api private + */ + + XHR.prototype.doWrite = function (data, fn) { + var isBinary = typeof data !== 'string' && data !== undefined; + var req = this.request({ method: 'POST', data: data, isBinary: isBinary }); + var self = this; + req.on('success', fn); + req.on('error', function (err) { + self.onError('xhr post error', err); + }); + this.sendXhr = req; + }; + + /** + * Starts a poll cycle. + * + * @api private + */ + + XHR.prototype.doPoll = function () { + debug('xhr poll'); + var req = this.request(); + var self = this; + req.on('data', function (data) { + self.onData(data); + }); + req.on('error', function (err) { + self.onError('xhr poll error', err); + }); + this.pollXhr = req; + }; + + /** + * Request constructor + * + * @param {Object} options + * @api public + */ + + function Request(opts) { + this.method = opts.method || 'GET'; + this.uri = opts.uri; + this.xd = !!opts.xd; + this.xs = !!opts.xs; + this.async = false !== opts.async; + this.data = undefined !== opts.data ? opts.data : null; + this.agent = opts.agent; + this.isBinary = opts.isBinary; + this.supportsBinary = opts.supportsBinary; + this.enablesXDR = opts.enablesXDR; + this.requestTimeout = opts.requestTimeout; + + // SSL options for Node.js client + this.pfx = opts.pfx; + this.key = opts.key; + this.passphrase = opts.passphrase; + this.cert = opts.cert; + this.ca = opts.ca; + this.ciphers = opts.ciphers; + this.rejectUnauthorized = opts.rejectUnauthorized; + + // other options for Node.js client + this.extraHeaders = opts.extraHeaders; + + this.create(); + } + + /** + * Mix in `Emitter`. + */ + + Emitter(Request.prototype); + + /** + * Creates the XHR object and sends the request. + * + * @api private + */ + + Request.prototype.create = function () { + var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR }; + + // SSL options for Node.js client + opts.pfx = this.pfx; + opts.key = this.key; + opts.passphrase = this.passphrase; + opts.cert = this.cert; + opts.ca = this.ca; + opts.ciphers = this.ciphers; + opts.rejectUnauthorized = this.rejectUnauthorized; + + var xhr = this.xhr = new XMLHttpRequest(opts); + var self = this; + + try { + debug('xhr open %s: %s', this.method, this.uri); + xhr.open(this.method, this.uri, this.async); + try { + if (this.extraHeaders) { + xhr.setDisableHeaderCheck(true); + for (var i in this.extraHeaders) { + if (this.extraHeaders.hasOwnProperty(i)) { + xhr.setRequestHeader(i, this.extraHeaders[i]); + } + } + } + } catch (e) {} + if (this.supportsBinary) { + // This has to be done after open because Firefox is stupid + // http://stackoverflow.com/questions/13216903/get-binary-data-with-xmlhttprequest-in-a-firefox-extension + xhr.responseType = 'arraybuffer'; + } + + if ('POST' === this.method) { + try { + if (this.isBinary) { + xhr.setRequestHeader('Content-type', 'application/octet-stream'); + } else { + xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8'); + } + } catch (e) {} + } + + try { + xhr.setRequestHeader('Accept', '*/*'); + } catch (e) {} + + // ie6 check + if ('withCredentials' in xhr) { + xhr.withCredentials = true; + } + + if (this.requestTimeout) { + xhr.timeout = this.requestTimeout; + } + + if (this.hasXDR()) { + xhr.onload = function () { + self.onLoad(); + }; + xhr.onerror = function () { + self.onError(xhr.responseText); + }; + } else { + xhr.onreadystatechange = function () { + if (4 !== xhr.readyState) return; + if (200 === xhr.status || 1223 === xhr.status) { + self.onLoad(); + } else { + // make sure the `error` event handler that's user-set + // does not throw in the same tick and gets caught here + setTimeout(function () { + self.onError(xhr.status); + }, 0); + } + }; + } + + debug('xhr data %s', this.data); + xhr.send(this.data); + } catch (e) { + // Need to defer since .create() is called directly fhrom the constructor + // and thus the 'error' event can only be only bound *after* this exception + // occurs. Therefore, also, we cannot throw here at all. + setTimeout(function () { + self.onError(e); + }, 0); + return; + } + + if (global.document) { + this.index = Request.requestsCount++; + Request.requests[this.index] = this; + } + }; + + /** + * Called upon successful response. + * + * @api private + */ + + Request.prototype.onSuccess = function () { + this.emit('success'); + this.cleanup(); + }; + + /** + * Called if we have data. + * + * @api private + */ + + Request.prototype.onData = function (data) { + this.emit('data', data); + this.onSuccess(); + }; + + /** + * Called upon error. + * + * @api private + */ + + Request.prototype.onError = function (err) { + this.emit('error', err); + this.cleanup(true); + }; + + /** + * Cleans up house. + * + * @api private + */ + + Request.prototype.cleanup = function (fromError) { + if ('undefined' === typeof this.xhr || null === this.xhr) { + return; + } + // xmlhttprequest + if (this.hasXDR()) { + this.xhr.onload = this.xhr.onerror = empty; + } else { + this.xhr.onreadystatechange = empty; + } + + if (fromError) { + try { + this.xhr.abort(); + } catch (e) {} + } + + if (global.document) { + delete Request.requests[this.index]; + } + + this.xhr = null; + }; + + /** + * Called upon load. + * + * @api private + */ + + Request.prototype.onLoad = function () { + var data; + try { + var contentType; + try { + contentType = this.xhr.getResponseHeader('Content-Type').split(';')[0]; + } catch (e) {} + if (contentType === 'application/octet-stream') { + data = this.xhr.response || this.xhr.responseText; + } else { + if (!this.supportsBinary) { + data = this.xhr.responseText; + } else { + try { + data = String.fromCharCode.apply(null, new Uint8Array(this.xhr.response)); + } catch (e) { + var ui8Arr = new Uint8Array(this.xhr.response); + var dataArray = []; + for (var idx = 0, length = ui8Arr.length; idx < length; idx++) { + dataArray.push(ui8Arr[idx]); + } + + data = String.fromCharCode.apply(null, dataArray); + } + } + } + } catch (e) { + this.onError(e); + } + if (null != data) { + this.onData(data); + } + }; + + /** + * Check if it has XDomainRequest. + * + * @api private + */ + + Request.prototype.hasXDR = function () { + return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR; + }; + + /** + * Aborts the request. + * + * @api public + */ + + Request.prototype.abort = function () { + this.cleanup(); + }; + + /** + * Aborts pending requests when unloading the window. This is needed to prevent + * memory leaks (e.g. when using IE) and to ensure that no spurious error is + * emitted. + */ + + Request.requestsCount = 0; + Request.requests = {}; + + if (global.document) { + if (global.attachEvent) { + global.attachEvent('onunload', unloadHandler); + } else if (global.addEventListener) { + global.addEventListener('beforeunload', unloadHandler, false); + } + } + + function unloadHandler() { + for (var i in Request.requests) { + if (Request.requests.hasOwnProperty(i)) { + Request.requests[i].abort(); + } + } + } + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Module dependencies. + */ + + var Transport = __webpack_require__(8); + var parseqs = __webpack_require__(20); + var parser = __webpack_require__(9); + var inherit = __webpack_require__(21); + var yeast = __webpack_require__(22); + var debug = __webpack_require__(23)('engine.io-client:polling'); + + /** + * Module exports. + */ + + module.exports = Polling; + + /** + * Is XHR2 supported? + */ + + var hasXHR2 = function () { + var XMLHttpRequest = __webpack_require__(4); + var xhr = new XMLHttpRequest({ xdomain: false }); + return null != xhr.responseType; + }(); + + /** + * Polling interface. + * + * @param {Object} opts + * @api private + */ + + function Polling(opts) { + var forceBase64 = opts && opts.forceBase64; + if (!hasXHR2 || forceBase64) { + this.supportsBinary = false; + } + Transport.call(this, opts); + } + + /** + * Inherits from Transport. + */ + + inherit(Polling, Transport); + + /** + * Transport name. + */ + + Polling.prototype.name = 'polling'; + + /** + * Opens the socket (triggers polling). We write a PING message to determine + * when the transport is open. + * + * @api private + */ + + Polling.prototype.doOpen = function () { + this.poll(); + }; + + /** + * Pauses polling. + * + * @param {Function} callback upon buffers are flushed and transport is paused + * @api private + */ + + Polling.prototype.pause = function (onPause) { + var self = this; + + this.readyState = 'pausing'; + + function pause() { + debug('paused'); + self.readyState = 'paused'; + onPause(); + } + + if (this.polling || !this.writable) { + var total = 0; + + if (this.polling) { + debug('we are currently polling - waiting to pause'); + total++; + this.once('pollComplete', function () { + debug('pre-pause polling complete'); + --total || pause(); + }); + } + + if (!this.writable) { + debug('we are currently writing - waiting to pause'); + total++; + this.once('drain', function () { + debug('pre-pause writing complete'); + --total || pause(); + }); + } + } else { + pause(); + } + }; + + /** + * Starts polling cycle. + * + * @api public + */ + + Polling.prototype.poll = function () { + debug('polling'); + this.polling = true; + this.doPoll(); + this.emit('poll'); + }; + + /** + * Overloads onData to detect payloads. + * + * @api private + */ + + Polling.prototype.onData = function (data) { + var self = this; + debug('polling got data %s', data); + var callback = function callback(packet, index, total) { + // if its the first message we consider the transport open + if ('opening' === self.readyState) { + self.onOpen(); + } + + // if its a close packet, we close the ongoing requests + if ('close' === packet.type) { + self.onClose(); + return false; + } + + // otherwise bypass onData and handle the message + self.onPacket(packet); + }; + + // decode payload + parser.decodePayload(data, this.socket.binaryType, callback); + + // if an event did not trigger closing + if ('closed' !== this.readyState) { + // if we got data we're not polling + this.polling = false; + this.emit('pollComplete'); + + if ('open' === this.readyState) { + this.poll(); + } else { + debug('ignoring poll - transport state "%s"', this.readyState); + } + } + }; + + /** + * For polling, send a close packet. + * + * @api private + */ + + Polling.prototype.doClose = function () { + var self = this; + + function close() { + debug('writing close packet'); + self.write([{ type: 'close' }]); + } + + if ('open' === this.readyState) { + debug('transport open - closing'); + close(); + } else { + // in case we're trying to close while + // handshaking is in progress (GH-164) + debug('transport not open - deferring close'); + this.once('open', close); + } + }; + + /** + * Writes a packets payload. + * + * @param {Array} data packets + * @param {Function} drain callback + * @api private + */ + + Polling.prototype.write = function (packets) { + var self = this; + this.writable = false; + var callbackfn = function callbackfn() { + self.writable = true; + self.emit('drain'); + }; + + parser.encodePayload(packets, this.supportsBinary, function (data) { + self.doWrite(data, callbackfn); + }); + }; + + /** + * Generates uri for connection. + * + * @api private + */ + + Polling.prototype.uri = function () { + var query = this.query || {}; + var schema = this.secure ? 'https' : 'http'; + var port = ''; + + // cache busting is forced + if (false !== this.timestampRequests) { + query[this.timestampParam] = yeast(); + } + + if (!this.supportsBinary && !query.sid) { + query.b64 = 1; + } + + query = parseqs.encode(query); + + // avoid port if default for schema + if (this.port && ('https' === schema && Number(this.port) !== 443 || 'http' === schema && Number(this.port) !== 80)) { + port = ':' + this.port; + } + + // prepend ? to query + if (query.length) { + query = '?' + query; + } + + var ipv6 = this.hostname.indexOf(':') !== -1; + return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query; + }; + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Module dependencies. + */ + + var parser = __webpack_require__(9); + var Emitter = __webpack_require__(19); + + /** + * Module exports. + */ + + module.exports = Transport; + + /** + * Transport abstract constructor. + * + * @param {Object} options. + * @api private + */ + + function Transport(opts) { + this.path = opts.path; + this.hostname = opts.hostname; + this.port = opts.port; + this.secure = opts.secure; + this.query = opts.query; + this.timestampParam = opts.timestampParam; + this.timestampRequests = opts.timestampRequests; + this.readyState = ''; + this.agent = opts.agent || false; + this.socket = opts.socket; + this.enablesXDR = opts.enablesXDR; + + // SSL options for Node.js client + this.pfx = opts.pfx; + this.key = opts.key; + this.passphrase = opts.passphrase; + this.cert = opts.cert; + this.ca = opts.ca; + this.ciphers = opts.ciphers; + this.rejectUnauthorized = opts.rejectUnauthorized; + this.forceNode = opts.forceNode; + + // other options for Node.js client + this.extraHeaders = opts.extraHeaders; + this.localAddress = opts.localAddress; + } + + /** + * Mix in `Emitter`. + */ + + Emitter(Transport.prototype); + + /** + * Emits an error. + * + * @param {String} str + * @return {Transport} for chaining + * @api public + */ + + Transport.prototype.onError = function (msg, desc) { + var err = new Error(msg); + err.type = 'TransportError'; + err.description = desc; + this.emit('error', err); + return this; + }; + + /** + * Opens the transport. + * + * @api public + */ + + Transport.prototype.open = function () { + if ('closed' === this.readyState || '' === this.readyState) { + this.readyState = 'opening'; + this.doOpen(); + } + + return this; + }; + + /** + * Closes the transport. + * + * @api private + */ + + Transport.prototype.close = function () { + if ('opening' === this.readyState || 'open' === this.readyState) { + this.doClose(); + this.onClose(); + } + + return this; + }; + + /** + * Sends multiple packets. + * + * @param {Array} packets + * @api private + */ + + Transport.prototype.send = function (packets) { + if ('open' === this.readyState) { + this.write(packets); + } else { + throw new Error('Transport not open'); + } + }; + + /** + * Called upon open + * + * @api private + */ + + Transport.prototype.onOpen = function () { + this.readyState = 'open'; + this.writable = true; + this.emit('open'); + }; + + /** + * Called with data. + * + * @param {String} data + * @api private + */ + + Transport.prototype.onData = function (data) { + var packet = parser.decodePacket(data, this.socket.binaryType); + this.onPacket(packet); + }; + + /** + * Called with a decoded packet. + */ + + Transport.prototype.onPacket = function (packet) { + this.emit('packet', packet); + }; + + /** + * Called upon close. + * + * @api private + */ + + Transport.prototype.onClose = function () { + this.readyState = 'closed'; + this.emit('close'); + }; + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {/** + * Module dependencies. + */ + + var keys = __webpack_require__(10); + var hasBinary = __webpack_require__(11); + var sliceBuffer = __webpack_require__(13); + var after = __webpack_require__(14); + var utf8 = __webpack_require__(15); + + var base64encoder; + if (global && global.ArrayBuffer) { + base64encoder = __webpack_require__(17); + } + + /** + * Check if we are running an android browser. That requires us to use + * ArrayBuffer with polling transports... + * + * http://ghinda.net/jpeg-blob-ajax-android/ + */ + + var isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent); + + /** + * Check if we are running in PhantomJS. + * Uploading a Blob with PhantomJS does not work correctly, as reported here: + * https://github.com/ariya/phantomjs/issues/11395 + * @type boolean + */ + var isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent); + + /** + * When true, avoids using Blobs to encode payloads. + * @type boolean + */ + var dontSendBlobs = isAndroid || isPhantomJS; + + /** + * Current protocol version. + */ + + exports.protocol = 3; + + /** + * Packet types. + */ + + var packets = exports.packets = { + open: 0 // non-ws + , close: 1 // non-ws + , ping: 2 + , pong: 3 + , message: 4 + , upgrade: 5 + , noop: 6 + }; + + var packetslist = keys(packets); + + /** + * Premade error packet. + */ + + var err = { type: 'error', data: 'parser error' }; + + /** + * Create a blob api even for blob builder when vendor prefixes exist + */ + + var Blob = __webpack_require__(18); + + /** + * Encodes a packet. + * + * [ ] + * + * Example: + * + * 5hello world + * 3 + * 4 + * + * Binary is encoded in an identical principle + * + * @api private + */ + + exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) { + if ('function' == typeof supportsBinary) { + callback = supportsBinary; + supportsBinary = false; + } + + if ('function' == typeof utf8encode) { + callback = utf8encode; + utf8encode = null; + } + + var data = (packet.data === undefined) + ? undefined + : packet.data.buffer || packet.data; + + if (global.ArrayBuffer && data instanceof ArrayBuffer) { + return encodeArrayBuffer(packet, supportsBinary, callback); + } else if (Blob && data instanceof global.Blob) { + return encodeBlob(packet, supportsBinary, callback); + } + + // might be an object with { base64: true, data: dataAsBase64String } + if (data && data.base64) { + return encodeBase64Object(packet, callback); + } + + // Sending data as a utf-8 string + var encoded = packets[packet.type]; + + // data fragment is optional + if (undefined !== packet.data) { + encoded += utf8encode ? utf8.encode(String(packet.data)) : String(packet.data); + } + + return callback('' + encoded); + + }; + + function encodeBase64Object(packet, callback) { + // packet data is an object { base64: true, data: dataAsBase64String } + var message = 'b' + exports.packets[packet.type] + packet.data.data; + return callback(message); + } + + /** + * Encode packet helpers for binary types + */ + + function encodeArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var data = packet.data; + var contentArray = new Uint8Array(data); + var resultBuffer = new Uint8Array(1 + data.byteLength); + + resultBuffer[0] = packets[packet.type]; + for (var i = 0; i < contentArray.length; i++) { + resultBuffer[i+1] = contentArray[i]; + } + + return callback(resultBuffer.buffer); + } + + function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var fr = new FileReader(); + fr.onload = function() { + packet.data = fr.result; + exports.encodePacket(packet, supportsBinary, true, callback); + }; + return fr.readAsArrayBuffer(packet.data); + } + + function encodeBlob(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + if (dontSendBlobs) { + return encodeBlobAsArrayBuffer(packet, supportsBinary, callback); + } + + var length = new Uint8Array(1); + length[0] = packets[packet.type]; + var blob = new Blob([length.buffer, packet.data]); + + return callback(blob); + } + + /** + * Encodes a packet with binary data in a base64 string + * + * @param {Object} packet, has `type` and `data` + * @return {String} base64 encoded message + */ + + exports.encodeBase64Packet = function(packet, callback) { + var message = 'b' + exports.packets[packet.type]; + if (Blob && packet.data instanceof global.Blob) { + var fr = new FileReader(); + fr.onload = function() { + var b64 = fr.result.split(',')[1]; + callback(message + b64); + }; + return fr.readAsDataURL(packet.data); + } + + var b64data; + try { + b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data)); + } catch (e) { + // iPhone Safari doesn't let you apply with typed arrays + var typed = new Uint8Array(packet.data); + var basic = new Array(typed.length); + for (var i = 0; i < typed.length; i++) { + basic[i] = typed[i]; + } + b64data = String.fromCharCode.apply(null, basic); + } + message += global.btoa(b64data); + return callback(message); + }; + + /** + * Decodes a packet. Changes format to Blob if requested. + * + * @return {Object} with `type` and `data` (if any) + * @api private + */ + + exports.decodePacket = function (data, binaryType, utf8decode) { + if (data === undefined) { + return err; + } + // String data + if (typeof data == 'string') { + if (data.charAt(0) == 'b') { + return exports.decodeBase64Packet(data.substr(1), binaryType); + } + + if (utf8decode) { + data = tryDecode(data); + if (data === false) { + return err; + } + } + var type = data.charAt(0); + + if (Number(type) != type || !packetslist[type]) { + return err; + } + + if (data.length > 1) { + return { type: packetslist[type], data: data.substring(1) }; + } else { + return { type: packetslist[type] }; + } + } + + var asArray = new Uint8Array(data); + var type = asArray[0]; + var rest = sliceBuffer(data, 1); + if (Blob && binaryType === 'blob') { + rest = new Blob([rest]); + } + return { type: packetslist[type], data: rest }; + }; + + function tryDecode(data) { + try { + data = utf8.decode(data); + } catch (e) { + return false; + } + return data; + } + + /** + * Decodes a packet encoded in a base64 string + * + * @param {String} base64 encoded message + * @return {Object} with `type` and `data` (if any) + */ + + exports.decodeBase64Packet = function(msg, binaryType) { + var type = packetslist[msg.charAt(0)]; + if (!base64encoder) { + return { type: type, data: { base64: true, data: msg.substr(1) } }; + } + + var data = base64encoder.decode(msg.substr(1)); + + if (binaryType === 'blob' && Blob) { + data = new Blob([data]); + } + + return { type: type, data: data }; + }; + + /** + * Encodes multiple messages (payload). + * + * :data + * + * Example: + * + * 11:hello world2:hi + * + * If any contents are binary, they will be encoded as base64 strings. Base64 + * encoded strings are marked with a b before the length specifier + * + * @param {Array} packets + * @api private + */ + + exports.encodePayload = function (packets, supportsBinary, callback) { + if (typeof supportsBinary == 'function') { + callback = supportsBinary; + supportsBinary = null; + } + + var isBinary = hasBinary(packets); + + if (supportsBinary && isBinary) { + if (Blob && !dontSendBlobs) { + return exports.encodePayloadAsBlob(packets, callback); + } + + return exports.encodePayloadAsArrayBuffer(packets, callback); + } + + if (!packets.length) { + return callback('0:'); + } + + function setLengthHeader(message) { + return message.length + ':' + message; + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, !isBinary ? false : supportsBinary, true, function(message) { + doneCallback(null, setLengthHeader(message)); + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(results.join('')); + }); + }; + + /** + * Async array map using after + */ + + function map(ary, each, done) { + var result = new Array(ary.length); + var next = after(ary.length, done); + + var eachWithIndex = function(i, el, cb) { + each(el, function(error, msg) { + result[i] = msg; + cb(error, result); + }); + }; + + for (var i = 0; i < ary.length; i++) { + eachWithIndex(i, ary[i], next); + } + } + + /* + * Decodes data when a payload is maybe expected. Possible binary contents are + * decoded from their base64 representation + * + * @param {String} data, callback method + * @api public + */ + + exports.decodePayload = function (data, binaryType, callback) { + if (typeof data != 'string') { + return exports.decodePayloadAsBinary(data, binaryType, callback); + } + + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var packet; + if (data == '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + var length = '' + , n, msg; + + for (var i = 0, l = data.length; i < l; i++) { + var chr = data.charAt(i); + + if (':' != chr) { + length += chr; + } else { + if ('' == length || (length != (n = Number(length)))) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + msg = data.substr(i + 1, n); + + if (length != msg.length) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + if (msg.length) { + packet = exports.decodePacket(msg, binaryType, true); + + if (err.type == packet.type && err.data == packet.data) { + // parser error in individual packet - ignoring payload + return callback(err, 0, 1); + } + + var ret = callback(packet, i + n, l); + if (false === ret) return; + } + + // advance cursor + i += n; + length = ''; + } + } + + if (length != '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + }; + + /** + * Encodes multiple messages (payload) as binary. + * + * <1 = binary, 0 = string>[...] + * + * Example: + * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers + * + * @param {Array} packets + * @return {ArrayBuffer} encoded payload + * @api private + */ + + exports.encodePayloadAsArrayBuffer = function(packets, callback) { + if (!packets.length) { + return callback(new ArrayBuffer(0)); + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(data) { + return doneCallback(null, data); + }); + } + + map(packets, encodeOne, function(err, encodedPackets) { + var totalLength = encodedPackets.reduce(function(acc, p) { + var len; + if (typeof p === 'string'){ + len = p.length; + } else { + len = p.byteLength; + } + return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2 + }, 0); + + var resultArray = new Uint8Array(totalLength); + + var bufferIndex = 0; + encodedPackets.forEach(function(p) { + var isString = typeof p === 'string'; + var ab = p; + if (isString) { + var view = new Uint8Array(p.length); + for (var i = 0; i < p.length; i++) { + view[i] = p.charCodeAt(i); + } + ab = view.buffer; + } + + if (isString) { // not true binary + resultArray[bufferIndex++] = 0; + } else { // true binary + resultArray[bufferIndex++] = 1; + } + + var lenStr = ab.byteLength.toString(); + for (var i = 0; i < lenStr.length; i++) { + resultArray[bufferIndex++] = parseInt(lenStr[i]); + } + resultArray[bufferIndex++] = 255; + + var view = new Uint8Array(ab); + for (var i = 0; i < view.length; i++) { + resultArray[bufferIndex++] = view[i]; + } + }); + + return callback(resultArray.buffer); + }); + }; + + /** + * Encode as Blob + */ + + exports.encodePayloadAsBlob = function(packets, callback) { + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(encoded) { + var binaryIdentifier = new Uint8Array(1); + binaryIdentifier[0] = 1; + if (typeof encoded === 'string') { + var view = new Uint8Array(encoded.length); + for (var i = 0; i < encoded.length; i++) { + view[i] = encoded.charCodeAt(i); + } + encoded = view.buffer; + binaryIdentifier[0] = 0; + } + + var len = (encoded instanceof ArrayBuffer) + ? encoded.byteLength + : encoded.size; + + var lenStr = len.toString(); + var lengthAry = new Uint8Array(lenStr.length + 1); + for (var i = 0; i < lenStr.length; i++) { + lengthAry[i] = parseInt(lenStr[i]); + } + lengthAry[lenStr.length] = 255; + + if (Blob) { + var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]); + doneCallback(null, blob); + } + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(new Blob(results)); + }); + }; + + /* + * Decodes data when a payload is maybe expected. Strings are decoded by + * interpreting each byte as a key code for entries marked to start with 0. See + * description of encodePayloadAsBinary + * + * @param {ArrayBuffer} data, callback method + * @api public + */ + + exports.decodePayloadAsBinary = function (data, binaryType, callback) { + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var bufferTail = data; + var buffers = []; + + var numberTooLong = false; + while (bufferTail.byteLength > 0) { + var tailArray = new Uint8Array(bufferTail); + var isString = tailArray[0] === 0; + var msgLength = ''; + + for (var i = 1; ; i++) { + if (tailArray[i] == 255) break; + + if (msgLength.length > 310) { + numberTooLong = true; + break; + } + + msgLength += tailArray[i]; + } + + if(numberTooLong) return callback(err, 0, 1); + + bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length); + msgLength = parseInt(msgLength); + + var msg = sliceBuffer(bufferTail, 0, msgLength); + if (isString) { + try { + msg = String.fromCharCode.apply(null, new Uint8Array(msg)); + } catch (e) { + // iPhone Safari doesn't let you apply to typed arrays + var typed = new Uint8Array(msg); + msg = ''; + for (var i = 0; i < typed.length; i++) { + msg += String.fromCharCode(typed[i]); + } + } + } + + buffers.push(msg); + bufferTail = sliceBuffer(bufferTail, msgLength); + } + + var total = buffers.length; + buffers.forEach(function(buffer, i) { + callback(exports.decodePacket(buffer, binaryType, true), i, total); + }); + }; + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + + /** + * Gets the keys for an object. + * + * @return {Array} keys + * @api private + */ + + module.exports = Object.keys || function keys (obj){ + var arr = []; + var has = Object.prototype.hasOwnProperty; + + for (var i in obj) { + if (has.call(obj, i)) { + arr.push(i); + } + } + return arr; + }; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) { + /* + * Module requirements. + */ + + var isArray = __webpack_require__(12); + + /** + * Module exports. + */ + + module.exports = hasBinary; + + /** + * Checks for binary data. + * + * Right now only Buffer and ArrayBuffer are supported.. + * + * @param {Object} anything + * @api public + */ + + function hasBinary(data) { + + function _hasBinary(obj) { + if (!obj) return false; + + if ( (global.Buffer && global.Buffer.isBuffer(obj)) || + (global.ArrayBuffer && obj instanceof ArrayBuffer) || + (global.Blob && obj instanceof Blob) || + (global.File && obj instanceof File) + ) { + return true; + } + + if (isArray(obj)) { + for (var i = 0; i < obj.length; i++) { + if (_hasBinary(obj[i])) { + return true; + } + } + } else if (obj && 'object' == typeof obj) { + if (obj.toJSON) { + obj = obj.toJSON(); + } + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) { + return true; + } + } + } + + return false; + } + + return _hasBinary(data); + } + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 12 */ +/***/ function(module, exports) { + + module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; + }; + + +/***/ }, +/* 13 */ +/***/ function(module, exports) { + + /** + * An abstraction for slicing an arraybuffer even when + * ArrayBuffer.prototype.slice is not supported + * + * @api public + */ + + module.exports = function(arraybuffer, start, end) { + var bytes = arraybuffer.byteLength; + start = start || 0; + end = end || bytes; + + if (arraybuffer.slice) { return arraybuffer.slice(start, end); } + + if (start < 0) { start += bytes; } + if (end < 0) { end += bytes; } + if (end > bytes) { end = bytes; } + + if (start >= bytes || start >= end || bytes === 0) { + return new ArrayBuffer(0); + } + + var abv = new Uint8Array(arraybuffer); + var result = new Uint8Array(end - start); + for (var i = start, ii = 0; i < end; i++, ii++) { + result[ii] = abv[i]; + } + return result.buffer; + }; + + +/***/ }, +/* 14 */ +/***/ function(module, exports) { + + module.exports = after + + function after(count, callback, err_cb) { + var bail = false + err_cb = err_cb || noop + proxy.count = count + + return (count === 0) ? callback() : proxy + + function proxy(err, result) { + if (proxy.count <= 0) { + throw new Error('after called too many times') + } + --proxy.count + + // after first error, rest are passed to err_cb + if (err) { + bail = true + callback(err) + // future error callbacks will go to error handler + callback = err_cb + } else if (proxy.count === 0 && !bail) { + callback(null, result) + } + } + } + + function noop() {} + + +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/wtf8 v1.0.0 by @mathias */ + ;(function(root) { + + // Detect free variables `exports` + var freeExports = typeof exports == 'object' && exports; + + // Detect free variable `module` + var freeModule = typeof module == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root` + var freeGlobal = typeof global == 'object' && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + var stringFromCharCode = String.fromCharCode; + + // Taken from https://mths.be/punycode + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + var value; + var extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + // Taken from https://mths.be/punycode + function ucs2encode(array) { + var length = array.length; + var index = -1; + var value; + var output = ''; + while (++index < length) { + value = array[index]; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + } + return output; + } + + /*--------------------------------------------------------------------------*/ + + function createByte(codePoint, shift) { + return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80); + } + + function encodeCodePoint(codePoint) { + if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence + return stringFromCharCode(codePoint); + } + var symbol = ''; + if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence + symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0); + } + else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence + symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0); + symbol += createByte(codePoint, 6); + } + else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence + symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0); + symbol += createByte(codePoint, 12); + symbol += createByte(codePoint, 6); + } + symbol += stringFromCharCode((codePoint & 0x3F) | 0x80); + return symbol; + } + + function wtf8encode(string) { + var codePoints = ucs2decode(string); + var length = codePoints.length; + var index = -1; + var codePoint; + var byteString = ''; + while (++index < length) { + codePoint = codePoints[index]; + byteString += encodeCodePoint(codePoint); + } + return byteString; + } + + /*--------------------------------------------------------------------------*/ + + function readContinuationByte() { + if (byteIndex >= byteCount) { + throw Error('Invalid byte index'); + } + + var continuationByte = byteArray[byteIndex] & 0xFF; + byteIndex++; + + if ((continuationByte & 0xC0) == 0x80) { + return continuationByte & 0x3F; + } + + // If we end up here, it’s not a continuation byte. + throw Error('Invalid continuation byte'); + } + + function decodeSymbol() { + var byte1; + var byte2; + var byte3; + var byte4; + var codePoint; + + if (byteIndex > byteCount) { + throw Error('Invalid byte index'); + } + + if (byteIndex == byteCount) { + return false; + } + + // Read the first byte. + byte1 = byteArray[byteIndex] & 0xFF; + byteIndex++; + + // 1-byte sequence (no continuation bytes) + if ((byte1 & 0x80) == 0) { + return byte1; + } + + // 2-byte sequence + if ((byte1 & 0xE0) == 0xC0) { + var byte2 = readContinuationByte(); + codePoint = ((byte1 & 0x1F) << 6) | byte2; + if (codePoint >= 0x80) { + return codePoint; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 3-byte sequence (may include unpaired surrogates) + if ((byte1 & 0xF0) == 0xE0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3; + if (codePoint >= 0x0800) { + return codePoint; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 4-byte sequence + if ((byte1 & 0xF8) == 0xF0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + byte4 = readContinuationByte(); + codePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) | + (byte3 << 0x06) | byte4; + if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) { + return codePoint; + } + } + + throw Error('Invalid WTF-8 detected'); + } + + var byteArray; + var byteCount; + var byteIndex; + function wtf8decode(byteString) { + byteArray = ucs2decode(byteString); + byteCount = byteArray.length; + byteIndex = 0; + var codePoints = []; + var tmp; + while ((tmp = decodeSymbol()) !== false) { + codePoints.push(tmp); + } + return ucs2encode(codePoints); + } + + /*--------------------------------------------------------------------------*/ + + var wtf8 = { + 'version': '1.0.0', + 'encode': wtf8encode, + 'decode': wtf8decode + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return wtf8; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = wtf8; + } else { // in Narwhal or RingoJS v0.7.0- + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + for (var key in wtf8) { + hasOwnProperty.call(wtf8, key) && (freeExports[key] = wtf8[key]); + } + } + } else { // in Rhino or a web browser + root.wtf8 = wtf8; + } + + }(this)); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16)(module), (function() { return this; }()))) + +/***/ }, +/* 16 */ +/***/ function(module, exports) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 17 */ +/***/ function(module, exports) { + + /* + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ + (function(){ + "use strict"; + + var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + // Use a lookup table to find the index. + var lookup = new Uint8Array(256); + for (var i = 0; i < chars.length; i++) { + lookup[chars.charCodeAt(i)] = i; + } + + exports.encode = function(arraybuffer) { + var bytes = new Uint8Array(arraybuffer), + i, len = bytes.length, base64 = ""; + + for (i = 0; i < len; i+=3) { + base64 += chars[bytes[i] >> 2]; + base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; + base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; + base64 += chars[bytes[i + 2] & 63]; + } + + if ((len % 3) === 2) { + base64 = base64.substring(0, base64.length - 1) + "="; + } else if (len % 3 === 1) { + base64 = base64.substring(0, base64.length - 2) + "=="; + } + + return base64; + }; + + exports.decode = function(base64) { + var bufferLength = base64.length * 0.75, + len = base64.length, i, p = 0, + encoded1, encoded2, encoded3, encoded4; + + if (base64[base64.length - 1] === "=") { + bufferLength--; + if (base64[base64.length - 2] === "=") { + bufferLength--; + } + } + + var arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer); + + for (i = 0; i < len; i+=4) { + encoded1 = lookup[base64.charCodeAt(i)]; + encoded2 = lookup[base64.charCodeAt(i+1)]; + encoded3 = lookup[base64.charCodeAt(i+2)]; + encoded4 = lookup[base64.charCodeAt(i+3)]; + + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + + return arraybuffer; + }; + })(); + + +/***/ }, +/* 18 */ +/***/ function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) {/** + * Create a blob builder even when vendor prefixes exist + */ + + var BlobBuilder = global.BlobBuilder + || global.WebKitBlobBuilder + || global.MSBlobBuilder + || global.MozBlobBuilder; + + /** + * Check if Blob constructor is supported + */ + + var blobSupported = (function() { + try { + var a = new Blob(['hi']); + return a.size === 2; + } catch(e) { + return false; + } + })(); + + /** + * Check if Blob constructor supports ArrayBufferViews + * Fails in Safari 6, so we need to map to ArrayBuffers there. + */ + + var blobSupportsArrayBufferView = blobSupported && (function() { + try { + var b = new Blob([new Uint8Array([1,2])]); + return b.size === 2; + } catch(e) { + return false; + } + })(); + + /** + * Check if BlobBuilder is supported + */ + + var blobBuilderSupported = BlobBuilder + && BlobBuilder.prototype.append + && BlobBuilder.prototype.getBlob; + + /** + * Helper function that maps ArrayBufferViews to ArrayBuffers + * Used by BlobBuilder constructor and old browsers that didn't + * support it in the Blob constructor. + */ + + function mapArrayBufferViews(ary) { + for (var i = 0; i < ary.length; i++) { + var chunk = ary[i]; + if (chunk.buffer instanceof ArrayBuffer) { + var buf = chunk.buffer; + + // if this is a subarray, make a copy so we only + // include the subarray region from the underlying buffer + if (chunk.byteLength !== buf.byteLength) { + var copy = new Uint8Array(chunk.byteLength); + copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength)); + buf = copy.buffer; + } + + ary[i] = buf; + } + } + } + + function BlobBuilderConstructor(ary, options) { + options = options || {}; + + var bb = new BlobBuilder(); + mapArrayBufferViews(ary); + + for (var i = 0; i < ary.length; i++) { + bb.append(ary[i]); + } + + return (options.type) ? bb.getBlob(options.type) : bb.getBlob(); + }; + + function BlobConstructor(ary, options) { + mapArrayBufferViews(ary); + return new Blob(ary, options || {}); + }; + + module.exports = (function() { + if (blobSupported) { + return blobSupportsArrayBufferView ? global.Blob : BlobConstructor; + } else if (blobBuilderSupported) { + return BlobBuilderConstructor; + } else { + return undefined; + } + })(); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + + /** + * Expose `Emitter`. + */ + + if (true) { + module.exports = Emitter; + } + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + + function Emitter(obj) { + if (obj) return mixin(obj); + }; + + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; + }; + + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; + }; + + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; + + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; + }; + + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports) { + + /** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ + + exports.encode = function (obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; + }; + + /** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + + exports.decode = function(qs){ + var qry = {}; + var pairs = qs.split('&'); + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + return qry; + }; + + +/***/ }, +/* 21 */ +/***/ function(module, exports) { + + + module.exports = function(a, b){ + var fn = function(){}; + fn.prototype = b.prototype; + a.prototype = new fn; + a.prototype.constructor = a; + }; + +/***/ }, +/* 22 */ +/***/ function(module, exports) { + + 'use strict'; + + var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('') + , length = 64 + , map = {} + , seed = 0 + , i = 0 + , prev; + + /** + * Return a string representing the specified number. + * + * @param {Number} num The number to convert. + * @returns {String} The string representation of the number. + * @api public + */ + function encode(num) { + var encoded = ''; + + do { + encoded = alphabet[num % length] + encoded; + num = Math.floor(num / length); + } while (num > 0); + + return encoded; + } + + /** + * Return the integer value specified by the given string. + * + * @param {String} str The string to convert. + * @returns {Number} The integer value represented by the string. + * @api public + */ + function decode(str) { + var decoded = 0; + + for (i = 0; i < str.length; i++) { + decoded = decoded * length + map[str.charAt(i)]; + } + + return decoded; + } + + /** + * Yeast: A tiny growing id generator. + * + * @returns {String} A unique id. + * @api public + */ + function yeast() { + var now = encode(+new Date()); + + if (now !== prev) return seed = 0, prev = now; + return now +'.'+ encode(seed++); + } + + // + // Map each character to its index. + // + for (; i < length; i++) map[alphabet[i]] = i; + + // + // Expose the `yeast`, `encode` and `decode` functions. + // + yeast.encode = encode; + yeast.decode = decode; + module.exports = yeast; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) { + /** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + + exports = module.exports = __webpack_require__(25); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + + /** + * Colors. + */ + + exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' + ]; + + /** + * 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 + */ + + function useColors() { + // 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' && 'WebkitAppearance' in document.documentElement.style) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (window.console && (console.firebug || (console.exception && console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); + } + + /** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } + }; + + + /** + * Colorize log arguments if enabled. + * + * @api public + */ + + function formatArgs() { + var args = arguments; + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return args; + + var c = 'color: ' + this.color; + args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); + + // 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 + var index = 0; + var lastC = 0; + args[0].replace(/%[a-z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); + return args; + } + + /** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); + } + + /** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} + } + + /** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + function load() { + var r; + try { + return exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (typeof process !== 'undefined' && 'env' in process) { + return process.env.DEBUG; + } + } + + /** + * Enable namespaces listed in `localStorage.debug` initially. + */ + + exports.enable(load()); + + /** + * 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 { + return window.localStorage; + } catch (e) {} + } + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24))) + +/***/ }, +/* 24 */ +/***/ function(module, exports) { + + // shim for using process in browser + var process = module.exports = {}; + + // cached from whatever global is present so that test runners that stub it + // don't break things. But we need to wrap it in a try catch in case it is + // wrapped in strict mode code which doesn't define any globals. It's inside a + // function because try/catches deoptimize in certain engines. + + var cachedSetTimeout; + var cachedClearTimeout; + + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); + } + (function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } + } ()) + function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + + } + function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + + } + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } + }; + + // v8 likes predictible objects + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; // empty string to avoid regexp issues + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { return '/' }; + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + process.umask = function() { return 0; }; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + + /** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + + exports = module.exports = debug.debug = debug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = __webpack_require__(26); + + /** + * The currently active debug mode names, and names to skip. + */ + + exports.names = []; + exports.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lowercased letter, i.e. "n". + */ + + exports.formatters = {}; + + /** + * Previously assigned color. + */ + + var prevColor = 0; + + /** + * Previous log timestamp. + */ + + var prevTime; + + /** + * Select a color. + * + * @return {Number} + * @api private + */ + + function selectColor() { + return exports.colors[prevColor++ % exports.colors.length]; + } + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + + function debug(namespace) { + + // define the `disabled` version + function disabled() { + } + disabled.enabled = false; + + // define the `enabled` version + function enabled() { + + var self = enabled; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // add the `color` if not set + if (null == self.useColors) self.useColors = exports.useColors(); + if (null == self.color && self.useColors) self.color = selectColor(); + + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %o + args = ['%o'].concat(args); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var 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 + args = exports.formatArgs.apply(self, args); + + var logFn = enabled.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + enabled.enabled = true; + + var fn = exports.enabled(namespace) ? enabled : disabled; + + fn.namespace = namespace; + + return fn; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + + function enable(namespaces) { + exports.save(namespaces); + + var split = (namespaces || '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/[\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @api public + */ + + function disable() { + exports.enable(''); + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + + function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; + } + + +/***/ }, +/* 26 */ +/***/ function(module, exports) { + + /** + * Helpers. + */ + + var s = 1000 + var m = s * 60 + var h = m * 60 + var d = h * 24 + 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' && isNaN(val) === false) { + 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 > 10000) { + return + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|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 '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) { + if (ms >= d) { + return Math.round(ms / d) + 'd' + } + if (ms >= h) { + return Math.round(ms / h) + 'h' + } + if (ms >= m) { + return Math.round(ms / m) + 'm' + } + if (ms >= s) { + return Math.round(ms / s) + 's' + } + return ms + 'ms' + } + + /** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + + function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms' + } + + /** + * Pluralization helper. + */ + + function plural(ms, n, name) { + if (ms < n) { + return + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name + } + return Math.ceil(ms / n) + ' ' + name + 's' + } + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module requirements. + */ + + var Polling = __webpack_require__(7); + var inherit = __webpack_require__(21); + + /** + * Module exports. + */ + + module.exports = JSONPPolling; + + /** + * Cached regular expressions. + */ + + var rNewline = /\n/g; + var rEscapedNewline = /\\n/g; + + /** + * Global JSONP callbacks. + */ + + var callbacks; + + /** + * Noop. + */ + + function empty() {} + + /** + * JSONP Polling constructor. + * + * @param {Object} opts. + * @api public + */ + + function JSONPPolling(opts) { + Polling.call(this, opts); + + this.query = this.query || {}; + + // define global callbacks array if not present + // we do this here (lazily) to avoid unneeded global pollution + if (!callbacks) { + // we need to consider multiple engines in the same page + if (!global.___eio) global.___eio = []; + callbacks = global.___eio; + } + + // callback identifier + this.index = callbacks.length; + + // add callback to jsonp global + var self = this; + callbacks.push(function (msg) { + self.onData(msg); + }); + + // append to query string + this.query.j = this.index; + + // prevent spurious errors from being emitted when the window is unloaded + if (global.document && global.addEventListener) { + global.addEventListener('beforeunload', function () { + if (self.script) self.script.onerror = empty; + }, false); + } + } + + /** + * Inherits from Polling. + */ + + inherit(JSONPPolling, Polling); + + /* + * JSONP only supports binary as base64 encoded strings + */ + + JSONPPolling.prototype.supportsBinary = false; + + /** + * Closes the socket. + * + * @api private + */ + + JSONPPolling.prototype.doClose = function () { + if (this.script) { + this.script.parentNode.removeChild(this.script); + this.script = null; + } + + if (this.form) { + this.form.parentNode.removeChild(this.form); + this.form = null; + this.iframe = null; + } + + Polling.prototype.doClose.call(this); + }; + + /** + * Starts a poll cycle. + * + * @api private + */ + + JSONPPolling.prototype.doPoll = function () { + var self = this; + var script = document.createElement('script'); + + if (this.script) { + this.script.parentNode.removeChild(this.script); + this.script = null; + } + + script.async = true; + script.src = this.uri(); + script.onerror = function (e) { + self.onError('jsonp poll error', e); + }; + + var insertAt = document.getElementsByTagName('script')[0]; + if (insertAt) { + insertAt.parentNode.insertBefore(script, insertAt); + } else { + (document.head || document.body).appendChild(script); + } + this.script = script; + + var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent); + + if (isUAgecko) { + setTimeout(function () { + var iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + document.body.removeChild(iframe); + }, 100); + } + }; + + /** + * Writes with a hidden iframe. + * + * @param {String} data to send + * @param {Function} called upon flush. + * @api private + */ + + JSONPPolling.prototype.doWrite = function (data, fn) { + var self = this; + + if (!this.form) { + var form = document.createElement('form'); + var area = document.createElement('textarea'); + var id = this.iframeId = 'eio_iframe_' + this.index; + var iframe; + + form.className = 'socketio'; + form.style.position = 'absolute'; + form.style.top = '-1000px'; + form.style.left = '-1000px'; + form.target = id; + form.method = 'POST'; + form.setAttribute('accept-charset', 'utf-8'); + area.name = 'd'; + form.appendChild(area); + document.body.appendChild(form); + + this.form = form; + this.area = area; + } + + this.form.action = this.uri(); + + function complete() { + initIframe(); + fn(); + } + + function initIframe() { + if (self.iframe) { + try { + self.form.removeChild(self.iframe); + } catch (e) { + self.onError('jsonp polling iframe removal error', e); + } + } + + try { + // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) + var html = ''; + document.body.appendChild(div); + setTimeout(function () { + document.body.removeChild(div); + }, 0); + expect(Array.isArray(Object.getOwnPropertyNames(window))).to.eql(true); + }); + }); + } + + if (Object.getOwnPropertyDescriptor) { + describe('.getOwnPropertyDescriptor()', function () { + it('throws on null or undefined', function () { + expect(function () { Object.getOwnPropertyDescriptor(); }).to['throw'](TypeError); + expect(function () { Object.getOwnPropertyDescriptor(undefined); }).to['throw'](TypeError); + expect(function () { Object.getOwnPropertyDescriptor(null); }).to['throw'](TypeError); + }); + + it('works on primitives', function () { + [true, false, NaN, 42, /a/g, 'foo'].forEach(function (item) { + expect(Object.getOwnPropertyDescriptor(item, 'foo')).to.eql(Object.getOwnPropertyDescriptor(Object(item), 'foo')); + }); + }); + }); + } + + if (Object.seal) { + describe('.seal()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.seal(item)).to.eql(item); + }); + }); + }); + } + + if (Object.isSealed) { + describe('.isSealed()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.isSealed(item)).to.equal(true); + }); + }); + }); + } + + if (Object.freeze) { + describe('.freeze()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.freeze(item)).to.eql(item); + }); + }); + }); + } + + if (Object.isFrozen) { + describe('.isFrozen()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.isFrozen(item)).to.equal(true); + }); + }); + }); + } + + if (Object.preventExtensions) { + describe('.preventExtensions()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.preventExtensions(item)).to.eql(item); + }); + }); + }); + } + + if (Object.isExtensible) { + describe('.isExtensible()', function () { + it('works on primitives', function () { + [null, undefined, true, false, NaN, 42, 'foo'].forEach(function (item) { + expect(Object.isExtensible(item)).to.equal(false); + }); + }); + }); + } + + describe('.keys()', function () { + it('works on strings', function () { + expect(Object.keys('foo')).to.eql(['0', '1', '2']); + }); + + it('throws on null or undefined', function () { + expect(function () { Object.keys(); }).to['throw'](TypeError); + expect(function () { Object.keys(undefined); }).to['throw'](TypeError); + expect(function () { Object.keys(null); }).to['throw'](TypeError); + }); + + it('works on other primitives', function () { + [true, false, NaN, 42, /a/g].forEach(function (item) { + expect(Object.keys(item)).to.eql([]); + }); + }); + }); + + describe('.is()', function () { + if (!Object.prototype.hasOwnProperty.call(Object, 'is')) { + return it('exists', function () { + expect(Object).to.have.property('is'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Object.is).to.have.property('name', 'is'); + }); + + it('should have the right arity', function () { + expect(Object.is).to.have.property('length', 2); + }); + + it('should compare regular objects correctly', function () { + [null, undefined, [0], 5, 'str', { a: null }].map(function (item) { + return Object.is(item, item); + }).forEach(function (result) { + expect(result).to.equal(true); + }); + }); + + it('should compare 0 and -0 correctly', function () { + expect(Object.is(0, -0)).to.equal(false); + }); + + it('should compare NaNs correctly', function () { + expect(Object.is(NaN, NaN)).to.equal(true); + }); + }); + + describe('.assign()', function () { + if (!Object.prototype.hasOwnProperty.call(Object, 'assign')) { + return it('exists', function () { + expect(Object).to.have.property('assign'); + }); + } + + it('has the correct length', function () { + expect(Object.assign.length).to.eql(2); + }); + + it('returns the modified target object', function () { + var target = {}; + var returned = Object.assign(target, { a: 1 }); + expect(returned).to.equal(target); + }); + + it('should merge two objects', function () { + var target = { a: 1 }; + var returned = Object.assign(target, { b: 2 }); + expect(returned).to.eql({ a: 1, b: 2 }); + }); + + it('should merge three objects', function () { + var target = { a: 1 }; + var source1 = { b: 2 }; + var source2 = { c: 3 }; + var returned = Object.assign(target, source1, source2); + expect(returned).to.eql({ a: 1, b: 2, c: 3 }); + }); + + it('only iterates over own keys', function () { + var Foo = function () {}; + Foo.prototype.bar = true; + var foo = new Foo(); + foo.baz = true; + var target = { a: 1 }; + var returned = Object.assign(target, foo); + expect(returned).to.equal(target); + expect(target).to.eql({ baz: true, a: 1 }); + }); + + it('throws when target is null or undefined', function () { + expect(function () { Object.assign(null); }).to['throw'](TypeError); + expect(function () { Object.assign(undefined); }).to['throw'](TypeError); + }); + + it('coerces lone target to an object', function () { + var result = { + bool: Object.assign(true), + number: Object.assign(1), + string: Object.assign('1') + }; + + expect(typeof result.bool).to.equal('object'); + expect(Boolean.prototype.valueOf.call(result.bool)).to.equal(true); + + expect(typeof result.number).to.equal('object'); + expect(Number.prototype.valueOf.call(result.number)).to.equal(1); + + expect(typeof result.string).to.equal('object'); + expect(String.prototype.valueOf.call(result.string)).to.equal('1'); + }); + + it('coerces target to an object, assigns from sources', function () { + var sourceA = { a: 1 }; + var sourceB = { b: 1 }; + + var result = { + bool: Object.assign(true, sourceA, sourceB), + number: Object.assign(1, sourceA, sourceB), + string: Object.assign('1', sourceA, sourceB) + }; + + expect(typeof result.bool).to.equal('object'); + expect(Boolean.prototype.valueOf.call(result.bool)).to.equal(true); + expect(result.bool).to.eql({ a: 1, b: 1 }); + + expect(typeof result.number).to.equal('object'); + expect(Number.prototype.valueOf.call(result.number)).to.equal(1); + + expect(typeof result.string).to.equal('object'); + expect(String.prototype.valueOf.call(result.string)).to.equal('1'); + expect(result.string).to.eql({ 0: '1', a: 1, b: 1 }); + }); + + it('ignores non-object sources', function () { + expect(Object.assign({ a: 1 }, null, { b: 2 })).to.eql({ a: 1, b: 2 }); + expect(Object.assign({ a: 1 }, undefined, { b: 2 })).to.eql({ a: 1, b: 2 }); + expect(Object.assign({ a: 1 }, { b: 2 }, null)).to.eql({ a: 1, b: 2 }); + }); + + ifExtensionsPreventable('does not have pending exceptions', function () { + 'use strict'; + + // Firefox 37 still has "pending exception" logic in its Object.assign implementation, + // which is 72% slower than our shim, and Firefox 40's native implementation. + var thrower = { 1: 2, 2: 3, 3: 4 }; + Object.defineProperty(thrower, 2, { + get: function () { return 3; }, + set: function (v) { throw new RangeError('IE 9 does not throw on preventExtensions: ' + v); } + }); + Object.preventExtensions(thrower); + expect(thrower).to.have.property(2, 3); + var error; + try { + Object.assign(thrower, 'wxyz'); + } catch (e) { + error = e; + } + expect(thrower).not.to.have.property(0); + if (thrower[1] === 'x') { + // IE 9 doesn't throw in strict mode with preventExtensions + expect(error).to.be.an.instanceOf(RangeError); + } else { + expect(error).to.be.an.instanceOf(TypeError); + expect(thrower).to.have.property(1, 2); + } + expect(thrower).to.have.property(2, 3); + expect(thrower).to.have.property(3, 4); + }); + + ifSymbolsIt('includes enumerable symbols, after keys', function () { + /* eslint max-statements-per-line: 1 */ + var visited = []; + var obj = {}; + Object.defineProperty(obj, 'a', { get: function () { visited.push('a'); return 42; }, enumerable: true }); + var symbol = Symbol('enumerable'); + Object.defineProperty(obj, symbol, { + get: function () { visited.push(symbol); return Infinity; }, + enumerable: true + }); + var nonEnumSymbol = Symbol('non-enumerable'); + Object.defineProperty(obj, nonEnumSymbol, { + get: function () { visited.push(nonEnumSymbol); return -Infinity; }, + enumerable: false + }); + var target = Object.assign({}, obj); + expect(visited).to.eql(['a', symbol]); + expect(target.a).to.equal(42); + expect(target[symbol]).to.equal(Infinity); + expect(target[nonEnumSymbol]).not.to.equal(-Infinity); + }); + }); + + describe('Object.setPrototypeOf()', function () { + if (!Object.setPrototypeOf) { + return; // IE < 11 + } + + describe('argument checking', function () { + it('should throw TypeError if first arg is not object', function () { + var nonObjects = [null, undefined, true, false, 1, 3, 'foo']; + nonObjects.forEach(function (value) { + expect(function () { Object.setPrototypeOf(value); }).to['throw'](TypeError); + }); + }); + + it('should throw TypeError if second arg is not object or null', function () { + expect(function () { Object.setPrototypeOf({}, null); }).not.to['throw'](TypeError); + var invalidPrototypes = [true, false, 1, 3, 'foo']; + invalidPrototypes.forEach(function (proto) { + expect(function () { Object.setPrototypeOf({}, proto); }).to['throw'](TypeError); + }); + }); + }); + + describe('set prototype', function () { + it('should work', function () { + var Foo = function () {}; + var Bar = {}; + var foo = new Foo(); + expect(Object.getPrototypeOf(foo)).to.equal(Foo.prototype); + + var fooBar = Object.setPrototypeOf(foo, Bar); + expect(fooBar).to.equal(foo); + expect(Object.getPrototypeOf(foo)).to.equal(Bar); + }); + it('should be able to set to null', function () { + var Foo = function () {}; + var foo = new Foo(); + + var fooNull = Object.setPrototypeOf(foo, null); + expect(fooNull).to.equal(foo); + expect(Object.getPrototypeOf(foo)).to.equal(null); + }); + }); + }); + + describe('.getPrototypeOf()', function () { + ifObjectGetPrototypeOfIt('does not throw for a primitive', function () { + expect(Object.getPrototypeOf(3)).to.equal(Number.prototype); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise.js new file mode 100644 index 0000000..213bbd8 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise.js @@ -0,0 +1,43 @@ +/* This file is for testing implementation regressions of Promises. */ + +describe('Promise', function () { + if (typeof Promise === 'undefined') { + return it('exists', function () { + expect(typeof Promise).to.be('function'); + }); + } + + var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it; + + ifShimIt('is on the exported object', function () { + var exported = require('../'); + expect(exported.Promise).to.equal(Promise); + }); + + it('ignores non-function .then arguments', function () { + expect(function () { + Promise.reject(42).then(null, 5).then(null, function () {}); + }).not.to['throw'](); + }); + + describe('extra methods (bad Chrome!)', function () { + it('does not have accept', function () { + expect(Promise).not.to.have.property('accept'); + }); + + it('does not have defer', function () { + expect(Promise).not.to.have.property('defer'); + }); + + it('does not have chain', function () { + expect(Promise.prototype).not.to.have.property('chain'); + }); + }); + + it('requires an object context', function () { + // this fails in Safari 7.1 - 9 + expect(function promiseDotCallThree() { + Promise.call(3, function () {}); + }).to['throw'](); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/all.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/all.js new file mode 100644 index 0000000..f9662e2 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/all.js @@ -0,0 +1,203 @@ +/* global it, describe, expect, assert, Promise */ + +var failIfThrows = function (done) { + 'use strict'; + + return function (e) { + done(e || new Error()); + }; +}; + +describe('Promise.all', function () { + 'use strict'; + + it('should not be enumerable', function () { + expect(Promise).ownPropertyDescriptor('all').to.have.property('enumerable', false); + }); + + it('fulfills if passed an empty array', function (done) { + var iterable = []; + + Promise.all(iterable).then(function (value) { + assert(Array.isArray(value)); + assert.deepEqual(value, []); + }).then(done, failIfThrows(done)); + }); + + it('fulfills if passed an empty array-like', function (done) { + var f = function () { + Promise.all(arguments).then(function (value) { + assert(Array.isArray(value)); + assert.deepEqual(value, []); + }).then(done, failIfThrows(done)); + }; + f(); + }); + + it('fulfills if passed an array of mixed fulfilled promises and values', function (done) { + var iterable = [0, Promise.resolve(1), 2, Promise.resolve(3)]; + + Promise.all(iterable).then(function (value) { + assert(Array.isArray(value)); + assert.deepEqual(value, [0, 1, 2, 3]); + }).then(done, failIfThrows(done)); + }); + + it('rejects if any passed promise is rejected', function (done) { + var foreverPending = new Promise(function () { }); + var error = new Error('Rejected'); + var rejected = Promise.reject(error); + + var iterable = [foreverPending, rejected]; + + Promise.all(iterable).then( + function () { + assert(false, 'should never get here'); + }, + function (reason) { + assert.strictEqual(reason, error); + } + ).then(done, failIfThrows(done)); + }); + + it('resolves foreign thenables', function (done) { + var normal = Promise.resolve(1); + var foreign = { then: function (f) { f(2); } }; + + var iterable = [normal, foreign]; + + Promise.all(iterable).then(function (value) { + assert.deepEqual(value, [1, 2]); + }).then(done, failIfThrows(done)); + }); + + it('fulfills when passed an sparse array, giving `undefined` for the omitted values', function (done) { + /* jshint elision: true */ + /* jscs:disable disallowSpaceBeforeComma */ + /* jscs:disable requireSpaceAfterComma */ + /* eslint-disable no-sparse-arrays */ + var iterable = [Promise.resolve(0), , , Promise.resolve(1)]; + /* eslint-enable no-sparse-arrays */ + /* jscs:enable requireSpaceAfterComma */ + /* jscs:enable disallowSpaceBeforeComma */ + /* jshint elision: false */ + + Promise.all(iterable).then(function (value) { + assert.deepEqual(value, [0, undefined, undefined, 1]); + }).then(done, failIfThrows(done)); + }); + + it('does not modify the input array', function (done) { + var input = [0, 1]; + var iterable = input; + + Promise.all(iterable).then(function (value) { + assert.notStrictEqual(input, value); + }).then(done, failIfThrows(done)); + }); + + it('should reject with a TypeError if given a non-iterable', function (done) { + var notIterable = {}; + + Promise.all(notIterable).then( + function () { + assert(false, 'should never get here'); + }, + function (reason) { + assert(reason instanceof TypeError); + } + ).then(done, failIfThrows(done)); + }); + + // test cases from + // https://github.com/domenic/promises-unwrapping/issues/89#issuecomment-33110203 + var tamper = function (p) { + p.then = function (fulfill, reject) { + fulfill('tampered'); + return Promise.prototype.then.call(this, fulfill, reject); + }; + return p; + }; + + it('should be robust against tampering (1)', function (done) { + var g = [tamper(Promise.resolve(0))]; + // Prevent countdownHolder.[[Countdown]] from ever reaching zero + Promise.all(g).then( + function () { done(); }, + failIfThrows(done) + ); + }); + + it('should be robust against tampering (2)', function (done) { + // Promise from Promise.all resolved before arguments + var fulfillCalled = false; + + var g = [ + Promise.resolve(0), + tamper(Promise.resolve(1)), + Promise.resolve(2).then(function () { + assert(!fulfillCalled, 'should be resolved before all()'); + }).then(function () { + assert(!fulfillCalled, 'should be resolved before all()'); + })['catch'](failIfThrows(done)) + ]; + Promise.all(g).then(function () { + assert(!fulfillCalled, 'should be resolved last'); + fulfillCalled = true; + }).then(done, failIfThrows(done)); + }); + + it('should be robust against tampering (3)', function (done) { + var g = [ + Promise.resolve(0), + tamper(Promise.resolve(1)), + Promise.reject(2) + ]; + // Promise from Promise.all resolved despite rejected promise in arguments + Promise.all(g).then(function () { + throw new Error('should not reach here!'); + }, function (e) { + assert.strictEqual(e, 2); + }).then(done, failIfThrows(done)); + }); + + it('should be robust against tampering (4)', function (done) { + var hijack = true; + var actualArguments = []; + var P = function (resolver) { + var self; + if (hijack) { + hijack = false; + self = new Promise(function (resolve, reject) { + return resolver(function (values) { + // record arguments & # of times resolve function is called + actualArguments.push(values.slice()); + return resolve(values); + }, reject); + }); + } else { + self = new Promise(resolver); + } + Object.setPrototypeOf(self, P.prototype); + return self; + }; + if (!Object.setPrototypeOf) { return done(); } // skip test if on IE < 11 + Object.setPrototypeOf(P, Promise); + P.prototype = Object.create(Promise.prototype, { + constructor: { value: P } + }); + P.resolve = function (p) { return p; }; + + var g = [ + Promise.resolve(0), + tamper(Promise.resolve(1)), + Promise.resolve(2) + ]; + + // Promise.all calls resolver twice + P.all(g)['catch'](failIfThrows(done)); + Promise.resolve().then(function () { + assert.deepEqual(actualArguments, [[0, 'tampered', 2]]); + }).then(done, failIfThrows(done)); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/evil-promises.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/evil-promises.js new file mode 100644 index 0000000..f2c3b07 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/evil-promises.js @@ -0,0 +1,36 @@ +describe('Evil promises should not be able to break invariants', function () { + 'use strict'; + + specify('resolving to a promise that calls onFulfilled twice', function (done) { + // note that we have to create a trivial subclass, as otherwise the + // Promise.resolve(evilPromise) is just the identity function. + // (And in fact, most native Promise implementations use a private + // [[PromiseConstructor]] field in `Promise.resolve` which can't be + // easily patched in an ES5 engine, so instead of + // `Promise.resolve(evilPromise)` we'll use + // `new Promise(function(r){r(evilPromise);})` below.) + var EvilPromise = function (executor) { + var self = new Promise(executor); + Object.setPrototypeOf(self, EvilPromise.prototype); + return self; + }; + if (!Object.setPrototypeOf) { return done(); } // skip test if on IE < 11 + Object.setPrototypeOf(EvilPromise, Promise); + EvilPromise.prototype = Object.create(Promise.prototype, { + constructor: { value: EvilPromise } + }); + + var evilPromise = EvilPromise.resolve(); + evilPromise.then = function (f) { + f(1); + f(2); + }; + + var calledAlready = false; + new Promise(function (r) { r(evilPromise); }).then(function (value) { + assert.strictEqual(calledAlready, false); + calledAlready = true; + assert.strictEqual(value, 1); + }).then(done, done); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-aplus.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-aplus.js new file mode 100644 index 0000000..b7ab4f3 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-aplus.js @@ -0,0 +1,23 @@ +// tests from promises-aplus-tests + +describe('Promises/A+ Tests', function () { + 'use strict'; + + if (typeof Promise === 'undefined') { + return; + } + + require('promises-aplus-tests').mocha({ + // an adapter from es6 spec to Promises/A+ + deferred: function () { + var result = {}; + result.promise = new Promise(function (resolve, reject) { + result.resolve = resolve; + result.reject = reject; + }); + return result; + }, + resolved: Promise.resolve.bind(Promise), + rejected: Promise.reject.bind(Promise) + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-es6.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-es6.js new file mode 100644 index 0000000..d5b307a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/promises-es6.js @@ -0,0 +1,22 @@ +// tests from promises-es6-tests +(function () { + 'use strict'; + + if (typeof Promise === 'undefined') { + return; + } + + describe('Promises/ES6 Tests', function () { + + // an adapter that sets up global.Promise + // since it's already set up, empty functions will suffice + var adapter = { + defineGlobalPromise: function () { + }, + removeGlobalPromise: function () { + } + }; + + require('promises-es6-tests').mocha(adapter); + }); +}()); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/race.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/race.js new file mode 100644 index 0000000..d18309a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/race.js @@ -0,0 +1,88 @@ +var failIfThrows = function (done) { + 'use strict'; + + return function (e) { + done(e || new Error()); + }; +}; + +var delayPromise = function (value, ms) { + 'use strict'; + + return new Promise(function (resolve) { + setTimeout(function () { + resolve(value); + }, ms); + }); +}; + +describe('Promise.race', function () { + 'use strict'; + + it('should not be enumerable', function () { + expect(Promise).ownPropertyDescriptor('race').to.have.property('enumerable', false); + }); + + it('should fulfill if all promises are settled and the ordinally-first is fulfilled', function (done) { + var iterable = [Promise.resolve(1), Promise.reject(2), Promise.resolve(3)]; + + Promise.race(iterable).then(function (value) { + assert.strictEqual(value, 1); + }).then(done, failIfThrows(done)); + }); + + it('should reject if all promises are settled and the ordinally-first is rejected', function (done) { + var iterable = [Promise.reject(1), Promise.reject(2), Promise.resolve(3)]; + + Promise.race(iterable).then( + function () { + assert(false, 'should never get here'); + }, + function (reason) { + assert.strictEqual(reason, 1); + } + ).then(done, failIfThrows(done)); + }); + + it('should settle in the same way as the first promise to settle', function (done) { + // ensure that even if timeouts are delayed an all execute together, + // p2 will settle first. + var p2 = delayPromise(2, 200); + var p1 = delayPromise(1, 1000); + var p3 = delayPromise(3, 500); + var iterable = [p1, p2, p3]; + + Promise.race(iterable).then(function (value) { + assert.strictEqual(value, 2); + }).then(done, failIfThrows(done)); + }); + + // see https://github.com/domenic/promises-unwrapping/issues/75 + it('should never settle when given an empty iterable', function (done) { + var iterable = []; + var settled = false; + + Promise.race(iterable).then( + function () { settled = true; }, + function () { settled = true; } + ); + + setTimeout(function () { + assert.strictEqual(settled, false); + done(); + }, 300); + }); + + it('should reject with a TypeError if given a non-iterable', function (done) { + var notIterable = {}; + + Promise.race(notIterable).then( + function () { + assert(false, 'should never get here'); + }, + function (reason) { + assert(reason instanceof TypeError); + } + ).then(done, failIfThrows(done)); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/reject.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/reject.js new file mode 100644 index 0000000..c1c94f9 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/reject.js @@ -0,0 +1,34 @@ +var failIfThrows = function (done) { + 'use strict'; + + return function (e) { + done(e || new Error()); + }; +}; + +describe('Promise.reject', function () { + 'use strict'; + + it('should not be enumerable', function () { + expect(Promise).ownPropertyDescriptor('reject').to.have.property('enumerable', false); + }); + + it('should return a rejected promise', function (done) { + var value = {}; + Promise.reject(value).then(failIfThrows(done), function (result) { + expect(result).to.equal(value); + done(); + }); + }); + + it('throws when receiver is a primitive', function () { + var promise = Promise.reject(); + expect(function () { Promise.reject.call(undefined, promise); }).to['throw'](); + expect(function () { Promise.reject.call(null, promise); }).to['throw'](); + expect(function () { Promise.reject.call('', promise); }).to['throw'](); + expect(function () { Promise.reject.call(42, promise); }).to['throw'](); + expect(function () { Promise.reject.call(false, promise); }).to['throw'](); + expect(function () { Promise.reject.call(true, promise); }).to['throw'](); + promise.then(null, function () {}); // silence unhandled rejection errors in Chrome + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/resolve.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/resolve.js new file mode 100644 index 0000000..23bad8d --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/resolve.js @@ -0,0 +1,33 @@ +var failIfThrows = function (done) { + 'use strict'; + + return function (e) { + done(e || new Error()); + }; +}; + +describe('Promise.resolve', function () { + 'use strict'; + + it('should not be enumerable', function () { + expect(Promise).ownPropertyDescriptor('resolve').to.have.property('enumerable', false); + }); + + it('should return a resolved promise', function (done) { + var value = {}; + Promise.resolve(value).then(function (result) { + expect(result).to.equal(value); + done(); + }, failIfThrows(done)); + }); + + it('throws when receiver is a primitive', function () { + var promise = Promise.resolve(); + expect(function () { Promise.resolve.call(undefined, promise); }).to['throw'](); + expect(function () { Promise.resolve.call(null, promise); }).to['throw'](); + expect(function () { Promise.resolve.call('', promise); }).to['throw'](); + expect(function () { Promise.resolve.call(42, promise); }).to['throw'](); + expect(function () { Promise.resolve.call(false, promise); }).to['throw'](); + expect(function () { Promise.resolve.call(true, promise); }).to['throw'](); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/simple.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/simple.js new file mode 100644 index 0000000..1feb665 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/simple.js @@ -0,0 +1,96 @@ +var failIfThrows = function (done) { + 'use strict'; + + return function (e) { + done(e || new Error()); + }; +}; + +describe('Promise', function () { + 'use strict'; + + specify('sanity check: a fulfilled promise calls its fulfillment handler', function (done) { + Promise.resolve(5).then(function (value) { + assert.strictEqual(value, 5); + }).then(done, failIfThrows(done)); + }); + + specify('directly resolving the promise with itself', function (done) { + var resolvePromise; + var promise = new Promise(function (resolve) { resolvePromise = resolve; }); + + resolvePromise(promise); + + promise.then( + function () { + assert(false, 'Should not be fulfilled'); + }, + function (err) { + assert(err instanceof TypeError); + } + ).then(done, failIfThrows(done)); + }); + + specify('Stealing a resolver and using it to trigger possible reentrancy bug (#83)', function () { + var stolenResolver; + var StealingPromiseConstructor = function StealingPromiseConstructor(resolver) { + stolenResolver = resolver; + resolver(function () { }, function () { }); + }; + + var iterable = {}; + var atAtIterator = '@@iterator'; // on firefox, at least. + iterable[atAtIterator] = function () { + stolenResolver(null, null); + throw new Error(0); + }; + + assert.doesNotThrow(function () { + Promise.all.call(StealingPromiseConstructor, iterable); + }); + }); + + specify('resolve with a thenable calls it once', function () { + var resolve; + var p = new Promise(function (r) { resolve = r; }); + var count = 0; + resolve({ + then: function () { + count += 1; + throw new RangeError('reject the promise'); + } + }); + var a = p.then(function () {})['catch'](function (err) { + assert.equal(count, 1); + assert.ok(err instanceof RangeError); + }); + var b = p.then(function () {})['catch'](function (err) { + assert.equal(count, 1); + assert.ok(err instanceof RangeError); + }); + return Promise.all([a, b]); + }); + + specify('resolve with a thenable that throws on .then, rejects the promise synchronously', function () { + var resolve; + var p = new Promise(function (r) { resolve = r; }); + var count = 0; + var thenable = Object.defineProperty({}, 'then', { + get: function () { + count += 1; + throw new RangeError('no then for you'); + } + }); + resolve(thenable); + assert.equal(count, 1); + var a = p.then(function () {})['catch'](function (err) { + assert.equal(count, 1); + assert.ok(err instanceof RangeError); + }); + var b = p.then(function () {})['catch'](function (err) { + assert.equal(count, 1); + assert.ok(err instanceof RangeError); + }); + return Promise.all([a, b]); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/subclass.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/subclass.js new file mode 100644 index 0000000..8ff3bed --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/promise/subclass.js @@ -0,0 +1,47 @@ +/* global it, describe, assert, Promise */ + +describe('Support user subclassing of Promise', function () { + 'use strict'; + + it('should work if you do it right', function (done) { + // This is the "correct" es6-compatible way. + // (Thanks, @domenic and @zloirock!) + var MyPromise = function (executor) { + var self = new Promise(executor); + Object.setPrototypeOf(self, MyPromise.prototype); + self.mine = 'yeah'; + return self; + }; + if (!Object.setPrototypeOf) { return done(); } // skip test if on IE < 11 + Object.setPrototypeOf(MyPromise, Promise); + MyPromise.prototype = Object.create(Promise.prototype, { + constructor: { value: MyPromise } + }); + + // let's try it! + var p1 = MyPromise.resolve(5); + assert.strictEqual(p1.mine, 'yeah'); + p1 = p1.then(function (x) { + assert.strictEqual(x, 5); + }); + assert.strictEqual(p1.mine, 'yeah'); + + var p2 = new MyPromise(function (r) { r(6); }); + assert.strictEqual(p2.mine, 'yeah'); + p2 = p2.then(function (x) { + assert.strictEqual(x, 6); + }); + assert.strictEqual(p2.mine, 'yeah'); + + var p3 = MyPromise.all([p1, p2]); + assert.strictEqual(p3.mine, 'yeah'); + p3.then(function () { done(); }, done); + }); + + it("should throw if you don't inherit at all", function () { + var MyPromise = function () {}; + assert['throws'](function () { + Promise.all.call(MyPromise, []); + }, TypeError); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/reflect.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/reflect.js new file mode 100644 index 0000000..7ea8419 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/reflect.js @@ -0,0 +1,679 @@ +var arePropertyDescriptorsSupported = function () { + try { + Object.defineProperty({}, 'x', {}); + return true; + } catch (e) { /* this is IE 8. */ + return false; + } +}; +var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported(); +var functionsHaveNames = function f() {}.name === 'f'; + +var hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; +var ifSymbolsIt = hasSymbols ? it : xit; +var describeIfGetProto = Object.getPrototypeOf ? describe : xdescribe; +var describeIfSetProto = Object.setPrototypeOf ? describe : xdescribe; +var describeIfES5 = supportsDescriptors ? describe : xdescribe; +var describeIfExtensionsPreventible = Object.preventExtensions ? describe : xdescribe; +var describeIfGetOwnPropertyNames = Object.getOwnPropertyNames ? describe : xdescribe; +var ifExtensionsPreventibleIt = Object.preventExtensions ? it : xit; +var ifES5It = supportsDescriptors ? it : xit; +var ifFreezeIt = typeof Object.freeze === 'function' ? it : xit; +var ifFunctionsHaveNamesIt = functionsHaveNames ? it : xit; +var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it; + +describe('Reflect', function () { + if (typeof Reflect === 'undefined') { + return it('exists', function () { + expect(this).to.have.property('Reflect'); + }); + } + + var object = { + something: 1, + _value: 0 + }; + + if (supportsDescriptors) { + /* eslint-disable accessor-pairs */ + Object.defineProperties(object, { + value: { + get: function () { + return this._value; + } + }, + + setter: { + set: function (val) { + this._value = val; + } + }, + + bool: { + value: true + } + }); + /* eslint-enable accessor-pairs */ + } + + var testXThrow = function (values, func) { + var checker = function checker(item) { + try { + func(item); + return false; + } catch (e) { + return e instanceof TypeError; + } + }; + + values.forEach(function (item) { + expect(item).to.satisfy(checker); + }); + }; + + var testCallableThrow = testXThrow.bind(null, [null, undefined, 1, 'string', true, [], {}]); + + var testPrimitiveThrow = testXThrow.bind(null, [null, undefined, 1, 'string', true]); + + ifShimIt('is on the exported object', function () { + var exported = require('../'); + expect(exported.Reflect).to.equal(Reflect); + }); + + describe('.apply()', function () { + if (typeof Reflect.apply === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('apply'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.apply).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.apply.name).to.equal('apply'); + }); + + it('throws if target isn’t callable', function () { + testCallableThrow(function (item) { + return Reflect.apply(item, null, []); + }); + }); + + it('works also with redefined apply', function () { + expect(Reflect.apply(Array.prototype.push, [1, 2], [3, 4, 5])).to.equal(5); + + var F = function F(a, b, c) { + return a + b + c; + }; + + F.apply = false; + + expect(Reflect.apply(F, null, [1, 2, 3])).to.equal(6); + + var G = function G(last) { + return this.x + 'lo' + last; + }; + + G.apply = function nop() {}; + + expect(Reflect.apply(G, { x: 'yel' }, ['!'])).to.equal('yello!'); + }); + }); + + describe('.construct()', function () { + if (typeof Reflect.construct === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('construct'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.construct).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.construct.name).to.equal('construct'); + }); + + it('throws if target isn’t callable', function () { + testCallableThrow(function (item) { + return Reflect.apply(item, null, []); + }); + }); + + it('works also with redefined apply', function () { + var C = function C(a, b, c) { + this.qux = [a, b, c].join('|'); + }; + + C.apply = undefined; + + expect(Reflect.construct(C, ['foo', 'bar', 'baz']).qux).to.equal('foo|bar|baz'); + }); + + it('correctly handles newTarget param', function () { + var F = function F() {}; + expect(Reflect.construct(function () {}, [], F) instanceof F).to.equal(true); + }); + }); + + describeIfES5('.defineProperty()', function () { + if (typeof Reflect.defineProperty === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('defineProperty'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.defineProperty).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.defineProperty.name).to.equal('defineProperty'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.defineProperty(item, 'prop', { value: true }); + }); + }); + + ifExtensionsPreventibleIt('returns false for non-extensible objects', function () { + var o = Object.preventExtensions({}); + + expect(Reflect.defineProperty(o, 'prop', {})).to.equal(false); + }); + + it('can return true, even for non-configurable, non-writable properties', function () { + var o = {}; + var desc = { + value: 13, + enumerable: false, + writable: false, + configurable: false + }; + + expect(Reflect.defineProperty(o, 'prop', desc)).to.equal(true); + + // Defined as non-configurable, but descriptor is identical. + expect(Reflect.defineProperty(o, 'prop', desc)).to.equal(true); + + desc.value = 37; // Change + + expect(Reflect.defineProperty(o, 'prop', desc)).to.equal(false); + }); + + it('can change from one property type to another, if configurable', function () { + var o = {}; + + var desc1 = { + set: function () {}, + configurable: true + }; + + var desc2 = { + value: 13, + configurable: false + }; + + var desc3 = { + get: function () {} + }; + + expect(Reflect.defineProperty(o, 'prop', desc1)).to.equal(true); + + expect(Reflect.defineProperty(o, 'prop', desc2)).to.equal(true); + + expect(Reflect.defineProperty(o, 'prop', desc3)).to.equal(false); + }); + }); + + describe('.deleteProperty()', function () { + if (typeof Reflect.deleteProperty === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('deleteProperty'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.deleteProperty).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.deleteProperty.name).to.equal('deleteProperty'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.deleteProperty(item, 'prop'); + }); + }); + + ifES5It('returns true for success and false for failure', function () { + var o = { a: 1 }; + + Object.defineProperty(o, 'b', { value: 2 }); + + expect(o).to.have.property('a'); + expect(o).to.have.property('b'); + expect(o.a).to.equal(1); + expect(o.b).to.equal(2); + + expect(Reflect.deleteProperty(o, 'a')).to.equal(true); + + expect(o).not.to.have.property('a'); + expect(o.b).to.equal(2); + + expect(Reflect.deleteProperty(o, 'b')).to.equal(false); + + expect(o).to.have.property('b'); + expect(o.b).to.equal(2); + + expect(Reflect.deleteProperty(o, 'a')).to.equal(true); + }); + + it('cannot delete an array’s length property', function () { + expect(Reflect.deleteProperty([], 'length')).to.equal(false); + }); + }); + + describeIfES5('.get()', function () { + if (typeof Reflect.get === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('get'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.get).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.get.name).to.equal('get'); + }); + + it('throws on null and undefined', function () { + [null, undefined].forEach(function (item) { + expect(function () { + return Reflect.get(item, 'property'); + }).to['throw'](TypeError); + }); + }); + + it('can retrieve a simple value, from the target', function () { + var p = { something: 2, bool: false }; + + expect(Reflect.get(object, 'something')).to.equal(1); + // p has no effect + expect(Reflect.get(object, 'something', p)).to.equal(1); + + // Value-defined properties take the target's value, + // and ignore that of the receiver. + expect(Reflect.get(object, 'bool', p)).to.equal(true); + + // Undefined values + expect(Reflect.get(object, 'undefined_property')).to.equal(undefined); + }); + + it('will invoke getters on the receiver rather than target', function () { + var other = { _value: 1337 }; + + expect(Reflect.get(object, 'value', other)).to.equal(1337); + + // No getter for setter property + expect(Reflect.get(object, 'setter', other)).to.equal(undefined); + }); + + it('will search the prototype chain', function () { + var other = Object.create(object); + other._value = 17; + + var yetAnother = { _value: 4711 }; + + expect(Reflect.get(other, 'value', yetAnother)).to.equal(4711); + + expect(Reflect.get(other, 'bool', yetAnother)).to.equal(true); + }); + }); + + describeIfES5('.set()', function () { + if (typeof Reflect.set === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('set'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.set).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.set.name).to.equal('set'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.set(item, 'prop', 'value'); + }); + }); + + it('sets values on receiver', function () { + var target = {}; + var receiver = {}; + + expect(Reflect.set(target, 'foo', 1, receiver)).to.equal(true); + + expect('foo' in target).to.equal(false); + expect(receiver.foo).to.equal(1); + + expect(Reflect.defineProperty(receiver, 'bar', { + value: 0, + writable: true, + enumerable: false, + configurable: true + })).to.equal(true); + + expect(Reflect.set(target, 'bar', 1, receiver)).to.equal(true); + expect(receiver.bar).to.equal(1); + expect(Reflect.getOwnPropertyDescriptor(receiver, 'bar').enumerable).to.equal(false); + + var out; + /* eslint-disable accessor-pairs */ + target = Object.create({}, { + o: { + set: function () { out = this; } + } + }); + /* eslint-enable accessor-pairs */ + + expect(Reflect.set(target, 'o', 17, receiver)).to.equal(true); + expect(out).to.equal(receiver); + }); + }); + + describeIfES5('.getOwnPropertyDescriptor()', function () { + if (typeof Reflect.getOwnPropertyDescriptor === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('getOwnPropertyDescriptor'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.getOwnPropertyDescriptor).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.getOwnPropertyDescriptor.name).to.equal('getOwnPropertyDescriptor'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.getOwnPropertyDescriptor(item, 'prop'); + }); + }); + + it('retrieves property descriptors', function () { + var obj = { a: 4711 }; + + var desc = Reflect.getOwnPropertyDescriptor(obj, 'a'); + + expect(desc).to.deep.equal({ + value: 4711, + configurable: true, + writable: true, + enumerable: true + }); + }); + }); + + describeIfGetProto('.getPrototypeOf()', function () { + if (typeof Reflect.getPrototypeOf === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('getPrototypeOf'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.getPrototypeOf).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.getPrototypeOf.name).to.equal('getPrototypeOf'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.getPrototypeOf(item); + }); + }); + + it('retrieves prototypes', function () { + expect(Reflect.getPrototypeOf(Object.create(null))).to.equal(null); + + expect(Reflect.getPrototypeOf([])).to.equal(Array.prototype); + }); + }); + + describe('.has()', function () { + if (typeof Reflect.has === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('has'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.has).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.has.name).to.equal('has'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.has(item, 'prop'); + }); + }); + + it('will detect own properties', function () { + var target = Object.create ? Object.create(null) : {}; + + expect(Reflect.has(target, 'prop')).to.equal(false); + + target.prop = undefined; + expect(Reflect.has(target, 'prop')).to.equal(true); + + delete target.prop; + expect(Reflect.has(target, 'prop')).to.equal(false); + + expect(Reflect.has(Reflect.has, 'length')).to.equal(true); + }); + + ifES5It('will detect an own accessor property', function () { + var target = Object.create(null); + /* eslint-disable accessor-pairs */ + Object.defineProperty(target, 'accessor', { + set: function () {} + }); + /* eslint-enable accessor-pairs */ + + expect(Reflect.has(target, 'accessor')).to.equal(true); + }); + + it('will search the prototype chain', function () { + var Parent = function () {}; + Parent.prototype.someProperty = undefined; + + var Child = function () {}; + Child.prototype = new Parent(); + + var target = new Child(); + target.bool = true; + + expect(Reflect.has(target, 'bool')).to.equal(true); + expect(Reflect.has(target, 'someProperty')).to.equal(true); + expect(Reflect.has(target, 'undefinedProperty')).to.equal(false); + }); + }); + + describeIfExtensionsPreventible('.isExtensible()', function () { + if (typeof Reflect.isExtensible === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('isExtensible'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.isExtensible).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.isExtensible.name).to.equal('isExtensible'); + }); + + it('returns true for plain objects', function () { + expect(Reflect.isExtensible({})).to.equal(true); + expect(Reflect.isExtensible(Object.preventExtensions({}))).to.equal(false); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.isExtensible(item); + }); + }); + }); + + describeIfGetOwnPropertyNames('.ownKeys()', function () { + if (typeof Reflect.ownKeys === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('ownKeys'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.ownKeys).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.ownKeys.name).to.equal('ownKeys'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.ownKeys(item); + }); + }); + + it('should return the same result as Object.getOwnPropertyNames if there are no Symbols', function () { + var obj = { foo: 1, bar: 2 }; + + obj[1] = 'first'; + + var result = Object.getOwnPropertyNames(obj); + + // Reflect.ownKeys depends on the implementation of + // Object.getOwnPropertyNames, at least for non-symbol keys. + expect(Reflect.ownKeys(obj)).to.deep.equal(result); + + // We can only be sure of which keys should exist. + expect(result.sort()).to.deep.equal(['1', 'bar', 'foo']); + }); + + ifSymbolsIt('symbols come last', function () { + var s = Symbol(); + + var o = { + 'non-symbol': true + }; + + o[s] = true; + + expect(Reflect.ownKeys(o)).to.deep.equal(['non-symbol', s]); + }); + }); + + describeIfExtensionsPreventible('.preventExtensions()', function () { + if (typeof Reflect.preventExtensions === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('preventExtensions'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.preventExtensions).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.preventExtensions.name).to.equal('preventExtensions'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.preventExtensions(item); + }); + }); + + it('prevents extensions on objects', function () { + var obj = {}; + Reflect.preventExtensions(obj); + expect(Object.isExtensible(obj)).to.equal(false); + }); + }); + + describeIfSetProto('.setPrototypeOf()', function () { + if (typeof Reflect.setPrototypeOf === 'undefined') { + return it('exists', function () { + expect(Reflect).to.have.property('setPrototypeOf'); + }); + } + + it('is a function', function () { + expect(typeof Reflect.setPrototypeOf).to.equal('function'); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Reflect.setPrototypeOf.name).to.equal('setPrototypeOf'); + }); + + it('throws if the target isn’t an object', function () { + testPrimitiveThrow(function (item) { + return Reflect.setPrototypeOf(item, null); + }); + }); + + it('throws if the prototype is neither object nor null', function () { + var o = {}; + + [undefined, 1, 'string', true].forEach(function (item) { + expect(function () { + return Reflect.setPrototypeOf(o, item); + }).to['throw'](TypeError); + }); + }); + + it('can set prototypes, and returns true on success', function () { + var obj = {}; + + expect(Reflect.setPrototypeOf(obj, Array.prototype)).to.equal(true); + expect(obj).to.be.an.instanceOf(Array); + + expect(obj.toString).not.to.equal(undefined); + expect(Reflect.setPrototypeOf(obj, null)).to.equal(true); + expect(obj.toString).to.equal(undefined); + }); + + ifFreezeIt('is returns false on failure', function () { + var obj = Object.freeze({}); + + expect(Reflect.setPrototypeOf(obj, null)).to.equal(false); + }); + + it('fails when attempting to create a circular prototype chain', function () { + var o = {}; + + expect(Reflect.setPrototypeOf(o, o)).to.equal(false); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/regexp.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/regexp.js new file mode 100644 index 0000000..ea31379 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/regexp.js @@ -0,0 +1,415 @@ +var getRegexLiteral = function (stringRegex) { + try { + /* jshint evil: true */ + /* eslint-disable no-new-func */ + return Function('return ' + stringRegex + ';')(); + /* eslint-enable no-new-func */ + /* jshint evil: false */ + } catch (e) { /**/ } +}; +var describeIfSupportsDescriptors = Object.getOwnPropertyDescriptor ? describe : describe.skip; +var callAllowsPrimitives = (function () { return this === 3; }.call(3)); +var ifCallAllowsPrimitivesIt = callAllowsPrimitives ? it : it.skip; +var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it; +var hasSymbols = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' && typeof Symbol('') === 'symbol'; +var ifSymbolsDescribe = hasSymbols ? describe : describe.skip; +var defaultRegex = (function () { + // Chrome Canary 51 has an undefined RegExp#toSource, and + // RegExp#toString produces `/undefined/` + try { + return RegExp.prototype.source ? String(RegExp.prototype) : '/(?:)/'; + } catch (e) { + return '/(?:)/'; + } +}()); + +describe('RegExp', function () { + ifShimIt('is on the exported object', function () { + var exported = require('../'); + expect(exported.RegExp).to.equal(RegExp); + }); + + it('can be called with no arguments', function () { + var regex = RegExp(); + expect(String(regex)).to.equal(defaultRegex); + expect(regex).to.be.an.instanceOf(RegExp); + }); + + it('can be called with null/undefined', function () { + expect(String(RegExp(null))).to.equal('/null/'); + expect(String(RegExp(undefined))).to.equal(defaultRegex); + }); + + describe('constructor', function () { + it('allows a regex as the pattern', function () { + var a = /a/g; + var b = new RegExp(a); + if (typeof a !== 'function') { + // in browsers like Safari 5, new RegExp with a regex returns the same instance. + expect(a).not.to.equal(b); + } + expect(a).to.eql(b); + }); + + it('allows a string with flags', function () { + expect(new RegExp('a', 'mgi')).to.eql(/a/gim); + expect(String(new RegExp('a', 'mgi'))).to.equal('/a/gim'); + }); + + it('allows a regex with flags', function () { + var a = /a/g; + var makeRegex = function () { return new RegExp(a, 'mi'); }; + expect(makeRegex).not.to['throw'](TypeError); + expect(makeRegex()).to.eql(/a/mi); + expect(String(makeRegex())).to.equal('/a/im'); + }); + + it('works with instanceof', function () { + expect(/a/g).to.be.an.instanceOf(RegExp); + expect(new RegExp('a', 'im')).to.be.an.instanceOf(RegExp); + expect(new RegExp(/a/g, 'im')).to.be.an.instanceOf(RegExp); + }); + + it('has the right constructor', function () { + expect(/a/g).to.have.property('constructor', RegExp); + expect(new RegExp('a', 'im')).to.have.property('constructor', RegExp); + expect(new RegExp(/a/g, 'im')).to.have.property('constructor', RegExp); + }); + + it('toStrings properly', function () { + expect(Object.prototype.toString.call(/a/g)).to.equal('[object RegExp]'); + expect(Object.prototype.toString.call(new RegExp('a', 'g'))).to.equal('[object RegExp]'); + expect(Object.prototype.toString.call(new RegExp(/a/g, 'im'))).to.equal('[object RegExp]'); + }); + + it('functions as a boxed primitive wrapper', function () { + var regex = /a/g; + expect(RegExp(regex)).to.equal(regex); + }); + + ifSymbolsDescribe('Symbol.replace', function () { + if (!hasSymbols || typeof Symbol.replace === 'undefined') { + return; + } + + it('is a function', function () { + expect(RegExp.prototype).to.have.property(Symbol.replace); + expect(typeof RegExp.prototype[Symbol.replace]).to.equal('function'); + }); + + it('is the same as String#replace', function () { + var regex = /a/g; + var str = 'abc'; + var symbolReplace = regex[Symbol.replace](str); + var stringReplace = str.replace(regex); + expect(Object.keys(symbolReplace)).to.eql(Object.keys(stringReplace)); + expect(symbolReplace).to.eql(stringReplace); + }); + }); + + ifSymbolsDescribe('Symbol.search', function () { + if (!hasSymbols || typeof Symbol.search === 'undefined') { + return; + } + + it('is a function', function () { + expect(RegExp.prototype).to.have.property(Symbol.search); + expect(typeof RegExp.prototype[Symbol.search]).to.equal('function'); + }); + + it('is the same as String#search', function () { + var regex = /a/g; + var str = 'abc'; + var symbolSearch = regex[Symbol.search](str); + var stringSearch = str.search(regex); + expect(Object.keys(symbolSearch)).to.eql(Object.keys(stringSearch)); + expect(symbolSearch).to.eql(stringSearch); + }); + }); + + ifSymbolsDescribe('Symbol.split', function () { + if (!hasSymbols || typeof Symbol.split === 'undefined') { + return; + } + + it('is a function', function () { + expect(RegExp.prototype).to.have.property(Symbol.split); + expect(typeof RegExp.prototype[Symbol.split]).to.equal('function'); + }); + + it('is the same as String#split', function () { + var regex = /a/g; + var str = 'abcabc'; + var symbolSplit = regex[Symbol.split](str, 1); + var stringSplit = str.split(regex, 1); + expect(Object.keys(symbolSplit)).to.eql(Object.keys(stringSplit)); + expect(symbolSplit).to.eql(stringSplit); + }); + }); + + ifSymbolsDescribe('Symbol.match', function () { + if (!hasSymbols || typeof Symbol.match === 'undefined') { + return; + } + + var regexFalsyMatch; + var nonregexTruthyMatch; + + beforeEach(function () { + regexFalsyMatch = /./; + regexFalsyMatch[Symbol.match] = false; + nonregexTruthyMatch = { constructor: RegExp }; + nonregexTruthyMatch[Symbol.match] = true; + }); + + it('is a function', function () { + expect(RegExp.prototype).to.have.property(Symbol.match); + expect(typeof RegExp.prototype[Symbol.match]).to.equal('function'); + }); + + it('is the same as String#match', function () { + var regex = /a/g; + var str = 'abc'; + var symbolMatch = regex[Symbol.match](str); + var stringMatch = str.match(regex); + expect(Object.keys(symbolMatch)).to.eql(Object.keys(stringMatch)); + expect(symbolMatch).to.eql(stringMatch); + }); + + it('function does not passthrough regexes with a falsy Symbol.match', function () { + expect(RegExp(regexFalsyMatch)).not.to.equal(regexFalsyMatch); + }); + + it('constructor does not passthrough regexes with a falsy Symbol.match', function () { + expect(new RegExp(regexFalsyMatch)).not.to.equal(regexFalsyMatch); + }); + + it('function passes through non-regexes with a truthy Symbol.match', function () { + expect(RegExp(nonregexTruthyMatch)).to.equal(nonregexTruthyMatch); + }); + + it('constructor does not pass through non-regexes with a truthy Symbol.match', function () { + expect(new RegExp(nonregexTruthyMatch)).not.to.equal(nonregexTruthyMatch); + }); + }); + }); + + describeIfSupportsDescriptors('#flags', function () { + if (!Object.prototype.hasOwnProperty.call(RegExp.prototype, 'flags')) { + return it('exists', function () { + expect(RegExp.prototype).to.have.property('flags'); + }); + } + + var regexpFlagsDescriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags'); + var testGenericRegExpFlags = function (object) { + return regexpFlagsDescriptor.get.call(object); + }; + + it('has the correct descriptor', function () { + expect(regexpFlagsDescriptor.configurable).to.equal(true); + expect(regexpFlagsDescriptor.enumerable).to.equal(false); + expect(regexpFlagsDescriptor.get instanceof Function).to.equal(true); + expect(regexpFlagsDescriptor.set).to.equal(undefined); + }); + + ifCallAllowsPrimitivesIt('throws when not called on an object', function () { + var nonObjects = ['', false, true, 42, NaN, null, undefined]; + nonObjects.forEach(function (nonObject) { + expect(function () { testGenericRegExpFlags(nonObject); }).to['throw'](TypeError); + }); + }); + + it('has the correct flags on a literal', function () { + expect((/a/g).flags).to.equal('g'); + expect((/a/i).flags).to.equal('i'); + expect((/a/m).flags).to.equal('m'); + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'sticky')) { + expect(getRegexLiteral('/a/y').flags).to.equal('y'); + } + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'unicode')) { + expect(getRegexLiteral('/a/u').flags).to.equal('u'); + } + }); + + it('has the correct flags on a constructed RegExp', function () { + expect(new RegExp('a', 'g').flags).to.equal('g'); + expect(new RegExp('a', 'i').flags).to.equal('i'); + expect(new RegExp('a', 'm').flags).to.equal('m'); + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'sticky')) { + expect(new RegExp('a', 'y').flags).to.equal('y'); + } + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'unicode')) { + expect(new RegExp('a', 'u').flags).to.equal('u'); + } + }); + + it('returns flags sorted on a literal', function () { + expect((/a/gim).flags).to.equal('gim'); + expect((/a/mig).flags).to.equal('gim'); + expect((/a/mgi).flags).to.equal('gim'); + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'sticky')) { + expect(getRegexLiteral('/a/gyim').flags).to.equal('gimy'); + } + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'unicode')) { + expect(getRegexLiteral('/a/ugmi').flags).to.equal('gimu'); + } + }); + + it('returns flags sorted on a constructed RegExp', function () { + expect(new RegExp('a', 'gim').flags).to.equal('gim'); + expect(new RegExp('a', 'mig').flags).to.equal('gim'); + expect(new RegExp('a', 'mgi').flags).to.equal('gim'); + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'sticky')) { + expect(new RegExp('a', 'mygi').flags).to.equal('gimy'); + } + if (Object.prototype.hasOwnProperty.call(RegExp.prototype, 'unicode')) { + expect(new RegExp('a', 'mugi').flags).to.equal('gimu'); + } + }); + }); + + describe('#toString()', function () { + it('throws on null/undefined', function () { + expect(function () { RegExp.prototype.toString.call(null); }).to['throw'](TypeError); + expect(function () { RegExp.prototype.toString.call(undefined); }).to['throw'](TypeError); + }); + + it('works on regexes', function () { + expect(RegExp.prototype.toString.call(/a/g)).to.equal('/a/g'); + expect(RegExp.prototype.toString.call(new RegExp('a', 'g'))).to.equal('/a/g'); + }); + + it('works on non-regexes', function () { + expect(RegExp.prototype.toString.call({ source: 'abc', flags: '' })).to.equal('/abc/'); + expect(RegExp.prototype.toString.call({ source: 'abc', flags: 'xyz' })).to.equal('/abc/xyz'); + }); + + ifSymbolsDescribe('Symbol.match', function () { + if (!hasSymbols || typeof Symbol.match === 'undefined') { + return; + } + + it('accepts a non-regex with Symbol.match', function () { + var obj = { source: 'abc', flags: 'def' }; + obj[Symbol.match] = RegExp.prototype[Symbol.match]; + expect(RegExp.prototype.toString.call(obj)).to.equal('/abc/def'); + }); + }); + }); + + describe('Object properties', function () { + it('does not have the nonstandard $input property', function () { + expect(RegExp).not.to.have.property('$input'); // Chrome < 39, Opera < 26 have this + }); + + it('has "input" property', function () { + expect(RegExp).to.have.ownProperty('input'); + expect(RegExp).to.have.ownProperty('$_'); + }); + + it('has "last match" property', function () { + expect(RegExp).to.have.ownProperty('lastMatch'); + expect(RegExp).to.have.ownProperty('$+'); + }); + + it('has "last paren" property', function () { + expect(RegExp).to.have.ownProperty('lastParen'); + expect(RegExp).to.have.ownProperty('$&'); + }); + + it('has "leftContext" property', function () { + expect(RegExp).to.have.ownProperty('leftContext'); + expect(RegExp).to.have.ownProperty('$`'); + }); + + it('has "rightContext" property', function () { + expect(RegExp).to.have.ownProperty('rightContext'); + expect(RegExp).to.have.ownProperty("$'"); + }); + + it.skip('has "multiline" property', function () { + // fails in IE 9, 10, 11 + expect(RegExp).to.have.ownProperty('multiline'); + expect(RegExp).to.have.ownProperty('$*'); + }); + + it('has the right globals', function () { + var matchVars = [ + '$1', + '$2', + '$3', + '$4', + '$5', + '$6', + '$7', + '$8', + '$9' + ]; + matchVars.forEach(function (match) { + expect(RegExp).to.have.property(match); + }); + }); + + describe('updates RegExp globals', function () { + var str = 'abcdefghijklmnopq'; + var re; + beforeEach(function () { + re = /(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)/; + re.exec(str); + }); + + it('has "input"', function () { + expect(RegExp.input).to.equal(str); + expect(RegExp.$_).to.equal(str); + }); + + it('has "multiline"', function () { + if (Object.prototype.hasOwnProperty.call(RegExp, 'multiline')) { + expect(RegExp.multiline).to.equal(false); + } + if (Object.prototype.hasOwnProperty.call(RegExp, '$*')) { + expect(RegExp['$*']).to.equal(false); + } + }); + + it('has "lastMatch"', function () { + expect(RegExp.lastMatch).to.equal('bcdefghijklmnop'); + expect(RegExp['$&']).to.equal('bcdefghijklmnop'); + }); + + // in all but IE, this works. IE lastParen breaks after 11 tokens. + it.skip('has "lastParen"', function () { + expect(RegExp.lastParen).to.equal('p'); + expect(RegExp['$+']).to.equal('p'); + }); + it('has "lastParen" for less than 11 tokens', function () { + (/(b)(c)(d)/).exec('abcdef'); + expect(RegExp.lastParen).to.equal('d'); + expect(RegExp['$+']).to.equal('d'); + }); + + it('has "leftContext"', function () { + expect(RegExp.leftContext).to.equal('a'); + expect(RegExp['$`']).to.equal('a'); + }); + + it('has "rightContext"', function () { + expect(RegExp.rightContext).to.equal('q'); + expect(RegExp["$'"]).to.equal('q'); + }); + + it('has $1 - $9', function () { + expect(RegExp.$1).to.equal('b'); + expect(RegExp.$2).to.equal('c'); + expect(RegExp.$3).to.equal('d'); + expect(RegExp.$4).to.equal('e'); + expect(RegExp.$5).to.equal('f'); + expect(RegExp.$6).to.equal('g'); + expect(RegExp.$7).to.equal('h'); + expect(RegExp.$8).to.equal('i'); + expect(RegExp.$9).to.equal('j'); + }); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/set.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/set.js new file mode 100644 index 0000000..0e30c5c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/set.js @@ -0,0 +1,637 @@ +// Big thanks to V8 folks for test ideas. +// v8/test/mjsunit/harmony/collections.js + +var Assertion = expect().constructor; +Assertion.addMethod('theSameSet', function (otherArray) { + var array = this._obj; + + expect(Array.isArray(array)).to.equal(true); + expect(Array.isArray(otherArray)).to.equal(true); + + var diff = array.filter(function (value) { + return otherArray.every(function (otherValue) { + var areBothNaN = typeof value === 'number' && typeof otherValue === 'number' && value !== value && otherValue !== otherValue; + return !areBothNaN && value !== otherValue; + }); + }); + + this.assert( + diff.length === 0, + 'expected #{this} to be equal to #{exp} (as sets, i.e. no order)', + array, + otherArray + ); +}); + +var $iterator$ = typeof Symbol === 'function' ? Symbol.iterator : void 0; +if (!$iterator$ && typeof Set === 'function') { + $iterator$ = typeof Set['@@iterator'] === 'function' ? '@@iterator' : '_es6-shim iterator_'; +} + +Assertion.addMethod('iterations', function (expected) { + var iterator = this._obj[$iterator$](); + + expect(Array.isArray(expected)).to.equal(true); + var expectedValues = expected.slice(); + + var result; + do { + result = iterator.next(); + expect(result.value).to.eql(expectedValues.shift()); + } while (!result.done); +}); + +describe('Set', function () { + var functionsHaveNames = (function foo() {}).name === 'foo'; + var ifFunctionsHaveNamesIt = functionsHaveNames ? it : xit; + var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it; + + var range = function (from, to) { + var result = []; + for (var value = from; value < to; value++) { + result.push(value); + } + return result; + }; + + var prototypePropIsEnumerable = Object.prototype.propertyIsEnumerable.call(function () {}, 'prototype'); + var expectNotEnumerable = function (object) { + if (prototypePropIsEnumerable && typeof object === 'function') { + expect(Object.keys(object)).to.eql(['prototype']); + } else { + expect(Object.keys(object)).to.eql([]); + } + }; + + var Sym = typeof Symbol === 'undefined' ? {} : Symbol; + var isSymbol = function (sym) { + return typeof Sym === 'function' && typeof sym === 'symbol'; + }; + var ifSymbolIteratorIt = isSymbol(Sym.iterator) ? it : xit; + + var testSet = function (set, key) { + expect(set.has(key)).to.equal(false); + expect(set['delete'](key)).to.equal(false); + expect(set.add(key)).to.equal(set); + expect(set.has(key)).to.equal(true); + expect(set['delete'](key)).to.equal(true); + expect(set.has(key)).to.equal(false); + expect(set.add(key)).to.equal(set); // add it back + }; + + if (typeof Set === 'undefined') { + return it('exists', function () { + expect(typeof Set).to.equal('function'); + }); + } + + var set; + beforeEach(function () { + set = new Set(); + }); + + afterEach(function () { + set = null; + }); + + it('set iteration', function () { + expect(set.add('a')).to.equal(set); + expect(set.add('b')).to.equal(set); + expect(set.add('c')).to.equal(set); + expect(set.add('d')).to.equal(set); + + var keys = []; + var iterator = set.keys(); + keys.push(iterator.next().value); + expect(set['delete']('a')).to.equal(true); + expect(set['delete']('b')).to.equal(true); + expect(set['delete']('c')).to.equal(true); + expect(set.add('e')).to.equal(set); + keys.push(iterator.next().value); + keys.push(iterator.next().value); + + expect(iterator.next().done).to.equal(true); + expect(set.add('f')).to.equal(set); + expect(iterator.next().done).to.equal(true); + expect(keys).to.eql(['a', 'd', 'e']); + }); + + ifShimIt('is on the exported object', function () { + var exported = require('../'); + expect(exported.Set).to.equal(Set); + }); + + it('should exist in global namespace', function () { + expect(typeof Set).to.equal('function'); + }); + + it('has the right arity', function () { + expect(Set).to.have.property('length', 0); + }); + + it('returns the set from #add() for chaining', function () { + expect(set.add({})).to.equal(set); + }); + + it('should return false when deleting an item not in the set', function () { + expect(set.has('a')).to.equal(false); + expect(set['delete']('a')).to.equal(false); + }); + + it('should accept an iterable as argument', function () { + testSet(set, 'a'); + testSet(set, 'b'); + var set2 = new Set(set); + expect(set2.has('a')).to.equal(true); + expect(set2.has('b')).to.equal(true); + expect(set2).to.have.iterations(['a', 'b']); + }); + + it('accepts an array as an argument', function () { + var arr = ['a', 'b', 'c']; + var setFromArray = new Set(arr); + expect(setFromArray).to.have.iterations(['a', 'b', 'c']); + }); + + it('should not be callable without "new"', function () { + expect(Set).to['throw'](TypeError); + }); + + it('should be subclassable', function () { + if (!Object.setPrototypeOf) { return; } // skip test if on IE < 11 + var MySet = function MySet() { + var actualSet = new Set(['a', 'b']); + Object.setPrototypeOf(actualSet, MySet.prototype); + return actualSet; + }; + Object.setPrototypeOf(MySet, Set); + MySet.prototype = Object.create(Set.prototype, { + constructor: { value: MySet } + }); + + var mySet = new MySet(); + testSet(mySet, 'c'); + testSet(mySet, 'd'); + expect(mySet).to.have.iterations(['a', 'b', 'c', 'd']); + }); + + it('should has valid getter and setter calls', function () { + ['add', 'has', 'delete'].forEach(function (method) { + expect(function () { + set[method]({}); + }).to.not['throw'](); + }); + }); + + it('uses SameValueZero even on a Set of size > 4', function () { + var firstFour = [1, 2, 3, 4]; + var fourSet = new Set(firstFour); + expect(fourSet.size).to.equal(4); + expect(fourSet.has(-0)).to.equal(false); + expect(fourSet.has(0)).to.equal(false); + + fourSet.add(-0); + + expect(fourSet.size).to.equal(5); + expect(fourSet.has(0)).to.equal(true); + expect(fourSet.has(-0)).to.equal(true); + }); + + it('should work as expected', function () { + // Run this test twice, one with the "fast" implementation (which only + // allows string and numeric keys) and once with the "slow" impl. + [true, false].forEach(function (slowkeys) { + set = new Set(); + + range(1, 20).forEach(function (number) { + if (slowkeys) { testSet(set, {}); } + testSet(set, number); + testSet(set, number / 100); + testSet(set, 'key-' + number); + testSet(set, String(number)); + if (slowkeys) { testSet(set, Object(String(number))); } + }); + + var testkeys = [+0, Infinity, -Infinity, NaN]; + if (slowkeys) { + testkeys.push(true, false, null, undefined); + } + testkeys.forEach(function (number) { + testSet(set, number); + testSet(set, String(number)); + }); + testSet(set, ''); + + // -0 and +0 should be the same key (Set uses SameValueZero) + expect(set.has(-0)).to.equal(true); + expect(set['delete'](+0)).to.equal(true); + testSet(set, -0); + expect(set.has(+0)).to.equal(true); + + // verify that properties of Object don't peek through. + [ + 'hasOwnProperty', + 'constructor', + 'toString', + 'isPrototypeOf', + '__proto__', + '__parent__', + '__count__' + ].forEach(function (prop) { testSet(set, prop); }); + }); + }); + + describe('#size', function () { + it('returns the expected size', function () { + expect(set.add(1)).to.equal(set); + expect(set.add(5)).to.equal(set); + expect(set.size).to.equal(2); + }); + }); + + describe('#clear()', function () { + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.clear).to.have.property('name', 'clear'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('clear').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.clear).to.have.property('length', 0); + }); + + it('clears a Set with only primitives', function () { + expect(set.add(1)).to.equal(set); + expect(set.size).to.equal(1); + expect(set.add(5)).to.equal(set); + expect(set.size).to.equal(2); + expect(set.has(5)).to.equal(true); + set.clear(); + expect(set.size).to.equal(0); + expect(set.has(5)).to.equal(false); + }); + + it('clears a Set with primitives and objects', function () { + expect(set.add(1)).to.equal(set); + expect(set.size).to.equal(1); + var obj = {}; + expect(set.add(obj)).to.equal(set); + expect(set.size).to.equal(2); + expect(set.has(obj)).to.equal(true); + set.clear(); + expect(set.size).to.equal(0); + expect(set.has(obj)).to.equal(false); + }); + }); + + describe('#keys()', function () { + if (!Object.prototype.hasOwnProperty.call(Set.prototype, 'keys')) { + return it('exists', function () { + expect(Set.prototype).to.have.property('keys'); + }); + } + + it('is the same object as #values()', function () { + expect(Set.prototype.keys).to.equal(Set.prototype.values); + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.keys).to.have.property('name', 'values'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('keys').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.keys).to.have.property('length', 0); + }); + }); + + describe('#values()', function () { + if (!Object.prototype.hasOwnProperty.call(Set.prototype, 'values')) { + return it('exists', function () { + expect(Set.prototype).to.have.property('values'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.values).to.have.property('name', 'values'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('values').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.values).to.have.property('length', 0); + }); + + it('throws when called on a non-Set', function () { + var expectedMessage = /^(Method )?Set.prototype.values called on incompatible receiver |^values method called on incompatible |^Cannot create a Set value iterator for a non-Set object.$|^Set.prototype.values: 'this' is not a Set object$|^std_Set_iterator method called on incompatible \w+$/; + var nonSets = [true, false, 'abc', NaN, new Map([[1, 2]]), { a: true }, [1], Object('abc'), Object(NaN)]; + nonSets.forEach(function (nonSet) { + expect(function () { return Set.prototype.values.call(nonSet); }).to['throw'](TypeError, expectedMessage); + }); + }); + }); + + describe('#entries()', function () { + if (!Object.prototype.hasOwnProperty.call(Set.prototype, 'entries')) { + return it('exists', function () { + expect(Set.prototype).to.have.property('entries'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.entries).to.have.property('name', 'entries'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('entries').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.entries).to.have.property('length', 0); + }); + }); + + describe('#has()', function () { + if (!Object.prototype.hasOwnProperty.call(Set.prototype, 'has')) { + return it('exists', function () { + expect(Set.prototype).to.have.property('has'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.has).to.have.property('name', 'has'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('has').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.has).to.have.property('length', 1); + }); + }); + + it('should allow NaN values as keys', function () { + expect(set.has(NaN)).to.equal(false); + expect(set.has(NaN + 1)).to.equal(false); + expect(set.has(23)).to.equal(false); + expect(set.add(NaN)).to.equal(set); + expect(set.has(NaN)).to.equal(true); + expect(set.has(NaN + 1)).to.equal(true); + expect(set.has(23)).to.equal(false); + }); + + it('should not have [[Enumerable]] props', function () { + expectNotEnumerable(Set); + expectNotEnumerable(Set.prototype); + expectNotEnumerable(new Set()); + }); + + it('should not have an own constructor', function () { + var s = new Set(); + expect(s).not.to.haveOwnPropertyDescriptor('constructor'); + expect(s.constructor).to.equal(Set); + }); + + it('should allow common ecmascript idioms', function () { + expect(set instanceof Set).to.equal(true); + expect(typeof Set.prototype.add).to.equal('function'); + expect(typeof Set.prototype.has).to.equal('function'); + expect(typeof Set.prototype['delete']).to.equal('function'); + }); + + it('should have a unique constructor', function () { + expect(Set.prototype).to.not.equal(Object.prototype); + }); + + describe('has an iterator that works with Array.from', function () { + if (!Object.prototype.hasOwnProperty.call(Array, 'from')) { + return it('requires Array.from to exist', function () { + expect(Array).to.have.property('from'); + }); + } + + var values = [1, NaN, false, true, null, undefined, 'a']; + + it('works with the full set', function () { + expect(new Set(values)).to.have.iterations(values); + }); + + it('works with Set#keys()', function () { + expect(new Set(values).keys()).to.have.iterations(values); + }); + + it('works with Set#values()', function () { + expect(new Set(values).values()).to.have.iterations(values); + }); + + it('works with Set#entries()', function () { + expect(new Set(values).entries()).to.have.iterations([ + [1, 1], + [NaN, NaN], + [false, false], + [true, true], + [null, null], + [undefined, undefined], + ['a', 'a'] + ]); + }); + }); + + ifSymbolIteratorIt('has the right default iteration function', function () { + // fixed in Webkit https://bugs.webkit.org/show_bug.cgi?id=143838 + expect(Set.prototype).to.have.property(Sym.iterator, Set.prototype.values); + }); + + it('should preserve insertion order', function () { + var arr1 = ['d', 'a', 'b']; + var arr2 = [3, 2, 'z', 'a', 1]; + var arr3 = [3, 2, 'z', {}, 'a', 1]; + + [arr1, arr2, arr3].forEach(function (array) { + expect(new Set(array)).to.have.iterations(array); + }); + }); + + describe('#forEach', function () { + var setToIterate; + beforeEach(function () { + setToIterate = new Set(); + expect(setToIterate.add('a')).to.equal(setToIterate); + expect(setToIterate.add('b')).to.equal(setToIterate); + expect(setToIterate.add('c')).to.equal(setToIterate); + }); + + afterEach(function () { + setToIterate = null; + }); + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(Set.prototype.forEach).to.have.property('name', 'forEach'); + }); + + it('is not enumerable', function () { + expect(Set.prototype).ownPropertyDescriptor('forEach').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(Set.prototype.forEach).to.have.property('length', 1); + }); + + it('should be iterable via forEach', function () { + var expectedSet = ['a', 'b', 'c']; + var foundSet = []; + setToIterate.forEach(function (value, alsoValue, entireSet) { + expect(entireSet).to.equal(setToIterate); + expect(value).to.equal(alsoValue); + foundSet.push(value); + }); + expect(foundSet).to.eql(expectedSet); + }); + + it('should iterate over empty keys', function () { + var setWithEmptyKeys = new Set(); + var expectedKeys = [{}, null, undefined, '', NaN, 0]; + expectedKeys.forEach(function (key) { + expect(setWithEmptyKeys.add(key)).to.equal(setWithEmptyKeys); + }); + var foundKeys = []; + setWithEmptyKeys.forEach(function (value, key, entireSet) { + expect([key]).to.be.theSameSet([value]); // handles NaN correctly + expect(entireSet.has(key)).to.equal(true); + foundKeys.push(key); + }); + expect(foundKeys).to.be.theSameSet(expectedKeys); + }); + + it('should support the thisArg', function () { + var context = function () {}; + setToIterate.forEach(function () { + expect(this).to.equal(context); + }, context); + }); + + it('should have a length of 1', function () { + expect(Set.prototype.forEach.length).to.equal(1); + }); + + it('should not revisit modified keys', function () { + var hasModifiedA = false; + setToIterate.forEach(function (value, key) { + if (!hasModifiedA && key === 'a') { + expect(setToIterate.add('a')).to.equal(setToIterate); + hasModifiedA = true; + } else { + expect(key).not.to.equal('a'); + } + }); + }); + + it('visits keys added in the iterator', function () { + var hasAdded = false; + var hasFoundD = false; + setToIterate.forEach(function (value, key) { + if (!hasAdded) { + expect(setToIterate.add('d')).to.equal(setToIterate); + hasAdded = true; + } else if (key === 'd') { + hasFoundD = true; + } + }); + expect(hasFoundD).to.equal(true); + }); + + it('visits keys added in the iterator when there is a deletion (slow path)', function () { + var hasSeenFour = false; + var setToMutate = new Set(); + expect(setToMutate.add({})).to.equal(setToMutate); // force use of the slow O(N) implementation + expect(setToMutate.add('0')).to.equal(setToMutate); + setToMutate.forEach(function (value, key) { + if (key === '0') { + expect(setToMutate['delete']('0')).to.equal(true); + expect(setToMutate.add('4')).to.equal(setToMutate); + } else if (key === '4') { + hasSeenFour = true; + } + }); + expect(hasSeenFour).to.equal(true); + }); + + it('visits keys added in the iterator when there is a deletion (fast path)', function () { + var hasSeenFour = false; + var setToMutate = new Set(); + expect(setToMutate.add('0')).to.equal(setToMutate); + setToMutate.forEach(function (value, key) { + if (key === '0') { + expect(setToMutate['delete']('0')).to.equal(true); + expect(setToMutate.add('4')).to.equal(setToMutate); + } else if (key === '4') { + hasSeenFour = true; + } + }); + expect(hasSeenFour).to.equal(true); + }); + + it('does not visit keys deleted before a visit', function () { + var hasVisitedC = false; + var hasDeletedC = false; + setToIterate.forEach(function (value, key) { + if (key === 'c') { + hasVisitedC = true; + } + if (!hasVisitedC && !hasDeletedC) { + hasDeletedC = setToIterate['delete']('c'); + expect(hasDeletedC).to.equal(true); + } + }); + expect(hasVisitedC).to.equal(false); + }); + + it('should work after deletion of the current key', function () { + var expectedSet = { + a: 'a', + b: 'b', + c: 'c' + }; + var foundSet = {}; + setToIterate.forEach(function (value, key) { + foundSet[key] = value; + expect(setToIterate['delete'](key)).to.equal(true); + }); + expect(foundSet).to.eql(expectedSet); + }); + + it('should convert key -0 to +0', function () { + var zeroSet = new Set(); + var result = []; + expect(zeroSet.add(-0)).to.equal(zeroSet); + zeroSet.forEach(function (key) { + result.push(String(1 / key)); + }); + expect(zeroSet.add(1)).to.equal(zeroSet); + expect(zeroSet.add(0)).to.equal(zeroSet); // shouldn't cause reordering + zeroSet.forEach(function (key) { + result.push(String(1 / key)); + }); + expect(result.join(', ')).to.equal( + 'Infinity, Infinity, 1' + ); + }); + }); + + it('Set.prototype.size should throw TypeError', function () { + // see https://github.com/paulmillr/es6-shim/issues/176 + expect(function () { return Set.prototype.size; }).to['throw'](TypeError); + expect(function () { return Set.prototype.size; }).to['throw'](TypeError); + }); + + it.skip('should throw proper errors when user invokes methods with wrong types of receiver', function () { + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/string.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/string.js new file mode 100644 index 0000000..966060e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/string.js @@ -0,0 +1,929 @@ +var runStringTests = function (it) { + 'use strict'; + + var functionsHaveNames = (function foo() {}).name === 'foo'; + var ifFunctionsHaveNamesIt = functionsHaveNames ? it : it.skip; + var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it; + var hasSymbols = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' && typeof Symbol.iterator === 'symbol'; + var ifSymbolsDescribe = hasSymbols ? describe : describe.skip; + + describe('String', function () { + var hasStrictMode = (function () { return this === null; }.call(null)); + var testObjectCoercible = function (methodName) { + var fn = String.prototype[methodName]; + if (!hasStrictMode) { return; } // skip these tests on IE <= 10 + expect(function () { return fn.call(undefined); }).to['throw'](TypeError); + expect(function () { return fn.call(null); }).to['throw'](TypeError); + expect(function () { return fn.apply(undefined); }).to['throw'](TypeError); + expect(function () { return fn.apply(null); }).to['throw'](TypeError); + }; + + ifShimIt('is on the exported object', function () { + var exported = require('../'); + expect(exported.String).to.equal(String); + }); + + describe('#repeat()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'repeat')) { + return it('exists', function () { + expect(String.prototype).to.have.property('repeat'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.repeat).to.have.property('name', 'repeat'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('repeat').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(String.prototype.repeat).to.have.property('length', 1); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('repeat'); + }); + + it('should throw a RangeError when negative or infinite', function () { + expect(function negativeOne() { return 'test'.repeat(-1); }).to['throw'](RangeError); + expect(function infinite() { return 'test'.repeat(Infinity); }).to['throw'](RangeError); + }); + + it('should coerce to an integer', function () { + expect('test'.repeat(null)).to.eql(''); + expect('test'.repeat(false)).to.eql(''); + expect('test'.repeat('')).to.eql(''); + expect('test'.repeat(NaN)).to.eql(''); + expect('test'.repeat({})).to.eql(''); + expect('test'.repeat([])).to.eql(''); + expect('test'.repeat({ + valueOf: function () { return 2; } + })).to.eql('testtest'); + }); + it('should work', function () { + expect('test'.repeat(3)).to.eql('testtesttest'); + }); + it('should work on integers', function () { + expect(String.prototype.repeat.call(2, 3)).to.eql('222'); + }); + it('should work on booleans', function () { + expect(String.prototype.repeat.call(true, 3)).to.eql('truetruetrue'); + }); + it('should work on dates', function () { + var d = new Date(); + expect(String.prototype.repeat.call(d, 3)).to.eql([d, d, d].join('')); + }); + }); + + describe('#startsWith()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'startsWith')) { + return it('exists', function () { + expect(String.prototype).to.have.property('startsWith'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.startsWith).to.have.property('name', 'startsWith'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('startsWith').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + // WebKit nightly had this bug, fixed in https://bugs.webkit.org/show_bug.cgi?id=143659 + expect(String.prototype.startsWith).to.have.property('length', 1); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('startsWith'); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('startsWith'); + }); + + it('should be truthy on correct results', function () { + expect('test'.startsWith('te')).to.equal(true); + expect('test'.startsWith('st')).to.equal(false); + expect(''.startsWith('/')).to.equal(false); + expect('#'.startsWith('/')).to.equal(false); + expect('##'.startsWith('///')).to.equal(false); + + expect('abc'.startsWith('abc')).to.equal(true); + expect('abcd'.startsWith('abc')).to.equal(true); + expect('abc'.startsWith('a')).to.equal(true); + expect('abc'.startsWith('abcd')).to.equal(false); + expect('abc'.startsWith('bcde')).to.equal(false); + expect('abc'.startsWith('b')).to.equal(false); + expect('abc'.startsWith('abc', 0)).to.equal(true); + expect('abc'.startsWith('bc', 0)).to.equal(false); + expect('abc'.startsWith('bc', 1)).to.equal(true); + expect('abc'.startsWith('c', 1)).to.equal(false); + expect('abc'.startsWith('abc', 1)).to.equal(false); + expect('abc'.startsWith('c', 2)).to.equal(true); + expect('abc'.startsWith('d', 2)).to.equal(false); + expect('abc'.startsWith('dcd', 2)).to.equal(false); + expect('abc'.startsWith('a', NaN)).to.equal(true); + expect('abc'.startsWith('b', NaN)).to.equal(false); + expect('abc'.startsWith('ab', -43)).to.equal(true); + expect('abc'.startsWith('ab', -Infinity)).to.equal(true); + expect('abc'.startsWith('bc', -42)).to.equal(false); + expect('abc'.startsWith('bc', -Infinity)).to.equal(false); + if (hasStrictMode) { + expect(function () { + return ''.startsWith.call(null, 'nu'); + }).to['throw'](TypeError); + expect(function () { + return ''.startsWith.call(undefined, 'un'); + }).to['throw'](TypeError); + } + var myobj = { + toString: function () { return 'abc'; }, + startsWith: String.prototype.startsWith + }; + expect(myobj.startsWith('abc')).to.equal(true); + expect(myobj.startsWith('bc')).to.equal(false); + + var gotStr = false; + var gotPos = false; + + myobj = { + toString: function () { + expect(gotPos).to.equal(false); + gotStr = true; + return 'xyz'; + }, + startsWith: String.prototype.startsWith + }; + var idx = { + valueOf: function () { + expect(gotStr).to.equal(true); + gotPos = true; + return 42; + } + }; + myobj.startsWith('elephant', idx); + expect(gotPos).to.equal(true); + }); + + it('should handle large positions', function () { + expect('abc'.startsWith('a', 42)).to.equal(false); + expect('abc'.startsWith('a', Infinity)).to.equal(false); + }); + + it('should coerce to a string', function () { + expect('abcd'.startsWith({ toString: function () { return 'ab'; } })).to.equal(true); + expect('abcd'.startsWith({ toString: function () { return 'foo'; } })).to.equal(false); + }); + + it('should not allow a regex', function () { + expect(function () { return 'abcd'.startsWith(/abc/); }).to['throw'](TypeError); + expect(function () { return 'abcd'.startsWith(new RegExp('abc')); }).to['throw'](TypeError); + }); + + ifSymbolsDescribe('Symbol.match', function () { + if (!hasSymbols || !Symbol.match) { + return it('exists', function () { + expect(Symbol).to.have.property('match'); + }); + } + + it('allows a regex with Symbol.match set to a falsy value', function () { + var re = /a/g; + re[Symbol.match] = false; + expect(function () { return 'abcd'.startsWith(re); }).not.to['throw'](); + expect('abcd'.startsWith(re)).to.equal('abcd'.startsWith(String(re))); + }); + }); + }); + + describe('#endsWith()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'endsWith')) { + return it('exists', function () { + expect(String.prototype).to.have.property('endsWith'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.endsWith).to.have.property('name', 'endsWith'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('endsWith').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + // WebKit nightly had this bug, fixed in https://bugs.webkit.org/show_bug.cgi?id=143659 + expect(String.prototype.endsWith).to.have.property('length', 1); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('endsWith'); + }); + + it('should be truthy on correct results', function () { + expect('test'.endsWith('st')).to.equal(true); + expect('test'.endsWith('te')).to.equal(false); + expect(''.endsWith('/')).to.equal(false); + expect('#'.endsWith('/')).to.equal(false); + expect('##'.endsWith('///')).to.equal(false); + + expect('abc'.endsWith('abc')).to.equal(true); + expect('abcd'.endsWith('bcd')).to.equal(true); + expect('abc'.endsWith('c')).to.equal(true); + expect('abc'.endsWith('abcd')).to.equal(false); + expect('abc'.endsWith('bbc')).to.equal(false); + expect('abc'.endsWith('b')).to.equal(false); + expect('abc'.endsWith('abc', 3)).to.equal(true); + expect('abc'.endsWith('bc', 3)).to.equal(true); + expect('abc'.endsWith('a', 3)).to.equal(false); + expect('abc'.endsWith('bc', 3)).to.equal(true); + expect('abc'.endsWith('a', 1)).to.equal(true); + expect('abc'.endsWith('abc', 1)).to.equal(false); + expect('abc'.endsWith('b', 2)).to.equal(true); + expect('abc'.endsWith('d', 2)).to.equal(false); + expect('abc'.endsWith('dcd', 2)).to.equal(false); + expect('abc'.endsWith('bc', undefined)).to.equal(true); + expect('abc'.endsWith('bc', NaN)).to.equal(false); + if (hasStrictMode) { + expect(function () { + return ''.endsWith.call(null, 'ull'); + }).to['throw'](TypeError); + expect(function () { + return ''.endsWith.call(undefined, 'ned'); + }).to['throw'](TypeError); + } + + var myobj = { + toString: function () { return 'abc'; }, + endsWith: String.prototype.endsWith + }; + expect(myobj.endsWith('abc')).to.equal(true); + expect(myobj.endsWith('ab')).to.equal(false); + var gotStr = false; + var gotPos = false; + + myobj = { + toString: function () { + expect(gotPos).to.equal(false); + gotStr = true; + return 'xyz'; + }, + endsWith: String.prototype.endsWith + }; + var idx = { + valueOf: function () { + expect(gotStr).to.equal(true); + gotPos = true; + return 42; + } + }; + myobj.endsWith('elephant', idx); + expect(gotPos).to.equal(true); + }); + + it('should coerce to a string', function () { + expect('abcd'.endsWith({ toString: function () { return 'cd'; } })).to.equal(true); + expect('abcd'.endsWith({ toString: function () { return 'foo'; } })).to.equal(false); + }); + + it('should not allow a regex', function () { + expect(function () { return 'abcd'.endsWith(/abc/); }).to['throw'](TypeError); + expect(function () { return 'abcd'.endsWith(new RegExp('abc')); }).to['throw'](TypeError); + }); + + it('should handle negative and zero endPositions properly', function () { + expect('abcd'.endsWith('bcd', 0)).to.equal(false); + expect('abcd'.endsWith('bcd', -2)).to.equal(false); + expect('abcd'.endsWith('b', -2)).to.equal(false); + expect('abcd'.endsWith('ab', -2)).to.equal(false); + expect('abc'.endsWith('bc', -43)).to.equal(false); + expect('abc'.endsWith('bc', -Infinity)).to.equal(false); + }); + + it('should handle large endPositions properly', function () { + expect('abc'.endsWith('a', 42)).to.equal(false); + expect('abc'.endsWith('bc', Infinity)).to.equal(true); + expect('abc'.endsWith('a', Infinity)).to.equal(false); + }); + + ifSymbolsDescribe('Symbol.match', function () { + if (!hasSymbols || !Symbol.match) { + return it('exists', function () { + expect(Symbol).to.have.property('match'); + }); + } + + it('allows a regex with Symbol.match set to a falsy value', function () { + var re = /a/g; + re[Symbol.match] = false; + expect(function () { return 'abcd'.startsWith(re); }).not.to['throw'](); + expect('abcd'.endsWith(re)).to.equal('abcd'.endsWith(String(re))); + }); + }); + }); + + describe('#includes()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'includes')) { + return it('exists', function () { + expect(String.prototype).to.have.property('includes'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.includes).to.have.property('name', 'includes'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('includes').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + // WebKit nightly had this bug, fixed in https://bugs.webkit.org/show_bug.cgi?id=143659 + expect(String.prototype.includes).to.have.property('length', 1); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('includes'); + }); + + it('throws a TypeError when given a regex', function () { + expect(function () { 'foo'.includes(/a/g); }).to['throw'](TypeError); + }); + + it('should be truthy on correct results', function () { + expect('test'.includes('es')).to.equal(true); + expect('abc'.includes('a')).to.equal(true); + expect('abc'.includes('b')).to.equal(true); + expect('abc'.includes('abc')).to.equal(true); + expect('abc'.includes('bc')).to.equal(true); + expect('abc'.includes('d')).to.equal(false); + expect('abc'.includes('abcd')).to.equal(false); + expect('abc'.includes('ac')).to.equal(false); + expect('abc'.includes('abc', 0)).to.equal(true); + expect('abc'.includes('bc', 0)).to.equal(true); + expect('abc'.includes('de', 0)).to.equal(false); + expect('abc'.includes('bc', 1)).to.equal(true); + expect('abc'.includes('c', 1)).to.equal(true); + expect('abc'.includes('a', 1)).to.equal(false); + expect('abc'.includes('abc', 1)).to.equal(false); + expect('abc'.includes('c', 2)).to.equal(true); + expect('abc'.includes('d', 2)).to.equal(false); + expect('abc'.includes('dcd', 2)).to.equal(false); + expect('abc'.includes('ab', NaN)).to.equal(true); + expect('abc'.includes('cd', NaN)).to.equal(false); + + var myobj = { + toString: function () { return 'abc'; }, + includes: String.prototype.includes + }; + + expect(myobj.includes('abc')).to.equal(true); + expect(myobj.includes('cd')).to.equal(false); + + var gotStr = false; + var gotPos = false; + + myobj = { + toString: function () { + expect(gotPos).to.equal(false); + gotStr = true; + return 'xyz'; + }, + + includes: String.prototype.includes + }; + + var idx = { + valueOf: function () { + expect(gotStr).to.equal(true); + gotPos = true; + return 42; + } + }; + + myobj.includes('elephant', idx); + expect(gotPos).to.equal(true); + }); + + it('should handle large positions', function () { + expect('abc'.includes('a', 42)).to.equal(false); + expect('abc'.includes('a', Infinity)).to.equal(false); + }); + + it('should handle negative positions', function () { + expect('abc'.includes('ab', -43)).to.equal(true); + expect('abc'.includes('cd', -42)).to.equal(false); + expect('abc'.includes('ab', -Infinity)).to.equal(true); + expect('abc'.includes('cd', -Infinity)).to.equal(false); + }); + + it('should be falsy on incorrect results', function () { + expect('test'.includes('1290')).to.equal(false); + }); + + ifSymbolsDescribe('Symbol.match', function () { + if (!hasSymbols || !Symbol.match) { + return it('exists', function () { + expect(Symbol).to.have.property('match'); + }); + } + + it('allows a regex with Symbol.match set to a falsy value', function () { + var re = /a/g; + re[Symbol.match] = false; + expect(function () { return 'abcd'.includes(re); }).not.to['throw'](); + expect('abcd'.includes(re)).to.equal('abcd'.includes(String(re))); + }); + }); + }); + + describe('.fromCodePoint()', function () { + if (!Object.prototype.hasOwnProperty.call(String, 'fromCodePoint')) { + return it('exists', function () { + expect(String).to.have.property('fromCodePoint'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.fromCodePoint).to.have.property('name', 'fromCodePoint'); + }); + + it('is not enumerable', function () { + expect(String).ownPropertyDescriptor('fromCodePoint').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(String.fromCodePoint).to.have.property('length', 1); + }); + + it('throws a RangeError', function () { + var invalidValues = [ + 'abc', + {}, + -1, + 0x10FFFF + 1 + ]; + invalidValues.forEach(function (value) { + expect(function () { return String.fromCodePoint(value); }).to['throw'](RangeError); + }); + }); + + it('returns the empty string with no args', function () { + expect(String.fromCodePoint()).to.equal(''); + }); + + it('works', function () { + var codePoints = []; + var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789…?!'; + for (var i = 0; i < chars.length; ++i) { + codePoints.push(chars.charCodeAt(i)); + expect(String.fromCodePoint(chars.charCodeAt(i))).to.equal(chars[i]); + } + expect(String.fromCodePoint.apply(String, codePoints)).to.equal(chars); + }); + + it('works with unicode', function () { + expect(String.fromCodePoint(0x2500)).to.equal('\u2500'); + expect(String.fromCodePoint(0x010000)).to.equal('\ud800\udc00'); + expect(String.fromCodePoint(0x10FFFF)).to.equal('\udbff\udfff'); + }); + }); + + describe('#codePointAt()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'codePointAt')) { + return it('exists', function () { + expect(String.prototype).to.have.property('codePointAt'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.codePointAt).to.have.property('name', 'codePointAt'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('codePointAt').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(String.prototype.codePointAt).to.have.property('length', 1); + }); + + it('should throw a TypeError when called on null or undefined', function () { + testObjectCoercible('codePointAt'); + }); + + it('should work', function () { + var str = 'abc'; + expect(str.codePointAt(0)).to.equal(97); + expect(str.codePointAt(1)).to.equal(98); + expect(str.codePointAt(2)).to.equal(99); + }); + + it('should work with unicode', function () { + expect('\u2500'.codePointAt(0)).to.equal(0x2500); + expect('\ud800\udc00'.codePointAt(0)).to.equal(0x10000); + expect('\udbff\udfff'.codePointAt(0)).to.equal(0x10ffff); + expect('\ud800\udc00\udbff\udfff'.codePointAt(0)).to.equal(0x10000); + expect('\ud800\udc00\udbff\udfff'.codePointAt(1)).to.equal(0xdc00); + expect('\ud800\udc00\udbff\udfff'.codePointAt(2)).to.equal(0x10ffff); + expect('\ud800\udc00\udbff\udfff'.codePointAt(3)).to.equal(0xdfff); + }); + + it('should return undefined when pos is negative or too large', function () { + var str = 'abc'; + expect(str.codePointAt(-1)).to.equal(undefined); + expect(str.codePointAt(str.length)).to.equal(undefined); + }); + }); + + describe('#[Symbol.iterator]()', function () { + if (!Object.prototype.hasOwnProperty.call(Array, 'from')) { + return it('requires Array.from to test', function () { + expect(Array).to.have.property('from'); + }); + } + + it('should work with plain strings', function () { + var str = 'abc'; + expect(Array.from(str)).to.eql(['a', 'b', 'c']); + }); + + it('should work with surrogate characters', function () { + var str = '\u2500\ud800\udc00\udbff\udfff\ud800'; + expect(Array.from(str)).to.eql( + ['\u2500', '\ud800\udc00', '\udbff\udfff', '\ud800'] + ); + }); + }); + + describe('.raw()', function () { + if (!Object.prototype.hasOwnProperty.call(String, 'raw')) { + return it('exists', function () { + expect(String).to.have.property('raw'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.raw).to.have.property('name', 'raw'); + }); + + it('is not enumerable', function () { + expect(String).ownPropertyDescriptor('raw').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(String.raw).to.have.property('length', 1); + }); + + it('works with callSite.raw: Array', function () { + var callSite = {}; + + var str = 'The total is 10 ($11 with tax)'; + callSite.raw = ['The total is ', ' ($', ' with tax)']; + expect(String.raw(callSite, 10, 11)).to.eql(str); + + // eslint-disable-next-line no-template-curly-in-string + str = 'The total is {total} (${total * 1.01} with tax)'; + callSite.raw = ['The total is ', ' ($', ' with tax)']; + expect(String.raw(callSite, '{total}', '{total * 1.01}')).to.eql(str); + }); + + it('works with callSite.raw: array-like object', function () { + var callSite = {}; + + var str = 'The total is 10 ($11 with tax)'; + callSite.raw = { 0: 'The total is ', 1: ' ($', 2: ' with tax)', length: 3 }; + expect(String.raw(callSite, 10, 11)).to.eql(str); + + // eslint-disable-next-line no-template-curly-in-string + str = 'The total is {total} (${total * 1.01} with tax)'; + callSite.raw = { 0: 'The total is ', 1: ' ($', 2: ' with tax)', length: 3 }; + expect(String.raw(callSite, '{total}', '{total * 1.01}')).to.eql(str); + }); + + it('works with callSite.raw: empty Objects', function () { + var callSite = { raw: {} }; + expect(String.raw(callSite, '{total}', '{total * 1.01}')).to.eql(''); + expect(String.raw(callSite)).to.equal(''); + }); + + it('ReturnIfAbrupt - Less Substitutions', function () { + var callSite = { + raw: { 0: 'The total is ', 1: ' ($', 2: ' with tax)', length: 3 } + }; + var str = 'The total is 10 ($ with tax)'; + expect(String.raw(callSite, 10)).to.equal(str); + }); + }); + + describe('#trim()', function () { + if (!Object.prototype.hasOwnProperty.call(String.prototype, 'trim')) { + return it('exists', function () { + expect(String.prototype).to.have.property('trim'); + }); + } + + ifFunctionsHaveNamesIt('has the right name', function () { + expect(String.prototype.trim).to.have.property('name', 'trim'); + }); + + it('is not enumerable', function () { + expect(String.prototype).ownPropertyDescriptor('trim').to.have.property('enumerable', false); + }); + + it('has the right arity', function () { + expect(String.prototype.trim).to.have.property('length', 0); + }); + + it('should trim the correct characters', function () { + var whitespace = [ + '\u0009', + '\u000b', + '\u000c', + '\u0020', + '\u00a0', + '\u1680', + '\u2000', + '\u2001', + '\u2002', + '\u2003', + '\u2004', + '\u2005', + '\u2006', + '\u2007', + '\u2008', + '\u2009', + '\u200A', + '\u202f', + '\u205f', + '\u3000' + ].join(''); + + var lineTerminators = [ + '\u000a', + '\u000d', + '\u2028', + '\u2029' + ].join(''); + + var trimmed = (whitespace + lineTerminators).trim(); + expect(trimmed).to.have.property('length', 0); + expect(trimmed).to.equal(''); + }); + + it('should not trim U+0085', function () { + var trimmed = '\u0085'.trim(); + expect(trimmed).to.have.property('length', 1); + expect(trimmed).to.equal('\u0085'); + }); + + it('should trim on both sides', function () { + var trimmed = ' a '.trim(); + expect(trimmed).to.have.property('length', 1); + expect(trimmed).to.equal('a'); + }); + }); + + describe('#search()', function () { + it('works with strings', function () { + expect('abc'.search('a')).to.equal(0); + expect('abc'.search('b')).to.equal(1); + expect('abc'.search('c')).to.equal(2); + expect('abc'.search('d')).to.equal(-1); + }); + + it('works with regexes', function () { + expect('abc'.search(/a/)).to.equal(0); + expect('abc'.search(/b/)).to.equal(1); + expect('abc'.search(/c/)).to.equal(2); + expect('abc'.search(/d/)).to.equal(-1); + }); + + ifSymbolsDescribe('Symbol.search', function () { + it('is a symbol', function () { + expect(typeof Symbol.search).to.equal('symbol'); + }); + + if (!hasSymbols || typeof Symbol.search !== 'symbol') { + return; + } + + it('is nonconfigurable', function () { + expect(Symbol).ownPropertyDescriptor('search').to.have.property('configurable', false); + }); + + it('is nonenumerable', function () { + expect(Symbol).ownPropertyDescriptor('search').to.have.property('enumerable', false); + }); + + it('is nonwritable', function () { + expect(Symbol).ownPropertyDescriptor('search').to.have.property('writable', false); + }); + + it('is respected', function () { + var str = Object('a'); + var obj = {}; + obj[Symbol.search] = function (string) { return string === str && this === obj; }; + expect(str.search(obj)).to.equal(true); + }); + }); + }); + + describe('#replace()', function () { + it('works', function () { + expect('abcabc'.replace('c', 'd')).to.equal('abdabc'); + expect('abcabc'.replace(/c/, 'd')).to.equal('abdabc'); + expect('abcabc'.replace(/c/g, 'd')).to.equal('abdabd'); + expect('abcabc'.replace(/C/ig, 'd')).to.equal('abdabd'); + }); + + ifSymbolsDescribe('Symbol.replace', function () { + it('is a symbol', function () { + expect(typeof Symbol.replace).to.equal('symbol'); + }); + + if (!hasSymbols || typeof Symbol.replace !== 'symbol') { + return; + } + + it('is nonconfigurable', function () { + expect(Symbol).ownPropertyDescriptor('replace').to.have.property('configurable', false); + }); + + it('is nonenumerable', function () { + expect(Symbol).ownPropertyDescriptor('replace').to.have.property('enumerable', false); + }); + + it('is nonwritable', function () { + expect(Symbol).ownPropertyDescriptor('replace').to.have.property('writable', false); + }); + + it('respects Symbol.replace', function () { + var str = Object('a'); + var replaceVal = Object('replaceValue'); + var obj = {}; + obj[Symbol.replace] = function (string, replaceValue) { + return string === str && replaceValue === replaceVal && this === obj; + }; + expect(str.replace(obj, replaceVal)).to.equal(true); + }); + }); + }); + + describe('#split()', function () { + it('works', function () { + expect('abcabc'.split('b')).to.eql(['a', 'ca', 'c']); + expect('abcabc'.split('b', 2)).to.eql(['a', 'ca']); + expect('abcabc'.split(/b.?/)).to.eql(['a', 'a', '']); + expect('abcabc'.split(/b.?/, 2)).to.eql(['a', 'a']); + expect('abcabc'.split(/b/)).to.eql(['a', 'ca', 'c']); + expect('abcabc'.split(/b/, 2)).to.eql(['a', 'ca']); + expect('abcabc'.split(/b/g)).to.eql(['a', 'ca', 'c']); + expect('abcabc'.split(/b/g, 2)).to.eql(['a', 'ca']); + expect('abcabc'.split(/B/i)).to.eql(['a', 'ca', 'c']); + expect('abcabc'.split(/B/i, 2)).to.eql(['a', 'ca']); + expect('abcabc'.split(/B/gi)).to.eql(['a', 'ca', 'c']); + expect('abcabc'.split(/B/gi, 2)).to.eql(['a', 'ca']); + }); + + ifSymbolsDescribe('Symbol.split', function () { + it('is a symbol', function () { + expect(typeof Symbol.split).to.equal('symbol'); + }); + + if (!hasSymbols || typeof Symbol.split !== 'symbol') { + return; + } + + it('is nonconfigurable', function () { + expect(Symbol).ownPropertyDescriptor('split').to.have.property('configurable', false); + }); + + it('is nonenumerable', function () { + expect(Symbol).ownPropertyDescriptor('split').to.have.property('enumerable', false); + }); + + it('is nonwritable', function () { + expect(Symbol).ownPropertyDescriptor('split').to.have.property('writable', false); + }); + + it('respects Symbol.split', function () { + var str = Object('a'); + var limitVal = Object(42); + var obj = {}; + obj[Symbol.split] = function (string, limit) { return string === str && limit === limitVal && this === obj; }; + expect(str.split(obj, limitVal)).to.equal(true); + }); + }); + }); + + describe('#match()', function () { + it('works with a string', function () { + var str = 'abca'; + var match = str.match('a'); + expect(match.index).to.equal(0); + expect(match.input).to.equal(str); + expect(Array.prototype.slice.call(match)).to.eql(['a']); + }); + + it('works with a regex', function () { + var str = 'abca'; + var match = str.match(/a/); + expect(match.index).to.equal(0); + expect(match.input).to.equal(str); + expect(Array.prototype.slice.call(match)).to.eql(['a']); + }); + + ifSymbolsDescribe('Symbol.match', function () { + it('is a symbol', function () { + expect(typeof Symbol.match).to.equal('symbol'); + }); + + if (!hasSymbols || typeof Symbol.match !== 'symbol') { + return; + } + + it('is nonconfigurable', function () { + expect(Symbol).ownPropertyDescriptor('match').to.have.property('configurable', false); + }); + + it('is nonenumerable', function () { + expect(Symbol).ownPropertyDescriptor('match').to.have.property('enumerable', false); + }); + + it('is nonwritable', function () { + expect(Symbol).ownPropertyDescriptor('match').to.have.property('writable', false); + }); + + it('respects Symbol.match', function () { + var str = Object('a'); + var obj = {}; + obj[Symbol.match] = function (string) { return string === str && this === obj; }; + expect(str.match(obj)).to.equal(true); + }); + }); + }); + }); + + describe('Annex B', function () { + it('has #anchor', function () { + expect('foo'.anchor('bar"baz"')).to.equal('foo'); + }); + it('has #big', function () { + expect('foo'.big()).to.equal('foo'); + }); + it('has #blink', function () { + expect('foo'.blink()).to.equal('foo'); + }); + it('has #bold', function () { + expect('foo'.bold()).to.equal('foo'); + }); + it('has #fixed', function () { + expect('foo'.fixed()).to.equal('foo'); + }); + it('has #fontcolor', function () { + expect('foo'.fontcolor('blue"red"green')).to.equal('foo'); + }); + it('has #fontsize', function () { + expect('foo'.fontsize('10"large"small')).to.equal('foo'); + }); + it('has #italics', function () { + expect('foo'.italics()).to.equal('foo'); + }); + it('has #link', function () { + expect('foo'.link('url"http://"')).to.equal('foo'); + }); + it('has #small', function () { + expect('foo'.small()).to.equal('foo'); + }); + it('has #strike', function () { + expect('foo'.strike()).to.equal('foo'); + }); + it('has #sub', function () { + expect('foo'.sub()).to.equal('foo'); + }); + it('has #sup', function () { + expect('foo'.sup()).to.equal('foo'); + }); + }); +}; + +describe('clean Object.prototype', function () { + return runStringTests.call(this, it); +}); + +describe('polluted Object.prototype', function () { + var shimmedIt = function () { + /* eslint-disable no-extend-native */ + Object.prototype[1] = 42; + /* eslint-enable no-extend-native */ + it.apply(this, arguments); + delete Object.prototype[1]; + }; + shimmedIt.skip = it.skip; + return runStringTests.call(this, shimmedIt); +}); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/test_helpers.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/test_helpers.js new file mode 100644 index 0000000..0030701 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/test_helpers.js @@ -0,0 +1,17 @@ +/* global expect: true, assert: true, require, process */ + +expect = (function () { + var chai = require('chai'); + chai.config.includeStack = true; + return chai.expect; +}()); + +assert = (function () { + var chai = require('chai'); + chai.config.includeStack = true; + return chai.assert; +}()); + +if (typeof process === 'undefined' || !process.env.NO_ES6_SHIM) { + require('../'); +} diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-runner.workerjs b/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-runner.workerjs new file mode 100644 index 0000000..f443995 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-runner.workerjs @@ -0,0 +1,7 @@ +importScripts( + '../node_modules/es5-shim/es5-shim.js', + '../node_modules/es5-shim/es5-sham.js', + '../es6-shim.js' +); + +postMessage('ready'); diff --git a/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-test.js b/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-test.js new file mode 100644 index 0000000..cf914ca --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/es6-shim/test/worker-test.js @@ -0,0 +1,39 @@ +/* globals Worker, location */ + +describe('Worker', function () { + var workerErrorEventToError = function (errorEvent) { + var errorText = 'Error in Worker'; + if (errorEvent.filename !== undefined) { + errorText += ' ' + errorEvent.filename; + } + if (errorEvent.lineno !== undefined) { + errorText += '(' + errorEvent.lineno + ')'; + } + if (errorEvent.message !== undefined) { + errorText += ': ' + errorEvent.message; + } + return new Error(errorText); + }; + var canRunWorkerTestInCurrentContext = function () { + var workerConstructorExists = typeof Worker !== 'undefined'; + var locationPropertyExists = typeof location !== 'undefined'; + var runningOnFileUriScheme = locationPropertyExists && location.protocol === 'file:'; + + // The Worker constructor doesn't exist in some older browsers nor does it exist in non-browser contexts like Node. + // Additionally some browsers (at least Chrome) don't allow Workers over file URIs. + // To prevent false negative test failures in the cases where Workers are unavailable for either of those reasons + // we skip this test. + return workerConstructorExists && !runningOnFileUriScheme; + }; + + if (canRunWorkerTestInCurrentContext()) { + it('can import es6-shim', function (done) { + var worker = new Worker('worker-runner.workerjs'); + worker.addEventListener('error', function (errorEvent) { throw workerErrorEventToError(errorEvent); }); + worker.addEventListener('message', function (messageEvent) { + expect(messageEvent.data).to.eql('ready'); + done(); + }); + }); + } +}); diff --git a/src/p29-arduino-server/server/node_modules/escape-string-regexp/index.js b/src/p29-arduino-server/server/node_modules/escape-string-regexp/index.js new file mode 100644 index 0000000..7834bf9 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/escape-string-regexp/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/src/p29-arduino-server/server/node_modules/escape-string-regexp/license b/src/p29-arduino-server/server/node_modules/escape-string-regexp/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/escape-string-regexp/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/src/p29-arduino-server/server/node_modules/escape-string-regexp/package.json b/src/p29-arduino-server/server/node_modules/escape-string-regexp/package.json new file mode 100644 index 0000000..21f7664 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/escape-string-regexp/package.json @@ -0,0 +1,109 @@ +{ + "_args": [ + [ + { + "raw": "escape-string-regexp@^1.0.2", + "scope": null, + "escapedName": "escape-string-regexp", + "name": "escape-string-regexp", + "rawSpec": "^1.0.2", + "spec": ">=1.0.2 <2.0.0", + "type": "range" + }, + "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/chalk" + ] + ], + "_from": "escape-string-regexp@>=1.0.2 <2.0.0", + "_id": "escape-string-regexp@1.0.5", + "_inCache": true, + "_location": "/escape-string-regexp", + "_nodeVersion": "4.2.6", + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477" + }, + "_npmUser": { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + }, + "_npmVersion": "2.14.12", + "_phantomChildren": {}, + "_requested": { + "raw": "escape-string-regexp@^1.0.2", + "scope": null, + "escapedName": "escape-string-regexp", + "name": "escape-string-regexp", + "rawSpec": "^1.0.2", + "spec": ">=1.0.2 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/chalk" + ], + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "_shrinkwrap": null, + "_spec": "escape-string-regexp@^1.0.2", + "_where": "/Users/lallemand/src/JavaScript/Projets/Cours Design Génératif HETIC 2016/arduino-server/server/node_modules/chalk", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "dependencies": {}, + "description": "Escape RegExp special characters", + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "directories": {}, + "dist": { + "shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "engines": { + "node": ">=0.8.0" + }, + "files": [ + "index.js" + ], + "gitHead": "db124a3e1aae9d692c4899e42a5c6c3e329eaa20", + "homepage": "https://github.com/sindresorhus/escape-string-regexp", + "keywords": [ + "escape", + "regex", + "regexp", + "re", + "regular", + "expression", + "string", + "str", + "special", + "characters" + ], + "license": "MIT", + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "name": "escape-string-regexp", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "1.0.5" +} diff --git a/src/p29-arduino-server/server/node_modules/escape-string-regexp/readme.md b/src/p29-arduino-server/server/node_modules/escape-string-regexp/readme.md new file mode 100644 index 0000000..87ac82d --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/escape-string-regexp/readme.md @@ -0,0 +1,27 @@ +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +``` +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +const escapeStringRegexp = require('escape-string-regexp'); + +const escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> 'how much \$ for a unicorn\?' + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/src/p29-arduino-server/server/node_modules/firmata/changelog b/src/p29-arduino-server/server/node_modules/firmata/changelog new file mode 100644 index 0000000..a8193a1 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/changelog @@ -0,0 +1,10 @@ + +# 0.4.1 + +- [v0.4.1](https://github.com/jgautier/firmata/commit/cf1d4de658f273a062455bb6479d33c9197e5ef2) +- [Board: emit a "connect" event when transport opens; set isReady = true](https://github.com/jgautier/firmata/commit/70dcea3184abb4a7a0496404babbeba90d69cc76) +- [Board: module.exports Board class](https://github.com/jgautier/firmata/commit/6c8458b0a430a725f708095cf7b39572d8ffff98) +- [Board: rename sp -> transport](https://github.com/jgautier/firmata/commit/66d084d18141f8543f0c54cb0fb97b4fcc70d82a) +- [I2C: any i2c requests will throw if i2cConfig has not been called.](https://github.com/jgautier/firmata/commit/4fc710fad7ef6cf536cf96db0e163eb981682577) +- [ADXL345 example](https://github.com/jgautier/firmata/commit/fb18f5fdd62eb060a56f759ee6cfc041180f4c26) + diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/adxl345.js b/src/p29-arduino-server/server/node_modules/firmata/examples/adxl345.js new file mode 100644 index 0000000..b1c5d80 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/adxl345.js @@ -0,0 +1,49 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var register = { + POWER: 0x2D, + RANGE: 0x31, + READ: 0xB2, + }; + + var board = new Board(port.comName); + + board.on("ready", function() { + console.log("Ready"); + + var adxl345 = 0x53; + var sensitivity = 0.00390625; + + // Enable I2C + this.i2cConfig(); + + // Toggle power to reset + this.i2cWrite(adxl345, register.POWER, 0); + this.i2cWrite(adxl345, register.POWER, 8); + + // Set range (this is 2G range) + this.i2cWrite(adxl345, register.RANGE, 8); + + // Set register to READ position and request 6 bytes + this.i2cRead(adxl345, register.READ, 6, function(data) { + var x = (data[1] << 8) | data[0]; + var y = (data[3] << 8) | data[2]; + var z = (data[5] << 8) | data[4]; + + // Wrap and clamp 16 bits; + var X = (x >> 15 ? ((x ^ 0xFFFF) + 1) * -1 : x) * sensitivity; + var Y = (y >> 15 ? ((y ^ 0xFFFF) + 1) * -1 : y) * sensitivity; + var Z = (z >> 15 ? ((z ^ 0xFFFF) + 1) * -1 : z) * sensitivity; + + console.log("X: ", X); + console.log("Y: ", Y); + console.log("Z: ", Z); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/blink.js b/src/p29-arduino-server/server/node_modules/firmata/examples/blink.js new file mode 100644 index 0000000..ba838d1 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/blink.js @@ -0,0 +1,21 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + board.on("ready", function() { + var pin = 13; + var state = 1; + + board.pinMode(pin, board.MODES.OUTPUT); + + setInterval(function() { + board.digitalWrite(pin, (state ^= 1)); + }, 500); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/close-events.js b/src/p29-arduino-server/server/node_modules/firmata/examples/close-events.js new file mode 100644 index 0000000..d7186b4 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/close-events.js @@ -0,0 +1,15 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + board.on("close", function() { + // Unplug the board to see this event! + console.log("Closed!"); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/digital-read-pullup.js b/src/p29-arduino-server/server/node_modules/firmata/examples/digital-read-pullup.js new file mode 100644 index 0000000..a8b066a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/digital-read-pullup.js @@ -0,0 +1,21 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var pin = 3; + + console.log("Ready."); + + this.pinMode(pin, this.MODES.PULLUP); + this.pinMode(pin, this.MODES.INPUT); + this.digitalRead(pin, function(value) { + console.log(value); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/etherport.js b/src/p29-arduino-server/server/node_modules/firmata/examples/etherport.js new file mode 100644 index 0000000..9769461 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/etherport.js @@ -0,0 +1,14 @@ +var Board = require("../"); +var EtherPort = require("etherport"); +var board = new Board(new EtherPort(3030)); + +board.on("ready", function() { + var pin = 2; + var state = 1; + + board.pinMode(pin, board.MODES.OUTPUT); + + setInterval(function() { + board.digitalWrite(pin, (state ^= 1)); + }, 500); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/hw-serial-read-gps.js b/src/p29-arduino-server/server/node_modules/firmata/examples/hw-serial-read-gps.js new file mode 100644 index 0000000..86680e7 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/hw-serial-read-gps.js @@ -0,0 +1,43 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + board.on("ready", function() { + console.log("READY"); + + var HW_SERIAL1 = board.SERIAL_PORT_IDs.HW_SERIAL1; + var maxBytesToRead = 4; + + board.serialConfig({ + portId: HW_SERIAL1, + baud: 9600 + }); + + // leave 2nd parameter (maxBytesToRead) to read all available bytes in buffer + // board.serialRead(HW_SERIAL1, maxBytesToRead, function(data) { + board.serialRead(HW_SERIAL1, function(data) { + console.log(new Buffer(data).toString("ascii")); + }); + + board.on("string", function (message) { + console.log(message); + }); + + // log serial pin numbers + for (var pin in board.pins) { + var modes = board.pins[pin].supportedModes; + for (var mode in modes) { + if (modes[mode] === board.MODES.SERIAL) { + console.log("serial pin: " + pin); + } + } + } + + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/johnny-five-io-plugin.js b/src/p29-arduino-server/server/node_modules/firmata/examples/johnny-five-io-plugin.js new file mode 100644 index 0000000..d39bf1b --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/johnny-five-io-plugin.js @@ -0,0 +1,28 @@ +var SerialPort = require("serialport"); +var five = require("johnny-five"); +var Firmata = require("../"); + +SerialPort.list(function(error, list) { + var device = list.reduce(function(accum, item) { + if (item.manufacturer.indexOf("Arduino") === 0) { + return item; + } + return accum; + }, null); + + + /* + The following demonstrates using Firmata + as an IO Plugin for Johnny-Five + */ + + var board = new five.Board({ + io: new Firmata(device.comName) + }); + + board.on("ready", function() { + var led = new five.Led(13); + led.blink(500); + }); +}); + diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/k22.js b/src/p29-arduino-server/server/node_modules/firmata/examples/k22.js new file mode 100644 index 0000000..6575075 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/k22.js @@ -0,0 +1,33 @@ +/** + * Sample script to take readings from a k22 co2 sensor. + * http://www.co2meter.com/collections/co2-sensors/products/k-22-oc-co2-sensor-module + */ + +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var k22 = 0x68; + + board.i2cConfig(); + board.i2cWrite(k22, [0x22, 0x00, 0x08, 0x2A]); + board.i2cRead(k22, 4, function(data) { + var ppms = 0; + ppms |= data[1] & 0xFF; + ppms = ppms << 8; + ppms |= data[2] & 0xFF; + var checksum = data[0] + data[1] + data[2]; + if (checksum === data[3]) { + console.log("Current PPMs: " + ppms); + } else { + console.log("Checksum failure"); + } + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/lsm303dlhc.js b/src/p29-arduino-server/server/node_modules/firmata/examples/lsm303dlhc.js new file mode 100644 index 0000000..20c4c9f --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/lsm303dlhc.js @@ -0,0 +1,60 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var register = { + POWER: 0x20, + RANGE: 0x31, + ACCELEROMETER_READ: 0x28, + }; + + var board = new Board(port.comName); + + board.on("ready", function() { + console.log("Ready"); + + var buffer = new Buffer(6); + var lsm303 = 0x19; + var sensitivity = 0.001; + var gravity = 9.80665; // m/s^2 + + // Enable I2C + this.i2cConfig(); + + // Power up and enable the accelerometer + this.i2cWrite(lsm303, register.POWER, 0x57); + + + // Set range (this is 2G range) + // this.i2cWrite(lsm303, register.RANGE, 8); + + // Set register to ACCELEROMETER_READ (with subaddress updating) and request 6 bytes + this.i2cRead(lsm303, register.ACCELEROMETER_READ | (1 << 7), 6, function(data) { + + // buffer.splice(0, 6, (data) + // These come out LSB first... + var x = (data[1] << 8) | data[0]; + var y = (data[3] << 8) | data[2]; + var z = (data[5] << 8) | data[4]; + + var X = x * sensitivity * gravity; + var Y = y * sensitivity * gravity; + var Z = z * sensitivity * gravity; + + console.log("X: ", X); + console.log("Y: ", Y); + console.log("Z: ", Z); + + this.i2cStop(lsm303); + }.bind(this)); + }); + + process.on("SIGINT", _ => { + board.reset(); + process.exit(); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/mma8452.js b/src/p29-arduino-server/server/node_modules/firmata/examples/mma8452.js new file mode 100644 index 0000000..bc96227 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/mma8452.js @@ -0,0 +1,104 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var register = { + CTRL_REG1: 0x2A, + XYZ_DATA_CFG: 0x0E, + READ_X_MSB: 0x01, + }; + + var board = new Board(port.comName); + // var board = new Board("/dev/cu.usbmodem1411"); + + board.on("ready", function() { + console.log("Ready"); + + var mma8452 = 0x1D; + var scale = 2; // 2G + var options = { + address: mma8452, + settings: { + stopTX: false, + }, + }; + + this.i2cConfig(options); + + function mode(which, callback) { + board.i2cReadOnce(mma8452, register.CTRL_REG1, 1, function(data) { + var value = data[0]; + if (which === "standby") { + // Clear the first bit + value &= ~1; + } else { + // Set the first bit + value |= 1; + } + + board.i2cWrite(mma8452, register.CTRL_REG1, value); + + callback(); + }); + } + + new Promise(function(resolve) { + mode("standby", function() { + + // 00: 2G (0b00000000) + // 01: 4G (0b00000001) + // 10: 8G (0b00000010) + var fsr = scale >> 2; // 2G (0b00000000) + board.i2cWrite(mma8452, register.XYZ_DATA_CFG, fsr); + + // 0: 800 Hz + // 1: 400 Hz + // 2: 200 Hz * + // 3: 100 Hz + // 4: 50 Hz + // 5: 12.5 Hz + // 6: 6.25 Hz + // 7: 1.56 Hz + var ctrlreg1 = 0b00000101 << 3; // 5 0b00[101]000 + board.i2cWrite(mma8452, register.CTRL_REG1, ctrlreg1); + + mode("active", resolve); + }); + }).then(function() { + + board.i2cRead(mma8452, 0x00, 1, function(data) { + var available = data[0]; + + if ((available & 0x08) >> 3) { + board.i2cReadOnce(mma8452, register.READ_X_MSB, 6, function(data) { + var x = (data[0] << 8 | data[1]) >> 4; + var y = (data[2] << 8 | data[3]) >> 4; + var z = (data[4] << 8 | data[5]) >> 4; + + if (data[0] > 0x7F) { + x = -(1 + 0xFFF - x); + } + + if (data[2] > 0x7F) { + y = -(1 + 0xFFF - y); + } + + if (data[4] > 0x7F) { + z = -(1 + 0xFFF - z); + } + + console.log({ + x: x / ((1 << 12) / (2 * scale)), + y: y / ((1 << 12) / (2 * scale)), + z: z / ((1 << 12) / (2 * scale)), + }); + }); + } + }); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/ping-read.js b/src/p29-arduino-server/server/node_modules/firmata/examples/ping-read.js new file mode 100644 index 0000000..31747d3 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/ping-read.js @@ -0,0 +1,28 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var settings = { + pin: 3, + value: 1, + pulseOut: 5 + }; + + var continuousRead = function() { + this.pingRead(settings, function(duration) { + console.log(duration); + + setTimeout(continuousRead, 50); + }); + }.bind(this); + + continuousRead(); + }); +}); + diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized-0.3.3.js b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized-0.3.3.js new file mode 100644 index 0000000..ad899a4 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized-0.3.3.js @@ -0,0 +1,30 @@ +var Board = require("../").Board; + +var board = new Board("/dev/cu.usbmodem1411", function() { + console.log(board.pins[8].value === 1 ? "PASS" : "FAIL"); +}); +// Board.requestPort(function(error, port) { +// if (error) { +// console.log(error); +// return; +// } +// var board = new Board(port.comName, { +// // reportInitialState: true +// }); + +// board.on("ready", function() { +// // var a = 7; +// // var b = 8; + +// // console.log("Pin 7 is %s (Expected LOW)", this.pins[a].value === 0 ? "LOW" : "HIGH"); +// // console.log("Pin 8 is %s (Expected HIGH)", this.pins[b].value === 1 ? "HIGH" : "LOW"); + +// // this.pins.forEach(pin => console.log(pin.value)); + +// // this.on("report-initial-state", data => console.log(data)); + + +// this.pinMode(8, this.MODES.INPUT); +// this.digitalRead(8, state => console.log(state)); +// }); +// }); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized.js b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized.js new file mode 100644 index 0000000..7c2f3a7 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-all-initialized.js @@ -0,0 +1,28 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName, { + captureInitialState: true + }); + + board.on("ready", function() { + var a = 7; + var b = 8; + + console.log("Pin 7 is %s (Expected LOW)", this.pins[a].value === 0 ? "LOW" : "HIGH"); + console.log("Pin 8 is %s (Expected HIGH)", this.pins[b].value === 1 ? "HIGH" : "LOW"); + + this.pins.forEach(pin => console.log(pin.value)); + + // this.on("report-initial-state", data => console.log(data)); + + + // this.pinMode(8, this.MODES.INPUT); + // this.digitalRead(8, state => console.log(state)); + process.exit(); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-analog.js b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-analog.js new file mode 100644 index 0000000..bb5ce82 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-analog.js @@ -0,0 +1,48 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var a = 6; + var b = 7; + + console.log("Ready."); + + this.pinMode(a, this.MODES.PWM); + this.pinMode(b, this.MODES.OUTPUT); + + var states = { + 5: 0, + 8: 0 + }; + + Object.keys(states).forEach(function(pin) { + pin = +pin; + this.pinMode(pin, this.MODES.INPUT); + this.digitalRead(pin, function(value) { + console.log("pin: %d value: %d", pin, value); + if (states[pin] !== value) { + states[pin] = value; + this.digitalWrite(b, value); + } + }); + }, this); + + // var analogs = [0, 1, 2, 3, 4, 5]; + var analogs = [3]; + + analogs.forEach(function(pin) { + pin = +pin; + this.pinMode(pin, this.MODES.ANALOG); + this.analogRead(pin, function(value) { + this.analogWrite(a, value >> 2); + }); + }, this); + + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-and-writing.js b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-and-writing.js new file mode 100644 index 0000000..22ed36a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting-and-writing.js @@ -0,0 +1,24 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + board.pinMode(8, board.MODES.OUTPUT); + board.pinMode(10, board.MODES.INPUT); + board.digitalRead(10, function(data) { + + console.log(data); + + console.log(board.ports[1]); + + // done(); + }); + board.digitalWrite(8, 0); + board.digitalWrite(8, 1); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/reporting.js b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting.js new file mode 100644 index 0000000..bb5ce82 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/reporting.js @@ -0,0 +1,48 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var a = 6; + var b = 7; + + console.log("Ready."); + + this.pinMode(a, this.MODES.PWM); + this.pinMode(b, this.MODES.OUTPUT); + + var states = { + 5: 0, + 8: 0 + }; + + Object.keys(states).forEach(function(pin) { + pin = +pin; + this.pinMode(pin, this.MODES.INPUT); + this.digitalRead(pin, function(value) { + console.log("pin: %d value: %d", pin, value); + if (states[pin] !== value) { + states[pin] = value; + this.digitalWrite(b, value); + } + }); + }, this); + + // var analogs = [0, 1, 2, 3, 4, 5]; + var analogs = [3]; + + analogs.forEach(function(pin) { + pin = +pin; + this.pinMode(pin, this.MODES.ANALOG); + this.analogRead(pin, function(value) { + this.analogWrite(a, value >> 2); + }); + }, this); + + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/servo-config.js b/src/p29-arduino-server/server/node_modules/firmata/examples/servo-config.js new file mode 100644 index 0000000..f8cfebb --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/servo-config.js @@ -0,0 +1,20 @@ +var Board = require("../lib/firmata").Board; +var board = new Board("/dev/tty.usbmodem1421"); + +board.on("ready", function() { + var degrees = 10; + var incrementer = 10; + + // This will map 0-180 to 1000-1500 + board.servoConfig(9, 1000, 1500); + board.servoWrite(9, 0); + + setInterval(function() { + if (degrees >= 180 || degrees === 0) { + incrementer *= -1; + } + degrees += incrementer; + board.servoWrite(9, degrees); + console.log(degrees); + }, 500); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/servosweep.js b/src/p29-arduino-server/server/node_modules/firmata/examples/servosweep.js new file mode 100644 index 0000000..cfbc4e2 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/servosweep.js @@ -0,0 +1,23 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + var degrees = 10; + var incrementer = 10; + board.pinMode(9, board.MODES.SERVO); + board.servoWrite(9, 0); + setInterval(function() { + if (degrees >= 180 || degrees === 0) { + incrementer *= -1; + } + degrees += incrementer; + board.servoWrite(9, degrees); + }, 500); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sp-streams.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sp-streams.js new file mode 100644 index 0000000..bd982c4 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sp-streams.js @@ -0,0 +1,15 @@ +// var Board = require("../lib/firmata").Board; +// var SerialPort = require("serialport").SerialPort; +// var board = new Board("/dev/cu.usbmodem1411"); + + +var SerialPort = require("serialport").SerialPort; +var options = { + comname: "/dev/cu.usbmodem1411", + baudRate: 57600, + bufferSize: 1 +}; +var sp = new SerialPort(options); + +console.log(sp); +// sp.open(options); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sp.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sp.js new file mode 100644 index 0000000..7a5bf40 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sp.js @@ -0,0 +1,10 @@ +var SerialPort = require("serialport").SerialPort; + +var sp = new SerialPort("/dev/cu.usbmodem1421", { + baudRate: 57600, + bufferSize: 1 +}); + +sp.on("open", function(data) { + console.log(this === sp); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-read-gps.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-read-gps.js new file mode 100644 index 0000000..019d8ba --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-read-gps.js @@ -0,0 +1,27 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + var board = new Board(port.comName); + + board.on("ready", function() { + console.log("READY"); + + var SW_SERIAL0 = board.SERIAL_PORT_IDs.SW_SERIAL0; + var maxBytesToRead = 4; + + board.serialConfig({ + portId: SW_SERIAL0, + baud: 9600, + rxPin: 10, + txPin: 11 + }); + + board.serialRead(SW_SERIAL0, maxBytesToRead, function(data) { + console.log(new Buffer(data).toString("ascii")); + }); + }); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-test-basic.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-test-basic.js new file mode 100644 index 0000000..088d37a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-test-basic.js @@ -0,0 +1,55 @@ +/* + Functional test for Firmata software serial. + + Step 1 (main board): + Install the serial branch of Firmata: https://github.com/firmata/arduino/tree/serial + Compile and upload StandardFirmata from the serial branch to an Arduino board + + Step 2 (serial test board - the mock serial peripheral device): + Compile and upload the following on an Arduino Uno or similar board: + https://gist.github.com/soundanalogous/3c21496ce3f1a1af2235 + + Step 3: + Wire the TX pin of the serial test board to pin 10 of the main board + Wire the RX pin of the serial test board to pin 11 of the main board + Wire GND between both boards + Power the serial test board from an external power source + [optional] - prepare another serial test board and wire TX to pin 12 and RX to pin 13 + + Step 4: + If you have an FTDI cable or similar (I use Adafruit console cable), wire the cable TX wire + (green wire if using an Adafruit console cable) to the serial test board pin 10 and wire the RX + wire to the serial test board pin 11. This will enable you to view data written to the serial test + board. + + Step 5: + Run this node js file. It should continuously print 0 - 255 to the node console. +*/ + + +var Board = require("../lib/firmata").Board; +var board = new Board("/dev/tty.usbmodem1411"); + +board.on("ready", function() { + console.log("READY"); + + var swSerial0 = board.SERIAL_PORT_IDs.SW_SERIAL0; + + // since swSerial0 is last configed, it will be the current listening port + board.serialConfig({ + portId: swSerial0, + baud: 9600, + bytesToRead: 4, + rxPin: 10, + txPin: 11 + }); + + var logSerial0Data = function (data) { + // board.serialFlush(swSerial0); + console.log(new Buffer(data).toString("ascii")); + }; + + + board.serialRead(swSerial0, logSerial0Data); + +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-from-analog-in.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-from-analog-in.js new file mode 100644 index 0000000..a5fc859 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-from-analog-in.js @@ -0,0 +1,46 @@ +var Board = require("../lib/firmata").Board; +var board = new Board("/dev/tty.usbmodem1421"); + +board.on("ready", function() { + var SW_SERIAL0 = board.SERIAL_PORT_IDs.SW_SERIAL0; + var last = 0; + + board.serialConfig({ + portId: SW_SERIAL0, + baud: 9600, + bytesToRead: 0, + rxPin: 10, + txPin: 11 + }); + + board.analogRead(0, function(value) { + var pulse = scale(value, 0, 1023, 1000, 2000) | 0; + + if (last !== pulse) { + console.log(pulse); + position(0, pulse); + // position(1, pulse); + } + last = pulse; + }); + + function position(channel, pulse) { + var target = pulse < 4000 ? pulse * 4 : pulse; + + var data = [ + 0x84, + channel, + target & 0x7F, + (target >> 7) & 0x7F + ]; + + board.serialWrite(SW_SERIAL0, data); + } + + position(1, 1500); +}); + +function scale(value, fromLow, fromHigh, toLow, toHigh) { + return (value - fromLow) * (toHigh - toLow) / + (fromHigh - fromLow) + toLow; +} diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-meastro-6.js b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-meastro-6.js new file mode 100644 index 0000000..5bef8f0 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/sw-serial-write-meastro-6.js @@ -0,0 +1,65 @@ +var Board = require("../lib/firmata").Board; +var board = new Board("/dev/cu.usbmodem1411"); + +board.on("ready", function() { + console.log("ready"); + var SW_SERIAL0 = board.SERIAL_PORT_IDs.SW_SERIAL0; + + board.serialConfig({ + portId: SW_SERIAL0, + baud: 9600, + bytesToRead: 0, + rxPin: 10, + txPin: 11 + }); + + var commands = [ + // "#0 P1500 T100", + // "#0 P2400 T500", + // "#0 P600 T1000", + // "#0 P2400 T1000", + // "#0 P1500 T100", + "0 4000 1000", + "0 6000 1000", + "0 8000 1000", + ]; + + + var index = 0; + + function update() { + var command = commands[index]; + var data = command.split(" ").map(Number); + var delay = data[2]; + // var delay = Number(/T(\d.+)/.exec(command)[1]); + // var data = command.split("").map(function(character) { + // return character.charCodeAt(0); + // }); + + // Add lf, cr + // data.push(10, 13); + // board.serialWrite(SW_SERIAL0, data1; + + position(data[0], data[1]); + + + index++; + + if (index === commands.length) { + index = 0; + } + + setTimeout(update, delay); + } + + function position(channel, target) { + var data = [ + 0x84, + channel & 0x7F, target & 0x7F, (target >> 7) & 0x7F ]; + + board.serialWrite(SW_SERIAL0, data); + } + + + update(); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/test-analog-read.js b/src/p29-arduino-server/server/node_modules/firmata/examples/test-analog-read.js new file mode 100644 index 0000000..1a45b2b --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/test-analog-read.js @@ -0,0 +1,48 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + console.log(__filename); + console.log("------------------------------"); + + board.on("open", function() { + console.log(" ✔ open"); + }); + + board.on("reportversion", function() { + console.log(" ✔ reportversion"); + }); + + board.on("queryfirmware", function() { + console.log(" ✔ queryfirmware"); + }); + + board.on("capability-query", function() { + console.log(" ✔ capability-query"); + }); + + board.on("ready", function() { + console.log(" ✔ ready"); + clearTimeout(timeout); + + this.pinMode(0, 2); + this.analogRead(0, function() { + console.log(" ✔ received data (exiting)"); + console.log("------------------------------"); + process.exit(); + }); + }); + + var timeout = setTimeout(function() { + console.log(board.currentBuffer); + console.log(">>>>>>>>>>>>>>TIMEOUT<<<<<<<<<<<<<<"); + console.log("------------------------------"); + process.exit(); + }, 10000); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/test-i2c-read.js b/src/p29-arduino-server/server/node_modules/firmata/examples/test-i2c-read.js new file mode 100644 index 0000000..a68d775 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/test-i2c-read.js @@ -0,0 +1,48 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + console.log(__filename); + console.log("------------------------------"); + + board.on("open", function() { + console.log(" ✔ open"); + }); + + board.on("reportversion", function() { + console.log(" ✔ reportversion"); + }); + + board.on("queryfirmware", function() { + console.log(" ✔ queryfirmware"); + }); + + board.on("capability-query", function() { + console.log(" ✔ capability-query"); + }); + + board.on("ready", function() { + console.log(" ✔ ready"); + clearTimeout(timeout); + + this.i2cConfig(); + this.i2cRead(0x0A, 1, function() { + console.log(" ✔ received data (exiting)"); + console.log("------------------------------"); + process.exit(); + }); + }); + + var timeout = setTimeout(function() { + console.log(board.currentBuffer); + console.log(">>>>>>>>>>>>>>TIMEOUT<<<<<<<<<<<<<<"); + console.log("------------------------------"); + process.exit(); + }, 10000); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/examples/test-serial-read.js b/src/p29-arduino-server/server/node_modules/firmata/examples/test-serial-read.js new file mode 100644 index 0000000..858a420 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/examples/test-serial-read.js @@ -0,0 +1,56 @@ +var Board = require("../"); + +Board.requestPort(function(error, port) { + if (error) { + console.log(error); + return; + } + + var board = new Board(port.comName); + + console.log(__filename); + console.log("------------------------------"); + + board.on("open", function() { + console.log(" ✔ open"); + }); + + board.on("reportversion", function() { + console.log(" ✔ reportversion"); + }); + + board.on("queryfirmware", function() { + console.log(" ✔ queryfirmware"); + }); + + board.on("capability-query", function() { + console.log(" ✔ capability-query"); + }); + + board.on("ready", function() { + console.log(" ✔ ready"); + clearTimeout(timeout); + + var SW_SERIAL0 = this.SERIAL_PORT_IDs.SW_SERIAL0; + + this.serialConfig({ + portId: SW_SERIAL0, + baud: 9600, + rxPin: 2, + txPin: 3 + }); + + this.serialRead(SW_SERIAL0, function(data) { + console.log(" ✔ received data (exiting)"); + console.log("------------------------------"); + process.exit(); + }); + }); + + var timeout = setTimeout(function() { + console.log(board.currentBuffer); + console.log(">>>>>>>>>>>>>>TIMEOUT<<<<<<<<<<<<<<"); + console.log("------------------------------"); + process.exit(); + }, 10000); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/lib/com.js b/src/p29-arduino-server/server/node_modules/firmata/lib/com.js new file mode 100644 index 0000000..c5e862c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/lib/com.js @@ -0,0 +1,61 @@ +var Emitter = require("events").EventEmitter; + +function Mock(path) { + this.isClosed = false; +} + +Mock.prototype = Object.create(Emitter.prototype, { + constructor: { + value: Mock + } +}); + +Mock.prototype.write = function (buffer) { + // Tests are written to work with arrays not buffers + // this shouldn"t impact the data, just the container + // This also should be changed in future test rewrites + if (Buffer.isBuffer(buffer)) { + buffer = Array.prototype.slice.call(buffer, 0); + } + + this.lastWrite = buffer; + this.emit("write", buffer); +}; + +Mock.prototype.close = function () { + this.isClosed = true; +}; + +var com; +var sp; +var stub = { + SerialPort: Mock, + list: function() {}, +}; + +try { + if (process.browser || parseFloat(process.versions.nw) >= 0.13) { + com = require("browser-serialport"); + } else { + if (process.env.IS_TEST_MODE) { + com = stub; + } else { + sp = require("serialport"); + com = { + SerialPort: sp, + list: sp.list, + }; + } + } +} catch (err) {} + +if (com == null) { + if (process.env.IS_TEST_MODE) { + com = stub; + } else { + console.log("It looks like serialport didn't compile properly. This is a common problem and its fix is well documented here https://github.com/voodootikigod/node-serialport#to-install"); + throw "Missing serialport dependency"; + } +} + +module.exports = com; diff --git a/src/p29-arduino-server/server/node_modules/firmata/lib/encoder7bit.js b/src/p29-arduino-server/server/node_modules/firmata/lib/encoder7bit.js new file mode 100644 index 0000000..98a5366 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/lib/encoder7bit.js @@ -0,0 +1,47 @@ +/** + * "Inspired" by Encoder7Bit.h/Encoder7Bit.cpp in the + * Firmata source code. + */ +module.exports = { + to7BitArray: function(data) { + var shift = 0; + var previous = 0; + var output = []; + + data.forEach(function(byte) { + if (shift === 0) { + output.push(byte & 0x7f); + shift++; + previous = byte >> 7; + } else { + output.push(((byte << shift) & 0x7f) | previous); + if (shift === 6) { + output.push(byte >> 1); + shift = 0; + } else { + shift++; + previous = byte >> (8 - shift); + } + } + }); + + if (shift > 0) { + output.push(previous); + } + + return output; + }, + from7BitArray: function(encoded) { + var expectedBytes = (encoded.length) * 7 >> 3; + var decoded = []; + + for (var i = 0; i < expectedBytes; i++) { + var j = i << 3; + var pos = parseInt(j / 7, 10); + var shift = j % 7; + decoded[i] = (encoded[pos] >> shift) | ((encoded[pos + 1] << (7 - shift)) & 0xFF); + } + + return decoded; + } +}; diff --git a/src/p29-arduino-server/server/node_modules/firmata/lib/firmata.js b/src/p29-arduino-server/server/node_modules/firmata/lib/firmata.js new file mode 100644 index 0000000..7fbb31c --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/lib/firmata.js @@ -0,0 +1,1998 @@ +// Global Environment Dependencies +/* jshint -W079 */ +if (!Object.assign || !Map) { + require("es6-shim"); +} + +// Built-in Dependencies +var Emitter = require("events").EventEmitter; + +// Internal Dependencies +var Encoder7Bit = require("./encoder7bit"); +var OneWireUtils = require("./onewireutils"); +var com = require("./com"); + +// Program specifics +var i2cActive = new Map(); + +/** + * constants + */ + +var ANALOG_MAPPING_QUERY = 0x69; +var ANALOG_MAPPING_RESPONSE = 0x6A; +var ANALOG_MESSAGE = 0xE0; +var CAPABILITY_QUERY = 0x6B; +var CAPABILITY_RESPONSE = 0x6C; +var DIGITAL_MESSAGE = 0x90; +var END_SYSEX = 0xF7; +var EXTENDED_ANALOG = 0x6F; +var I2C_CONFIG = 0x78; +var I2C_REPLY = 0x77; +var I2C_REQUEST = 0x76; +var I2C_READ_MASK = 0x18; // 0b00011000 +var I2C_END_TX_MASK = 0x40; // 0b01000000 +var ONEWIRE_CONFIG_REQUEST = 0x41; +var ONEWIRE_DATA = 0x73; +var ONEWIRE_DELAY_REQUEST_BIT = 0x10; +var ONEWIRE_READ_REPLY = 0x43; +var ONEWIRE_READ_REQUEST_BIT = 0x08; +var ONEWIRE_RESET_REQUEST_BIT = 0x01; +var ONEWIRE_SEARCH_ALARMS_REPLY = 0x45; +var ONEWIRE_SEARCH_ALARMS_REQUEST = 0x44; +var ONEWIRE_SEARCH_REPLY = 0x42; +var ONEWIRE_SEARCH_REQUEST = 0x40; +var ONEWIRE_WITHDATA_REQUEST_BITS = 0x3C; +var ONEWIRE_WRITE_REQUEST_BIT = 0x20; +var PIN_MODE = 0xF4; +var PIN_STATE_QUERY = 0x6D; +var PIN_STATE_RESPONSE = 0x6E; +var PING_READ = 0x75; +var PULSE_IN = 0x74; +var PULSE_OUT = 0x73; +var QUERY_FIRMWARE = 0x79; +var REPORT_ANALOG = 0xC0; +var REPORT_DIGITAL = 0xD0; +var REPORT_VERSION = 0xF9; +var SAMPLING_INTERVAL = 0x7A; +var SERVO_CONFIG = 0x70; +var SERIAL_MESSAGE = 0x60; +var SERIAL_CONFIG = 0x10; +var SERIAL_WRITE = 0x20; +var SERIAL_READ = 0x30; +var SERIAL_REPLY = 0x40; +var SERIAL_CLOSE = 0x50; +var SERIAL_FLUSH = 0x60; +var SERIAL_LISTEN = 0x70; +var START_SYSEX = 0xF0; +var STEPPER = 0x72; +var STRING_DATA = 0x71; +var SYSTEM_RESET = 0xFF; + +var MAX_PIN_COUNT = 128; + +/** + * MIDI_RESPONSE contains functions to be called when we receive a MIDI message from the arduino. + * used as a switch object as seen here http://james.padolsey.com/javascript/how-to-avoid-switch-case-syndrome/ + * @private + */ + +var MIDI_RESPONSE = {}; + +/** + * Handles a REPORT_VERSION response and emits the reportversion event. + * @private + * @param {Board} board the current arduino board we are working with. + */ + +MIDI_RESPONSE[REPORT_VERSION] = function(board) { + board.version.major = board.currentBuffer[1]; + board.version.minor = board.currentBuffer[2]; + board.emit("reportversion"); +}; + +/** + * Handles a ANALOG_MESSAGE response and emits "analog-read" and "analog-read-"+n events where n is the pin number. + * @private + * @param {Board} board the current arduino board we are working with. + */ + +MIDI_RESPONSE[ANALOG_MESSAGE] = function(board) { + var pin = board.currentBuffer[0] & 0x0F; + var value = board.currentBuffer[1] | (board.currentBuffer[2] << 7); + + if (board.pins[board.analogPins[pin]]) { + board.pins[board.analogPins[pin]].value = value; + } + + board.emit("analog-read-" + pin, value); + board.emit("analog-read", { + pin: pin, + value: value, + }); +}; + +/** + * Handles a DIGITAL_MESSAGE response and emits: + * "digital-read" + * "digital-read-"+n + * + * Where n is the pin number. + * + * @private + * @param {Board} board the current arduino board we are working with. + */ + +MIDI_RESPONSE[DIGITAL_MESSAGE] = function(board) { + var port = (board.currentBuffer[0] & 0x0F); + var portValue = board.currentBuffer[1] | (board.currentBuffer[2] << 7); + + for (var i = 0; i < 8; i++) { + var pinNumber = 8 * port + i; + var pin = board.pins[pinNumber]; + var bit = 1 << i; + + if (pin && (pin.mode === board.MODES.INPUT || pin.mode === board.MODES.PULLUP)) { + pin.value = (portValue >> (i & 0x07)) & 0x01; + + if (pin.value) { + board.ports[port] |= bit; + } else { + board.ports[port] &= ~bit; + } + + board.emit("digital-read-" + pinNumber, pin.value); + board.emit("digital-read", { + pin: pinNumber, + value: pin.value, + }); + } + } +}; + +/** + * SYSEX_RESPONSE contains functions to be called when we receive a SYSEX message from the arduino. + * used as a switch object as seen here http://james.padolsey.com/javascript/how-to-avoid-switch-case-syndrome/ + * @private + */ + +var SYSEX_RESPONSE = {}; + +/** + * Handles a QUERY_FIRMWARE response and emits the "queryfirmware" event + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[QUERY_FIRMWARE] = function(board) { + var length = board.currentBuffer.length - 2; + var buffer = new Buffer(Math.round((length - 4) / 2)); + var byte = 0; + var offset = 0; + + for (var i = 4; i < length; i += 2) { + byte = ((board.currentBuffer[i] & 0x7F) | ((board.currentBuffer[i + 1] & 0x7F) << 7)) & 0xFF; + buffer.writeUInt8(byte, offset++); + } + + board.firmware = { + name: buffer.toString(), + version: { + major: board.currentBuffer[2], + minor: board.currentBuffer[3], + }, + }; + + board.emit("queryfirmware"); +}; + +/** + * Handles a CAPABILITY_RESPONSE response and emits the "capability-query" event + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[CAPABILITY_RESPONSE] = function(board) { + var modes = Object.keys(board.MODES).map(function(key) { + return board.MODES[key]; + }); + var capability = 0; + + function supportedModes(capability) { + return modes.reduce(function(accum, mode, index) { + if (capability & (1 << mode)) { + accum.push(mode); + } + return accum; + }, []); + } + + // Only create pins if none have been previously created on the instance. + if (!board.pins.length) { + for (var i = 2, n = 0; i < board.currentBuffer.length - 1; i++) { + if (board.currentBuffer[i] === 127) { + board.pins.push({ + supportedModes: supportedModes(capability), + mode: undefined, + value: 0, + report: 1, + }); + capability = 0; + n = 0; + continue; + } + if (n === 0) { + capability |= (1 << board.currentBuffer[i]); + } + n ^= 1; + } + } + + board.emit("capability-query"); +}; + +/** + * Handles a PIN_STATE response and emits the 'pin-state-'+n event where n is the pin number. + * + * Note about pin state: For output modes, the state is any value that has been + * previously written to the pin. For input modes, the state is the status of + * the pullup resistor. + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[PIN_STATE_RESPONSE] = function (board) { + var pin = board.currentBuffer[2]; + board.pins[pin].mode = board.currentBuffer[3]; + board.pins[pin].state = board.currentBuffer[4]; + if (board.currentBuffer.length > 6) { + board.pins[pin].state |= (board.currentBuffer[5] << 7); + } + if (board.currentBuffer.length > 7) { + board.pins[pin].state |= (board.currentBuffer[6] << 14); + } + board.emit("pin-state-" + pin); +}; + +/** + * Handles a ANALOG_MAPPING_RESPONSE response and emits the "analog-mapping-query" event. + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[ANALOG_MAPPING_RESPONSE] = function(board) { + var pin = 0; + var currentValue; + for (var i = 2; i < board.currentBuffer.length - 1; i++) { + currentValue = board.currentBuffer[i]; + board.pins[pin].analogChannel = currentValue; + if (currentValue !== 127) { + board.analogPins.push(pin); + } + pin++; + } + board.emit("analog-mapping-query"); +}; + +/** + * Handles a I2C_REPLY response and emits the "I2C-reply-"+n event where n is the slave address of the I2C device. + * The event is passed the buffer of data sent from the I2C Device + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[I2C_REPLY] = function(board) { + var reply = []; + var address = (board.currentBuffer[2] & 0x7F) | ((board.currentBuffer[3] & 0x7F) << 7); + var register = (board.currentBuffer[4] & 0x7F) | ((board.currentBuffer[5] & 0x7F) << 7); + + for (var i = 6, length = board.currentBuffer.length - 1; i < length; i += 2) { + reply.push(board.currentBuffer[i] | (board.currentBuffer[i + 1] << 7)); + } + + board.emit("I2C-reply-" + address + "-" + register, reply); +}; + +SYSEX_RESPONSE[ONEWIRE_DATA] = function(board) { + var subCommand = board.currentBuffer[2]; + + if (!SYSEX_RESPONSE[subCommand]) { + return; + } + + SYSEX_RESPONSE[subCommand](board); +}; + +SYSEX_RESPONSE[ONEWIRE_SEARCH_REPLY] = function(board) { + var pin = board.currentBuffer[3]; + var replyBuffer = board.currentBuffer.slice(4, board.currentBuffer.length - 1); + + board.emit("1-wire-search-reply-" + pin, OneWireUtils.readDevices(replyBuffer)); +}; + +SYSEX_RESPONSE[ONEWIRE_SEARCH_ALARMS_REPLY] = function(board) { + var pin = board.currentBuffer[3]; + var replyBuffer = board.currentBuffer.slice(4, board.currentBuffer.length - 1); + + board.emit("1-wire-search-alarms-reply-" + pin, OneWireUtils.readDevices(replyBuffer)); +}; + +SYSEX_RESPONSE[ONEWIRE_READ_REPLY] = function(board) { + var encoded = board.currentBuffer.slice(4, board.currentBuffer.length - 1); + var decoded = Encoder7Bit.from7BitArray(encoded); + var correlationId = (decoded[1] << 8) | decoded[0]; + + board.emit("1-wire-read-reply-" + correlationId, decoded.slice(2)); +}; + +/** + * Handles a STRING_DATA response and logs the string to the console. + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[STRING_DATA] = function(board) { + var string = new Buffer(board.currentBuffer.slice(2, -1)).toString("utf8").replace(/\0/g, ""); + board.emit("string", string); +}; + +/** + * Response from pingRead + */ + +SYSEX_RESPONSE[PING_READ] = function(board) { + var pin = (board.currentBuffer[2] & 0x7F) | ((board.currentBuffer[3] & 0x7F) << 7); + var durationBuffer = [ + (board.currentBuffer[4] & 0x7F) | ((board.currentBuffer[5] & 0x7F) << 7), (board.currentBuffer[6] & 0x7F) | ((board.currentBuffer[7] & 0x7F) << 7), (board.currentBuffer[8] & 0x7F) | ((board.currentBuffer[9] & 0x7F) << 7), (board.currentBuffer[10] & 0x7F) | ((board.currentBuffer[11] & 0x7F) << 7) + ]; + var duration = ((durationBuffer[0] << 24) + + (durationBuffer[1] << 16) + + (durationBuffer[2] << 8) + + (durationBuffer[3])); + board.emit("ping-read-" + pin, duration); +}; + +/** + * Handles the message from a stepper completing move + * @param {Board} board + */ + +SYSEX_RESPONSE[STEPPER] = function(board) { + var deviceNum = board.currentBuffer[2]; + board.emit("stepper-done-" + deviceNum, true); +}; + +/** + * Handles a SERIAL_REPLY response and emits the "serial-data-"+n event where n is the id of the + * serial port. + * The event is passed the buffer of data sent from the serial device + * @private + * @param {Board} board the current arduino board we are working with. + */ + +SYSEX_RESPONSE[SERIAL_MESSAGE] = function(board) { + var command = board.currentBuffer[2] & 0xF0; + var portId = board.currentBuffer[2] & 0x0F; + var reply = []; + + if (command === SERIAL_REPLY) { + for (var i = 3, len = board.currentBuffer.length; i < len - 1; i += 2) { + reply.push((board.currentBuffer[i + 1] << 7) | board.currentBuffer[i]); + } + board.emit("serial-data-" + portId, reply); + } +}; + +/** + * @class The Board object represents an arduino board. + * @augments EventEmitter + * @param {String} port This is the serial port the arduino is connected to. + * @param {function} function A function to be called when the arduino is ready to communicate. + * @property MODES All the modes available for pins on this arduino board. + * @property I2C_MODES All the I2C modes available. + * @property SERIAL_MODES All the Serial modes available. + * @property SERIAL_PORT_ID ID values to pass as the portId parameter when calling serialConfig. + * @property HIGH A constant to set a pins value to HIGH when the pin is set to an output. + * @property LOW A constant to set a pins value to LOW when the pin is set to an output. + * @property pins An array of pin object literals. + * @property analogPins An array of analog pins and their corresponding indexes in the pins array. + * @property version An object indicating the major and minor version of the firmware currently running. + * @property firmware An object indicateon the name, major and minor version of the firmware currently running. + * @property currentBuffer An array holding the current bytes received from the arduino. + * @property {SerialPort} sp The serial port object used to communicate with the arduino. + */ + +function Board(port, options, callback) { + if (typeof options === "function" || typeof options === "undefined") { + callback = options; + options = {}; + } + + if (!(this instanceof Board)) { + return new Board(port, options, callback); + } + + Emitter.call(this); + + var board = this; + var defaults = { + reportVersionTimeout: 5000, + samplingInterval: 19, + serialport: { + baudRate: 57600, + bufferSize: 256, + }, + }; + + var settings = Object.assign({}, defaults, options); + + this.isReady = false; + + this.MODES = { + INPUT: 0x00, + OUTPUT: 0x01, + ANALOG: 0x02, + PWM: 0x03, + SERVO: 0x04, + SHIFT: 0x05, + I2C: 0x06, + ONEWIRE: 0x07, + STEPPER: 0x08, + SERIAL: 0x0A, + PULLUP: 0x0B, + IGNORE: 0x7F, + PING_READ: 0x75, + UNKOWN: 0x10, + }; + + this.I2C_MODES = { + WRITE: 0, + READ: 1, + CONTINUOUS_READ: 2, + STOP_READING: 3, + }; + + this.STEPPER = { + TYPE: { + DRIVER: 1, + TWO_WIRE: 2, + FOUR_WIRE: 4, + }, + RUNSTATE: { + STOP: 0, + ACCEL: 1, + DECEL: 2, + RUN: 3, + }, + DIRECTION: { + CCW: 0, + CW: 1, + }, + }; + + this.SERIAL_MODES = { + CONTINUOUS_READ: 0x00, + STOP_READING: 0x01, + }; + + // ids for hardware and software serial ports on the board + this.SERIAL_PORT_IDs = { + HW_SERIAL0: 0x00, + HW_SERIAL1: 0x01, + HW_SERIAL2: 0x02, + HW_SERIAL3: 0x03, + SW_SERIAL0: 0x08, + SW_SERIAL1: 0x09, + SW_SERIAL2: 0x10, + SW_SERIAL3: 0x11, + + // Default can be used by depender libraries to key on a + // single property name when negotiating ports. + // + // Firmata elects SW_SERIAL0: 0x08 as its DEFAULT + DEFAULT: 0x08, + }; + + // map to the pin resolution value in the capability query response + this.SERIAL_PIN_TYPES = { + RES_RX0: 0x00, + RES_TX0: 0x01, + RES_RX1: 0x02, + RES_TX1: 0x03, + RES_RX2: 0x04, + RES_TX2: 0x05, + RES_RX3: 0x06, + RES_TX3: 0x07, + }; + + this.HIGH = 1; + this.LOW = 0; + this.pins = []; + this.ports = Array(16).fill(0); + this.analogPins = []; + this.version = {}; + this.firmware = {}; + this.currentBuffer = []; + this.versionReceived = false; + this.name = "Firmata"; + this.settings = settings; + + if (typeof port === "object") { + this.transport = port; + } else { + this.transport = new com.SerialPort(port, settings.serialport); + } + + // For backward compat + this.sp = this.transport; + + this.transport.on("close", function() { + this.emit("close"); + }.bind(this)); + + this.transport.on("disconnect", function() { + this.emit("disconnect"); + }.bind(this)); + + this.transport.on("open", function() { + this.emit("open"); + // Legacy + this.emit("connect"); + }.bind(this)); + + this.transport.on("error", function(error) { + if (!this.isReady && typeof callback === "function") { + callback(error); + } else { + this.emit("error", error); + } + }.bind(this)); + + this.transport.on("data", function(data) { + var byte, currByte, response, first, last, handler; + + for (var i = 0; i < data.length; i++) { + byte = data[i]; + // we dont want to push 0 as the first byte on our buffer + if (this.currentBuffer.length === 0 && byte === 0) { + continue; + } else { + this.currentBuffer.push(byte); + + first = this.currentBuffer[0]; + last = this.currentBuffer[this.currentBuffer.length - 1]; + + // [START_SYSEX, ... END_SYSEX] + if (first === START_SYSEX && last === END_SYSEX) { + + handler = SYSEX_RESPONSE[this.currentBuffer[1]]; + + // Ensure a valid SYSEX_RESPONSE handler exists + // Only process these AFTER the REPORT_VERSION + // message has been received and processed. + if (handler && this.versionReceived) { + handler(this); + } + + // It is possible for the board to have + // existing activity from a previous run + // that will leave any of the following + // active: + // + // - ANALOG_MESSAGE + // - SERIAL_READ + // - I2C_REQUEST, CONTINUOUS_READ + // + // This means that we will receive these + // messages on transport "open", before any + // handshake can occur. We MUST assert + // that we will only process this buffer + // AFTER the REPORT_VERSION message has + // been received. Not doing so will result + // in the appearance of the program "hanging". + // + // Since we cannot do anything with this data + // until _after_ REPORT_VERSION, discard it. + // + this.currentBuffer.length = 0; + + } else if (first === START_SYSEX && (this.currentBuffer.length > 0)) { + // we have a new command after an incomplete sysex command + currByte = data[i]; + if (currByte > 0x7F) { + this.currentBuffer.length = 0; + this.currentBuffer.push(currByte); + } + } else if (first !== START_SYSEX) { + // Check if data gets out of sync: first byte in buffer + // must be a valid response if not START_SYSEX + // Identify response on first byte + response = first < START_SYSEX ? (first & START_SYSEX) : first; + + // Check if the first byte is possibly + // a valid MIDI_RESPONSE (handler) + if (response !== REPORT_VERSION && + response !== ANALOG_MESSAGE && + response !== DIGITAL_MESSAGE) { + // If not valid, then we received garbage and can discard + // whatever bytes have been been queued. + this.currentBuffer.length = 0; + } + } + + // There are 3 bytes in the buffer and the first is not START_SYSEX: + // Might have a MIDI Command + if (this.currentBuffer.length === 3 && first !== START_SYSEX) { + // response bytes under 0xF0 we have a multi byte operation + response = first < START_SYSEX ? (first & START_SYSEX) : first; + + if (MIDI_RESPONSE[response]) { + // It's ok that this.versionReceived will be set to + // true every time a valid MIDI_RESPONSE is received. + // This condition is necessary to ensure that REPORT_VERSION + // is called first. + if (this.versionReceived || first === REPORT_VERSION) { + this.versionReceived = true; + MIDI_RESPONSE[response](this); + } + this.currentBuffer.length = 0; + } else { + // A bad serial read must have happened. + // Reseting the buffer will allow recovery. + this.currentBuffer.length = 0; + } + } + } + } + }.bind(this)); + + // if we have not received the version within the alotted + // time specified by the reportVersionTimeout (user or default), + // then send an explicit request for it. + this.reportVersionTimeoutId = setTimeout(function() { + if (this.versionReceived === false) { + this.reportVersion(function() {}); + this.queryFirmware(function() {}); + } + }.bind(this), settings.reportVersionTimeout); + + function ready() { + board.isReady = true; + board.emit("ready"); + if (typeof callback === "function") { + callback(); + } + } + + // Await the reported version. + this.once("reportversion", function() { + clearTimeout(this.reportVersionTimeoutId); + this.versionReceived = true; + this.once("queryfirmware", function() { + + // Only preemptively set the sampling interval if `samplingInterval` + // property was _explicitly_ set as a constructor option. + if (options.samplingInterval !== undefined) { + this.setSamplingInterval(options.samplingInterval); + } + if (settings.skipCapabilities) { + this.analogPins = settings.analogPins || this.analogPins; + this.pins = settings.pins || this.pins; + if (!this.pins.length) { + for (var i = 0; i < (settings.pinCount || MAX_PIN_COUNT); i++) { + var analogChannel = this.analogPins.indexOf(i); + if (analogChannel < 0) { + analogChannel = 127; + } + this.pins.push({supportedModes: [], analogChannel: analogChannel}); + } + } + ready(); + } else { + this.queryCapabilities(function() { + this.queryAnalogMapping(ready); + }); + } + }); + }); +} + +Board.prototype = Object.create(Emitter.prototype, { + constructor: { + value: Board, + }, +}); + +/** + * Asks the arduino to tell us its version. + * @param {function} callback A function to be called when the arduino has reported its version. + */ + +Board.prototype.reportVersion = function(callback) { + this.once("reportversion", callback); + this.transport.write(new Buffer([REPORT_VERSION])); +}; + +/** + * Asks the arduino to tell us its firmware version. + * @param {function} callback A function to be called when the arduino has reported its firmware version. + */ + +Board.prototype.queryFirmware = function(callback) { + this.once("queryfirmware", callback); + this.transport.write(new Buffer([START_SYSEX, QUERY_FIRMWARE, END_SYSEX])); +}; + +/** + * Asks the arduino to read analog data. Turn on reporting for this pin. + * @param {number} pin The pin to read analog data + * @param {function} callback A function to call when we have the analag data. + */ + +Board.prototype.analogRead = function(pin, callback) { + this.reportAnalogPin(pin, 1); + this.addListener("analog-read-" + pin, callback); +}; + +/** + * Asks the arduino to write an analog message. + * @param {number} pin The pin to write analog data to. + * @param {nubmer} value The data to write to the pin between 0 and 255. + */ + +Board.prototype.analogWrite = function(pin, value) { + var data = []; + + this.pins[pin].value = value; + + if (pin > 15) { + data[0] = START_SYSEX; + data[1] = EXTENDED_ANALOG; + data[2] = pin; + data[3] = value & 0x7F; + data[4] = (value >> 7) & 0x7F; + + if (value > 0x00004000) { + data[data.length] = (value >> 14) & 0x7F; + } + + if (value > 0x00200000) { + data[data.length] = (value >> 21) & 0x7F; + } + + if (value > 0x10000000) { + data[data.length] = (value >> 28) & 0x7F; + } + + data[data.length] = END_SYSEX; + } else { + data.push(ANALOG_MESSAGE | pin, value & 0x7F, (value >> 7) & 0x7F); + } + + this.transport.write(new Buffer(data)); +}; + +Board.prototype.pwmWrite = Board.prototype.analogWrite; + +/** + * Set a pin to SERVO mode with an explicit PWM range. + * + * @param {number} pin The pin the servo is connected to + * @param {number} min A 14-bit signed int. + * @param {number} max A 14-bit signed int. + */ + +Board.prototype.servoConfig = function(pin, min, max) { + var temp; + + if (typeof pin === "object" && pin !== null) { + temp = pin; + pin = temp.pin; + min = temp.min; + max = temp.max; + } + + if (typeof pin === "undefined") { + throw new Error("servoConfig: pin must be specified"); + } + + if (typeof min === "undefined") { + throw new Error("servoConfig: min must be specified"); + } + + if (typeof max === "undefined") { + throw new Error("servoConfig: max must be specified"); + } + + // [0] START_SYSEX (0xF0) + // [1] SERVO_CONFIG (0x70) + // [2] pin number (0-127) + // [3] minPulse LSB (0-6) + // [4] minPulse MSB (7-13) + // [5] maxPulse LSB (0-6) + // [6] maxPulse MSB (7-13) + // [7] END_SYSEX (0xF7) + + var data = [ + START_SYSEX, + SERVO_CONFIG, + pin, + min & 0x7F, + (min >> 7) & 0x7F, + max & 0x7F, + (max >> 7) & 0x7F, + END_SYSEX, + ]; + + this.pins[pin].mode = this.MODES.SERVO; + this.transport.write(new Buffer(data)); +}; + +/** + * Asks the arduino to move a servo + * @param {number} pin The pin the servo is connected to + * @param {number} value The degrees to move the servo to. + */ + +Board.prototype.servoWrite = function(pin, value) { + // Values less than 544 will be treated as angles in degrees + // (valid values in microseconds are handled as microseconds) + this.analogWrite.apply(this, arguments); +}; + +/** + * Asks the arduino to set the pin to a certain mode. + * @param {number} pin The pin you want to change the mode of. + * @param {number} mode The mode you want to set. Must be one of board.MODES + */ + +Board.prototype.pinMode = function(pin, mode) { + this.pins[pin].mode = mode; + this.transport.write(new Buffer([PIN_MODE, pin, mode])); +}; + +/** + * Asks the arduino to write a value to a digital pin + * @param {number} pin The pin you want to write a value to. + * @param {value} value The value you want to write. Must be board.HIGH or board.LOW + */ + +Board.prototype.digitalWrite = function(pin, value) { + var port = pin >> 3; + var bit = 1 << (pin & 0x07); + + this.pins[pin].value = value; + + if (value) { + this.ports[port] |= bit; + } else { + this.ports[port] &= ~bit; + } + + this.transport.write(new Buffer([ + DIGITAL_MESSAGE | port, + this.ports[port] & 0x7F, + (this.ports[port] >> 7) & 0x7F + ])); +}; + +/** + * Asks the arduino to read digital data. Turn on reporting for this pin's port. + * + * @param {number} pin The pin to read data from + * @param {function} callback The function to call when data has been received + */ + +Board.prototype.digitalRead = function(pin, callback) { + this.reportDigitalPin(pin, 1); + this.addListener("digital-read-" + pin, callback); +}; + +/** + * Asks the arduino to tell us its capabilities + * @param {function} callback A function to call when we receive the capabilities + */ + +Board.prototype.queryCapabilities = function(callback) { + this.once("capability-query", callback); + this.transport.write(new Buffer([START_SYSEX, CAPABILITY_QUERY, END_SYSEX])); +}; + +/** + * Asks the arduino to tell us its analog pin mapping + * @param {function} callback A function to call when we receive the pin mappings. + */ + +Board.prototype.queryAnalogMapping = function(callback) { + this.once("analog-mapping-query", callback); + this.transport.write(new Buffer([START_SYSEX, ANALOG_MAPPING_QUERY, END_SYSEX])); +}; + +/** + * Asks the arduino to tell us the current state of a pin + * @param {number} pin The pin we want to the know the state of + * @param {function} callback A function to call when we receive the pin state. + */ + +Board.prototype.queryPinState = function(pin, callback) { + this.once("pin-state-" + pin, callback); + this.transport.write(new Buffer([START_SYSEX, PIN_STATE_QUERY, pin, END_SYSEX])); +}; + +/** + * Sends a string to the arduino + * @param {String} string to send to the device + */ + +Board.prototype.sendString = function(string) { + var bytes = new Buffer(string + "\0", "utf8"); + var data = []; + data.push(START_SYSEX); + data.push(STRING_DATA); + for (var i = 0, length = bytes.length; i < length; i++) { + data.push(bytes[i] & 0x7F); + data.push((bytes[i] >> 7) & 0x7F); + } + data.push(END_SYSEX); + this.transport.write(data); +}; + +function i2cRequest(board, bytes) { + var active = i2cActive.get(board); + + if (!active) { + throw new Error("I2C is not enabled for this board. To enable, call the i2cConfig() method."); + } + + // Do not tamper with I2C_CONFIG messages + if (bytes[1] === I2C_REQUEST) { + var address = bytes[2]; + + // If no peripheral settings exist, make them. + if (!active[address]) { + active[address] = { + stopTX: true, + }; + } + + // READ (8) or CONTINUOUS_READ (16) + // value & 0b00011000 + if (bytes[3] & I2C_READ_MASK) { + // Invert logic to accomodate default = true, + // which is actually stopTX = 0 + bytes[3] |= Number(!active[address].stopTX) << 6; + } + } + + board.transport.write(new Buffer(bytes)); +} + +/** + * Sends a I2C config request to the arduino board with an optional + * value in microseconds to delay an I2C Read. Must be called before + * an I2C Read or Write + * @param {number} delay in microseconds to set for I2C Read + */ + +Board.prototype.sendI2CConfig = function(delay) { + return this.i2cConfig(delay); +}; + +/** + * Enable I2C with an optional read delay. Must be called before + * an I2C Read or Write + * + * Supersedes sendI2CConfig + * + * @param {number} delay in microseconds to set for I2C Read + * + * or + * + * @param {object} with a single property `delay` + */ + +Board.prototype.i2cConfig = function(options) { + var settings = i2cActive.get(this); + var delay; + + if (!settings) { + settings = { + /* + Keys will be I2C peripheral addresses + */ + }; + i2cActive.set(this, settings); + } + + if (typeof options === "number") { + delay = options; + } else { + if (typeof options === "object" && options !== null) { + delay = Number(options.delay); + + // When an address was explicitly specified, there may also be + // peripheral specific instructions in the config. + if (typeof options.address !== "undefined") { + + if (!settings[options.address]) { + settings[options.address] = { + stopTX: true, + }; + } + + // When settings have been explicitly provided, just bulk assign + // them to the existing settings, even if that's empty. This + // allows for reconfiguration as needed. + if (typeof options.settings) { + Object.assign(settings[options.address], options.settings); + /* + - stopTX: true | false + Set `stopTX` to `false` if this peripheral + expects Wire to keep the transmission connection alive between + setting a register and requesting bytes. + + Defaults to `true`. + */ + } + } + } + } + + settings.delay = delay = delay || 0; + + i2cRequest(this, [ + START_SYSEX, + I2C_CONFIG, + delay & 0xFF, (delay >> 8) & 0xFF, + END_SYSEX, + ]); + + return this; +}; + +/** + * Asks the arduino to send an I2C request to a device + * @param {number} slaveAddress The address of the I2C device + * @param {Array} bytes The bytes to send to the device + */ + +Board.prototype.sendI2CWriteRequest = function(slaveAddress, bytes) { + var data = []; + bytes = bytes || []; + + data.push( + START_SYSEX, + I2C_REQUEST, + slaveAddress, + this.I2C_MODES.WRITE << 3 + ); + + for (var i = 0, length = bytes.length; i < length; i++) { + data.push( + bytes[i] & 0x7F, (bytes[i] >> 7) & 0x7F + ); + } + + data.push(END_SYSEX); + + i2cRequest(this, data); +}; + +/** + * Write data to a register + * + * @param {number} address The address of the I2C device. + * @param {array} cmdRegOrData An array of bytes + * + * Write a command to a register + * + * @param {number} address The address of the I2C device. + * @param {number} cmdRegOrData The register + * @param {array} inBytes An array of bytes + * + */ + +Board.prototype.i2cWrite = function(address, registerOrData, inBytes) { + /** + * registerOrData: + * [... arbitrary bytes] + * + * or + * + * registerOrData, inBytes: + * command [, ...] + * + */ + var bytes; + var data = [ + START_SYSEX, + I2C_REQUEST, + address, + this.I2C_MODES.WRITE << 3 + ]; + + // If i2cWrite was used for an i2cWriteReg call... + if (arguments.length === 3 && + !Array.isArray(registerOrData) && + !Array.isArray(inBytes)) { + + return this.i2cWriteReg(address, registerOrData, inBytes); + } + + // Fix arguments if called with Firmata.js API + if (arguments.length === 2) { + if (Array.isArray(registerOrData)) { + inBytes = registerOrData.slice(); + registerOrData = inBytes.shift(); + } else { + inBytes = []; + } + } + + bytes = new Buffer([registerOrData].concat(inBytes)); + + for (var i = 0, length = bytes.length; i < length; i++) { + data.push( + bytes[i] & 0x7F, (bytes[i] >> 7) & 0x7F + ); + } + + data.push(END_SYSEX); + + i2cRequest(this, data); + + return this; +}; + +/** + * Write data to a register + * + * @param {number} address The address of the I2C device. + * @param {number} register The register. + * @param {number} byte The byte value to write. + * + */ + +Board.prototype.i2cWriteReg = function(address, register, byte) { + i2cRequest(this, [ + START_SYSEX, + I2C_REQUEST, + address, + this.I2C_MODES.WRITE << 3, + // register + register & 0x7F, (register >> 7) & 0x7F, + // byte + byte & 0x7F, (byte >> 7) & 0x7F, + END_SYSEX, + ]); + + return this; +}; + + +/** + * Asks the arduino to request bytes from an I2C device + * @param {number} slaveAddress The address of the I2C device + * @param {number} numBytes The number of bytes to receive. + * @param {function} callback A function to call when we have received the bytes. + */ + +Board.prototype.sendI2CReadRequest = function(address, numBytes, callback) { + i2cRequest(this, [ + START_SYSEX, + I2C_REQUEST, + address, + this.I2C_MODES.READ << 3, + numBytes & 0x7F, (numBytes >> 7) & 0x7F, + END_SYSEX, + ]); + this.once("I2C-reply-" + address + "-0" , callback); +}; + +// TODO: Refactor i2cRead and i2cReadOnce +// to share most operations. + +/** + * Initialize a continuous I2C read. + * + * @param {number} address The address of the I2C device + * @param {number} register Optionally set the register to read from. + * @param {number} numBytes The number of bytes to receive. + * @param {function} callback A function to call when we have received the bytes. + */ + +Board.prototype.i2cRead = function(address, register, bytesToRead, callback) { + + if (arguments.length === 3 && + typeof register === "number" && + typeof bytesToRead === "function") { + callback = bytesToRead; + bytesToRead = register; + register = null; + } + + var event = "I2C-reply-" + address + "-"; + var data = [ + START_SYSEX, + I2C_REQUEST, + address, + this.I2C_MODES.CONTINUOUS_READ << 3, + ]; + + if (register !== null) { + data.push( + register & 0x7F, (register >> 7) & 0x7F + ); + } else { + register = 0; + } + + event += register; + + data.push( + bytesToRead & 0x7F, (bytesToRead >> 7) & 0x7F, + END_SYSEX + ); + + this.on(event, callback); + + i2cRequest(this, data); + + return this; +}; + +/** + * Stop continuous reading of the specified I2C address or register. + * + * @param {object} options Options: + * bus {number} The I2C bus (on supported platforms) + * address {number} The I2C peripheral address to stop reading. + * + * @param {number} address The I2C peripheral address to stop reading. + */ + +Board.prototype.i2cStop = function(options) { + // There may be more values in the future + // var options = {}; + + // null or undefined? Do nothing. + if (options == null) { + return this; + } + + if (typeof options === "number") { + options = { + address: options + }; + } + + var data = [ + START_SYSEX, + I2C_REQUEST, + options.address, + this.I2C_MODES.STOP_READING << 3, + END_SYSEX, + ]; + + this.transport.write(new Buffer(data)); + + Object.keys(this._events).forEach(function(event) { + if (event.startsWith("I2C-reply-" + options.address)) { + this.removeAllListeners(event); + } + }, this); +}; + + +/** + * Perform a single I2C read + * + * Supersedes sendI2CReadRequest + * + * Read bytes from address + * + * @param {number} address The address of the I2C device + * @param {number} register Optionally set the register to read from. + * @param {number} numBytes The number of bytes to receive. + * @param {function} callback A function to call when we have received the bytes. + * + */ + + +Board.prototype.i2cReadOnce = function(address, register, bytesToRead, callback) { + + if (arguments.length === 3 && + typeof register === "number" && + typeof bytesToRead === "function") { + callback = bytesToRead; + bytesToRead = register; + register = null; + } + + var event = "I2C-reply-" + address + "-"; + var data = [ + START_SYSEX, + I2C_REQUEST, + address, + this.I2C_MODES.READ << 3, + ]; + + if (register !== null) { + data.push( + register & 0x7F, (register >> 7) & 0x7F + ); + } else { + register = 0; + } + + event += register; + + data.push( + bytesToRead & 0x7F, (bytesToRead >> 7) & 0x7F, + END_SYSEX + ); + + this.once(event, callback); + + i2cRequest(this, data); + + return this; +}; + +// CONTINUOUS_READ + +/** + * Configure the passed pin as the controller in a 1-wire bus. + * Pass as enableParasiticPower true if you want the data pin to power the bus. + * @param pin + * @param enableParasiticPower + */ + +Board.prototype.sendOneWireConfig = function(pin, enableParasiticPower) { + this.transport.write(new Buffer([START_SYSEX, ONEWIRE_DATA, ONEWIRE_CONFIG_REQUEST, pin, enableParasiticPower ? 0x01 : 0x00, END_SYSEX])); +}; + +/** + * Searches for 1-wire devices on the bus. The passed callback should accept + * and error argument and an array of device identifiers. + * @param pin + * @param callback + */ + +Board.prototype.sendOneWireSearch = function(pin, callback) { + this._sendOneWireSearch(ONEWIRE_SEARCH_REQUEST, "1-wire-search-reply-" + pin, pin, callback); +}; + +/** + * Searches for 1-wire devices on the bus in an alarmed state. The passed callback + * should accept and error argument and an array of device identifiers. + * @param pin + * @param callback + */ + +Board.prototype.sendOneWireAlarmsSearch = function(pin, callback) { + this._sendOneWireSearch(ONEWIRE_SEARCH_ALARMS_REQUEST, "1-wire-search-alarms-reply-" + pin, pin, callback); +}; + +Board.prototype._sendOneWireSearch = function(type, event, pin, callback) { + this.transport.write(new Buffer([START_SYSEX, ONEWIRE_DATA, type, pin, END_SYSEX])); + + var searchTimeout = setTimeout(function() { + callback(new Error("1-Wire device search timeout - are you running ConfigurableFirmata?")); + }, 5000); + this.once(event, function(devices) { + clearTimeout(searchTimeout); + + callback(null, devices); + }); +}; + +/** + * Reads data from a device on the bus and invokes the passed callback. + * + * N.b. ConfigurableFirmata will issue the 1-wire select command internally. + * @param pin + * @param device + * @param numBytesToRead + * @param callback + */ + +Board.prototype.sendOneWireRead = function(pin, device, numBytesToRead, callback) { + var correlationId = Math.floor(Math.random() * 255); + var readTimeout = setTimeout(function() { + callback(new Error("1-Wire device read timeout - are you running ConfigurableFirmata?")); + }, 5000); + this._sendOneWireRequest(pin, ONEWIRE_READ_REQUEST_BIT, device, numBytesToRead, correlationId, null, null, "1-wire-read-reply-" + correlationId, function(data) { + clearTimeout(readTimeout); + + callback(null, data); + }); +}; + +/** + * Resets all devices on the bus. + * @param pin + */ + +Board.prototype.sendOneWireReset = function(pin) { + this._sendOneWireRequest(pin, ONEWIRE_RESET_REQUEST_BIT); +}; + +/** + * Writes data to the bus to be received by the passed device. The device + * should be obtained from a previous call to sendOneWireSearch. + * + * N.b. ConfigurableFirmata will issue the 1-wire select command internally. + * @param pin + * @param device + * @param data + */ + +Board.prototype.sendOneWireWrite = function(pin, device, data) { + this._sendOneWireRequest(pin, ONEWIRE_WRITE_REQUEST_BIT, device, null, null, null, Array.isArray(data) ? data : [data]); +}; + +/** + * Tells firmata to not do anything for the passed amount of ms. For when you + * need to give a device attached to the bus time to do a calculation. + * @param pin + */ + +Board.prototype.sendOneWireDelay = function(pin, delay) { + this._sendOneWireRequest(pin, ONEWIRE_DELAY_REQUEST_BIT, null, null, null, delay); +}; + +/** + * Sends the passed data to the passed device on the bus, reads the specified + * number of bytes and invokes the passed callback. + * + * N.b. ConfigurableFirmata will issue the 1-wire select command internally. + * @param pin + * @param device + * @param data + * @param numBytesToRead + * @param callback + */ + +Board.prototype.sendOneWireWriteAndRead = function(pin, device, data, numBytesToRead, callback) { + var correlationId = Math.floor(Math.random() * 255); + var readTimeout = setTimeout(function() { + callback(new Error("1-Wire device read timeout - are you running ConfigurableFirmata?")); + }, 5000); + this._sendOneWireRequest(pin, ONEWIRE_WRITE_REQUEST_BIT | ONEWIRE_READ_REQUEST_BIT, device, numBytesToRead, correlationId, null, Array.isArray(data) ? data : [data], "1-wire-read-reply-" + correlationId, function(data) { + clearTimeout(readTimeout); + + callback(null, data); + }); +}; + +// see http://firmata.org/wiki/Proposals#OneWire_Proposal +Board.prototype._sendOneWireRequest = function(pin, subcommand, device, numBytesToRead, correlationId, delay, dataToWrite, event, callback) { + var bytes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + + if (device || numBytesToRead || correlationId || delay || dataToWrite) { + subcommand = subcommand | ONEWIRE_WITHDATA_REQUEST_BITS; + } + + if (device) { + bytes.splice.apply(bytes, [0, 8].concat(device)); + } + + if (numBytesToRead) { + bytes[8] = numBytesToRead & 0xFF; + bytes[9] = (numBytesToRead >> 8) & 0xFF; + } + + if (correlationId) { + bytes[10] = correlationId & 0xFF; + bytes[11] = (correlationId >> 8) & 0xFF; + } + + if (delay) { + bytes[12] = delay & 0xFF; + bytes[13] = (delay >> 8) & 0xFF; + bytes[14] = (delay >> 16) & 0xFF; + bytes[15] = (delay >> 24) & 0xFF; + } + + if (dataToWrite) { + dataToWrite.forEach(function(byte) { + bytes.push(byte); + }); + } + + var output = [START_SYSEX, ONEWIRE_DATA, subcommand, pin]; + output = output.concat(Encoder7Bit.to7BitArray(bytes)); + output.push(END_SYSEX); + + this.transport.write(new Buffer(output)); + + if (event && callback) { + this.once(event, callback); + } +}; + +/** + * Set sampling interval in millis. Default is 19 ms + * @param {number} interval The sampling interval in ms > 10 + */ + +Board.prototype.setSamplingInterval = function(interval) { + var safeint = interval < 10 ? 10 : (interval > 65535 ? 65535 : interval); // constrained + this.settings.samplingInterval = safeint; + this.transport.write(new Buffer([START_SYSEX, SAMPLING_INTERVAL, (safeint & 0x7F), ((safeint >> 7) & 0x7F), END_SYSEX])); +}; + +/** + * Get sampling interval in millis. Default is 19 ms + */ + +Board.prototype.getSamplingInterval = function(interval) { + return this.settings.samplingInterval; +}; + +/** + * Set reporting on pin + * @param {number} pin The pin to turn on/off reporting + * @param {number} value Binary value to turn reporting on/off + */ + +Board.prototype.reportAnalogPin = function(pin, value) { + if (value === 0 || value === 1) { + this.pins[this.analogPins[pin]].report = value; + this.transport.write(new Buffer([REPORT_ANALOG | pin, value])); + } +}; + +/** + * Set reporting on pin + * @param {number} pin The pin to turn on/off reporting + * @param {number} value Binary value to turn reporting on/off + */ + +Board.prototype.reportDigitalPin = function(pin, value) { + var port = pin >> 3; + if (value === 0 || value === 1) { + this.pins[pin].report = value; + this.transport.write(new Buffer([REPORT_DIGITAL | port, value])); + } +}; + +/** + * + * + */ + +Board.prototype.pingRead = function(opts, callback) { + + if (this.pins[opts.pin].supportedModes.indexOf(PING_READ) === -1) { + throw new Error("Please upload PingFirmata to the board"); + } + + var pin = opts.pin; + var value = opts.value; + var pulseOut = opts.pulseOut || 0; + var timeout = opts.timeout || 1000000; + var pulseOutArray = [ + ((pulseOut >> 24) & 0xFF), ((pulseOut >> 16) & 0xFF), ((pulseOut >> 8) & 0XFF), ((pulseOut & 0xFF)) + ]; + var timeoutArray = [ + ((timeout >> 24) & 0xFF), ((timeout >> 16) & 0xFF), ((timeout >> 8) & 0XFF), ((timeout & 0xFF)) + ]; + var data = [ + START_SYSEX, + PING_READ, + pin, + value, + pulseOutArray[0] & 0x7F, (pulseOutArray[0] >> 7) & 0x7F, + pulseOutArray[1] & 0x7F, (pulseOutArray[1] >> 7) & 0x7F, + pulseOutArray[2] & 0x7F, (pulseOutArray[2] >> 7) & 0x7F, + pulseOutArray[3] & 0x7F, (pulseOutArray[3] >> 7) & 0x7F, + timeoutArray[0] & 0x7F, (timeoutArray[0] >> 7) & 0x7F, + timeoutArray[1] & 0x7F, (timeoutArray[1] >> 7) & 0x7F, + timeoutArray[2] & 0x7F, (timeoutArray[2] >> 7) & 0x7F, + timeoutArray[3] & 0x7F, (timeoutArray[3] >> 7) & 0x7F, + END_SYSEX, + ]; + this.transport.write(new Buffer(data)); + this.once("ping-read-" + pin, callback); +}; + +/** + * Stepper functions to support AdvancedFirmata"s asynchronous control of stepper motors + * https://github.com/soundanalogous/AdvancedFirmata + */ + +/** + * Asks the arduino to configure a stepper motor with the given config to allow asynchronous control of the stepper + * @param {number} deviceNum Device number for the stepper (range 0-5, expects steppers to be setup in order from 0 to 5) + * @param {number} type One of this.STEPPER.TYPE.* + * @param {number} stepsPerRev Number of steps motor takes to make one revolution + * @param {number} dirOrMotor1Pin If using EasyDriver type stepper driver, this is direction pin, otherwise it is motor 1 pin + * @param {number} stepOrMotor2Pin If using EasyDriver type stepper driver, this is step pin, otherwise it is motor 2 pin + * @param {number} [motor3Pin] Only required if type == this.STEPPER.TYPE.FOUR_WIRE + * @param {number} [motor4Pin] Only required if type == this.STEPPER.TYPE.FOUR_WIRE + */ + +Board.prototype.stepperConfig = function(deviceNum, type, stepsPerRev, dirOrMotor1Pin, stepOrMotor2Pin, motor3Pin, motor4Pin) { + var data = [ + START_SYSEX, + STEPPER, + 0x00, // STEPPER_CONFIG from firmware + deviceNum, + type, + stepsPerRev & 0x7F, (stepsPerRev >> 7) & 0x7F, + dirOrMotor1Pin, + stepOrMotor2Pin, + ]; + if (type === this.STEPPER.TYPE.FOUR_WIRE) { + data.push(motor3Pin, motor4Pin); + } + data.push(END_SYSEX); + this.transport.write(new Buffer(data)); +}; + +/** + * Asks the arduino to move a stepper a number of steps at a specific speed + * (and optionally with and acceleration and deceleration) + * speed is in units of .01 rad/sec + * accel and decel are in units of .01 rad/sec^2 + * TODO: verify the units of speed, accel, and decel + * @param {number} deviceNum Device number for the stepper (range 0-5) + * @param {number} direction One of this.STEPPER.DIRECTION.* + * @param {number} steps Number of steps to make + * @param {number} speed + * @param {number|function} accel Acceleration or if accel and decel are not used, then it can be the callback + * @param {number} [decel] + * @param {function} [callback] + */ + +Board.prototype.stepperStep = function(deviceNum, direction, steps, speed, accel, decel, callback) { + if (typeof accel === "function") { + callback = accel; + accel = 0; + decel = 0; + } + + var data = [ + START_SYSEX, + STEPPER, + 0x01, // STEPPER_STEP from firmware + deviceNum, + direction, // one of this.STEPPER.DIRECTION.* + steps & 0x7F, (steps >> 7) & 0x7F, (steps >> 14) & 0x7f, + speed & 0x7F, (speed >> 7) & 0x7F + ]; + if (accel > 0 || decel > 0) { + data.push( + accel & 0x7F, (accel >> 7) & 0x7F, + decel & 0x7F, (decel >> 7) & 0x7F + ); + } + data.push(END_SYSEX); + this.transport.write(new Buffer(data)); + this.once("stepper-done-" + deviceNum, callback); +}; + +/** + * Asks the Arduino to configure a hardware or serial port. + * @param {object} options Options: + * portId {number} The serial port to use (HW_SERIAL1, HW_SERIAL2, HW_SERIAL3, SW_SERIAL0, + * SW_SERIAL1, SW_SERIAL2, SW_SERIAL3) + * baud {number} The baud rate of the serial port + * rxPin {number} [SW Serial only] The RX pin of the SoftwareSerial instance + * txPin {number} [SW Serial only] The TX pin of the SoftwareSerial instance + */ + +Board.prototype.serialConfig = function(options) { + + var portId; + var baud; + var rxPin; + var txPin; + + if (typeof options === "object" && options !== null) { + portId = options.portId; + baud = options.baud; + rxPin = options.rxPin; + txPin = options.txPin; + } + + if (typeof portId === "undefined") { + throw new Error("portId must be specified, see SERIAL_PORT_IDs for options."); + } + + baud = baud || 57600; + + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_CONFIG | portId, + baud & 0x007F, + (baud >> 7) & 0x007F, + (baud >> 14) & 0x007F + ]; + if (portId > 7 && typeof rxPin !== "undefined" && typeof txPin !== "undefined") { + data.push(rxPin); + data.push(txPin); + } else if (portId > 7) { + throw new Error("Both RX and TX pins must be defined when using Software Serial."); + } + + data.push(END_SYSEX); + this.transport.write(new Buffer(data)); +}; + +/** + * Write an array of bytes to the specified serial port. + * @param {number} portId The serial port to write to. + * @param {array} inBytes An array of bytes to write to the serial port. + */ + +Board.prototype.serialWrite = function(portId, inBytes) { + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_WRITE | portId, + ]; + for (var i = 0, len = inBytes.length; i < len; i++) { + data.push(inBytes[i] & 0x007F); + data.push((inBytes[i] >> 7) & 0x007F); + } + data.push(END_SYSEX); + if (data.length > 0) { + this.transport.write(new Buffer(data)); + } +}; + +/** + * Start continuous reading of the specified serial port. The port is checked for data each + * iteration of the main Arduino loop. + * @param {number} portId The serial port to start reading continuously. + * @param {number} maxBytesToRead [Optional] The maximum number of bytes to read per iteration. + * If there are less bytes in the buffer, the lesser number of bytes will be returned. A value of 0 + * indicates that all available bytes in the buffer should be read. + * @param {function} callback A function to call when we have received the bytes. + */ + +Board.prototype.serialRead = function(portId, maxBytesToRead, callback) { + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_READ | portId, + this.SERIAL_MODES.CONTINUOUS_READ + ]; + + if (arguments.length === 2 && typeof maxBytesToRead === "function") { + callback = maxBytesToRead; + } else { + data.push(maxBytesToRead & 0x007F); + data.push((maxBytesToRead >> 7) & 0x007F); + } + + data.push(END_SYSEX); + this.transport.write(new Buffer(data)); + + this.on("serial-data-" + portId, callback); +}; + +/** + * Stop continuous reading of the specified serial port. This does not close the port, it stops + * reading it but keeps the port open. + * @param {number} portId The serial port to stop reading. + */ + +Board.prototype.serialStop = function(portId) { + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_READ | portId, + this.SERIAL_MODES.STOP_READING, + END_SYSEX, + ]; + this.transport.write(new Buffer(data)); + + this.removeAllListeners("serial-data-" + portId); +}; + +/** + * Close the specified serial port. + * @param {number} portId The serial port to close. + */ + +Board.prototype.serialClose = function(portId) { + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_CLOSE | portId, + END_SYSEX, + ]; + this.transport.write(new Buffer(data)); +}; + +/** + * Flush the specified serial port. For hardware serial, this waits for the transmission of + * outgoing serial data to complete. For software serial, this removed any buffered incoming serial + * data. + * @param {number} portId The serial port to flush. + */ + +Board.prototype.serialFlush = function(portId) { + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_FLUSH | portId, + END_SYSEX, + ]; + this.transport.write(new Buffer(data)); +}; + +/** + * For SoftwareSerial only. Only a single SoftwareSerial instance can read data at a time. + * Call this method to set this port to be the reading port in the case there are multiple + * SoftwareSerial instances. + * @param {number} portId The serial port to listen on. + */ + +Board.prototype.serialListen = function(portId) { + // listen only applies to software serial ports + if (portId < 8) { + return; + } + var data = [ + START_SYSEX, + SERIAL_MESSAGE, + SERIAL_LISTEN | portId, + END_SYSEX, + ]; + this.transport.write(new Buffer(data)); +}; + +/** + * Allow user code to handle arbitrary sysex responses + * + * @param {number} commandByte The commandByte must be associated with some message + * that's expected from the slave device. The handler is + * called with an array of _raw_ data from the slave. Data + * decoding must be done within the handler itself. + * + * Use Board.decode(data) to extract useful values from + * the incoming response data. + * + * @param {function} handler Function which handles receipt of responses matching + * commandByte. + */ + +Board.prototype.sysexResponse = function(commandByte, handler) { + if (Board.SYSEX_RESPONSE[commandByte]) { + throw new Error(commandByte + " is not an available SYSEX_RESPONSE byte"); + } + + Board.SYSEX_RESPONSE[commandByte] = function(board) { + handler(board.currentBuffer.slice(2, -1)); + }; + + return this; +}; + +/** + * Allow user code to send arbitrary sysex messages + * + * @param {array} message The message array is expected to be all necessary bytes + * between START_SYSEX and END_SYSEX (non-inclusive). It will + * be assumed that the data in the message array is + * already encoded as 2 7-bit bytes LSB first. + * + * + */ + +Board.prototype.sysexCommand = function(message) { + + if (!message.length) { + throw new Error("Sysex Command cannot be empty"); + } + + var data = message.slice(); + + data.unshift(START_SYSEX); + data.push(END_SYSEX); + + this.transport.write(new Buffer(data)); + return this; +}; + + +/** + * Send SYSTEM_RESET to arduino + */ + +Board.prototype.reset = function() { + this.transport.write(new Buffer([SYSTEM_RESET])); +}; + +/** + * Board.isAcceptablePort Determines if a `port` object (from SerialPort.list(...)) + * is a valid Arduino (or similar) device. + * @return {Boolean} true if port can be connected to by Firmata + */ + +Board.isAcceptablePort = function(port) { + var rport = /usb|acm|^com/i; + + if (rport.test(port.comName)) { + return true; + } + + return false; +}; + +/** + * Board.requestPort(callback) Request an acceptable port to connect to. + * callback(error, port) + */ + +Board.requestPort = function(callback) { + com.list(function(error, ports) { + var port = ports.find(function(port) { + if (Board.isAcceptablePort(port)) { + return port; + } + }); + + if (port) { + callback(null, port); + } else { + callback(new Error("No Acceptable Port Found"), null); + } + }); +}; + +// For backwards compatibility +Board.Board = Board; +Board.SYSEX_RESPONSE = SYSEX_RESPONSE; +Board.MIDI_RESPONSE = MIDI_RESPONSE; + +// Expose encode/decode for custom sysex messages +Board.encode = function(data) { + var encoded = []; + var length = data.length; + + for (var i = 0; i < length; i++) { + encoded.push( + data[i] & 0x7F, + (data[i] >> 7) & 0x7F + ); + } + + return encoded; +}; + +Board.decode = function(data) { + var decoded = []; + + if (data.length % 2 !== 0) { + throw new Error("Board.decode(data) called with odd number of data bytes"); + } + + while (data.length) { + var lsb = data.shift(); + var msb = data.shift(); + decoded.push(lsb | (msb << 7)); + } + + return decoded; +}; + + +if (process.env.IS_TEST_MODE) { + Board.test = { + i2cPeripheralSettings: function(board) { + return i2cActive.get(board); + }, + get i2cActive() { + return i2cActive; + } + }; +} + +module.exports = Board; diff --git a/src/p29-arduino-server/server/node_modules/firmata/lib/onewireutils.js b/src/p29-arduino-server/server/node_modules/firmata/lib/onewireutils.js new file mode 100644 index 0000000..727ef07 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/lib/onewireutils.js @@ -0,0 +1,48 @@ +var Encoder7Bit = require("./encoder7bit"); + +var OneWireUtils = { + crc8: function(data) { + var crc = 0; + + for (var i = 0; i < data.length; i++) { + var inbyte = data[i]; + + for (var n = 8; n; n--) { + var mix = (crc ^ inbyte) & 0x01; + crc >>= 1; + + if (mix) { + crc ^= 0x8C; + } + + inbyte >>= 1; + } + } + return crc; + }, + + readDevices: function(data) { + var deviceBytes = Encoder7Bit.from7BitArray(data); + var devices = []; + + for (var i = 0; i < deviceBytes.length; i += 8) { + var device = deviceBytes.slice(i, i + 8); + + if (device.length !== 8) { + continue; + } + + var check = OneWireUtils.crc8(device.slice(0, 7)); + + if (check !== device[7]) { + console.error("ROM invalid!"); + } + + devices.push(device); + } + + return devices; + } +}; + +module.exports = OneWireUtils; diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/LICENSE b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/LICENSE new file mode 100644 index 0000000..e3c325e --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/LICENSE @@ -0,0 +1,18 @@ +Copyright 2010, 2011, 2012 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. \ No newline at end of file diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/README.md b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/README.md new file mode 100644 index 0000000..a28fa12 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/README.md @@ -0,0 +1,576 @@ +# Node Serialport + +[![npm](https://img.shields.io/npm/dm/serialport.svg?maxAge=2592000)](http://npmjs.com/package/serialport) +[![Gitter chat](https://badges.gitter.im/EmergingTechnologyAdvisors/node-serialport.svg)](https://gitter.im/EmergingTechnologyAdvisors/node-serialport) +[![Dependency Status](https://david-dm.org/EmergingTechnologyAdvisors/node-serialport.svg)](https://david-dm.org/EmergingTechnologyAdvisors/node-serialport) +[![Build Status](https://travis-ci.org/EmergingTechnologyAdvisors/node-serialport.svg?branch=master)](https://travis-ci.org/EmergingTechnologyAdvisors/node-serialport) +[![Build status](https://ci.appveyor.com/api/projects/status/u6xe3iao2crd7akn/branch/master?svg=true)](https://ci.appveyor.com/project/j5js/node-serialport/branch/master) +[![Coverage Status](https://coveralls.io/repos/github/EmergingTechnologyAdvisors/node-serialport/badge.svg?branch=master)](https://coveralls.io/github/EmergingTechnologyAdvisors/node-serialport?branch=master) + +For support you can open a [github issue](https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/new), for discussions, designs, and clarifications, we recommend you join our [Gitter Chat room](https://gitter.im/EmergingTechnologyAdvisors/node-serialport). We have two related projects [Browser Serialport](https://github.com/garrows/browser-serialport) "just like Node Serialport but for browser apps", and [Serialport Test Piliot](https://github.com/j5js/serialport-test-pilot) which helps us test serialport. + +If you'd like to contribute please take a look at [contribution guide](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md). You also might want to see the [road map](https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/746). We also have issues tagged ["good first PR"](https://github.com/EmergingTechnologyAdvisors/node-serialport/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+pr%22) if you'd like to start somewhere specific. We'll do our best to support you until your PR is merged. + +*** + +# Which version of Serialport would you like documentation for? + +You're reading the README for the master branch of serialport. You probably want to be looking at the README of our latest release. See our [change log](changelog.md) for what's new and our [upgrade guide](UPGRADE_GUIDE.md) for a walk through on what to look out for between major versions. + + - [`serialport@4.0.6` docs are here](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/4.0.6/README.md) it is the latest `4.x` releases. + - [`serialport@3.1.2` docs are here](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/3.1.2/README.md) it is the latest `3.x` releases. + - [`serialport@2.1.2` docs are here](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/2.1.2/README.md) it was the last `2.x` release + - [`serialport@1.7.4` docs are here](https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/v1.7.4/README.md) it was the last `1.x` release + +*** + +Imagine a world where you can write JavaScript to control blenders, lights, security systems, or even robots. Yes, I said robots. That world is here and now with node serialport. It provides a very simple interface to the low level serial port code necessary to program [Arduino](http://www.arduino.cc/) chipsets, [X10](http://www.smarthome.com/manuals/protocol.txt) wireless communications, or even the rising [Z-Wave](http://www.z-wave.com/modules/ZwaveStart/) and [Zigbee](http://www.zigbee.org/) standards. The physical world is your oyster with this goodie. For a full break down of why we made this, please read [NodeBots - The Rise of JS Robotics](http://www.voodootikigod.com/nodebots-the-rise-of-js-robotics). + +*** + +For getting started with node-serialport, we recommend you begin with the following articles: +* [Johnny-Five](http://johnny-five.io/#hello-world) - The Johnny-Five Robotics and IoT platform's 6 line "Hello World" (awesome). +* [Arduino Node Security Sensor Hacking](http://nexxylove.tumblr.com/post/20159263403/arduino-node-security-sensor-hacking) - A great all around "how do I use this" article. +* [NodeBots - The Rise of JS Robotics](http://www.voodootikigod.com/nodebots-the-rise-of-js-robotics) - A survey article of why one would want to program robots in JS and how this all started. + +*** + +* [Platform Support](#platform-support) +* [Installation](#installation-instructions) +* [Installation Special Cases](#installation-special-cases) + * [Windows](#windows) + * [Mac OS X](#mac-os-x) + * [Ubuntu/Debian Linux](#ubuntudebian-linux) + * [Alpine Linux](#alpine-linux) + * [Raspberry Pi Linux](#raspberry-pi-linux) + * [Illegal Instruction](#illegal-instruction) +* [Usage](#usage) + * [Opening a Port](#opening-a-port) + * [Listing Ports](#listing-ports) + * [Parsers](#parsers) +* [Methods](#methods) + * [SerialPort](#serialport-path-options-opencallback) + * [close()](#close-callback) + * [drain()](#drain-callback) + * [flush()](#flush-callback) + * [isOpen()](#isopen) + * [open()](#open-callback) + * [pause()](#pause-) + * [resume()](#resume-) + * [set()](#set-options-callback) + * [update()](#update-options-callback) + * [write()](#write-buffer-callback) +* [Events](#events) +* [Command Line Tools](#command-line-tools) + * [Serial Port List](#serial-port-list) + * [Serial Port Terminal](#serial-port-terminal) + +*** + +## Platform Support +`serialport` supports and tests against the following platforms, architectures and node versions. + +| Platform / Arch | Node v0.10.x | Node v0.12.x | Node v4.x | Node v5.x | Node v6.x | +| --- | --- | --- | --- | --- | --- | +| Linux / ia32 | ☑ | ☑ | ☑ | ☑ | ☑ | +| Linux / x64 | ☑ | ☑ | ☑ | ☑ | ☑ | +| Linux / ARM v6¹ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Linux / ARM v7¹ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Linux / ARM v8¹ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Linux / MIPSel¹ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Linux / PPC64¹ | ☐ | ☐ | ☐ | ☐ | ☐ | +| Windows² / x86 | ☑ | ☑ | ☑ | ☑ | ☑ | +| Windows² / x64 | ☑ | ☑ | ☑ | ☑ | ☑ | +| OSX³ / x64 | ☑ | ☑ | ☑ | ☑ | ☑ | + +¹ ARM, MIPSel and PPC64¹ platforms are known to work but are not currently part of our test or build matrix. [#846](https://github.com/EmergingTechnologyAdvisors/node-serialport/issues/846) ARM v4 and v5 was dropped from NodeJS after Node v0.10. + +² Windows 7, 8, 10, and 10 IoT are supported but only Windows Server 2012 R2 is tested by our CI. + +³ OSX 10.4 Tiger and above are supported but only 10.9.5 Mavericks with Xcode 6.1 is tested in our CI. + +## Installation Instructions + +For most "standard" use cases (node v4.x on mac, linux, windows on a x86 or x64 processor), node-serialport will install nice and easy with a simple + +``` +npm install serialport +``` + +### Installation Special Cases + +We are using [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) to compile and post binaries of the library for most common use cases (linux, mac, windows on standard processor platforms). If you are on a special case, node-serialport will work, but it will compile the binary when you install. + +This assumes you have everything on your system necessary to compile ANY native module for Node.js. This may not be the case, though, so please ensure the following are true for your system before filing an issue about "Does not install". For all operatings systems, please ensure you have Python 2.x installed AND not 3.0, node-gyp (what we use to compile) requires Python 2.x. + +#### Windows + + * Windows 7, Windows 8.1, and Windows 10 are supported. + * Might just download and install with no extra steps. If the downloaded binary fails you'll have to build it with the following steps. + * Install [Visual Studio Express 2013 for Windows Desktop](http://www.microsoft.com/visualstudio/eng/2013-downloads#d-2013-express). + * If you are hacking on an Arduino, be sure to install [the drivers](http://arduino.cc/en/Guide/windows#toc4). + * Install [node.js](http://nodejs.org/) matching the bitness (32 or 64) of your operating system. + * Install [Python 2.7.6](http://www.python.org/download/releases/2.7.6/) matching the bitness of your operating system. For any questions, please refer to their [FAQ](http://docs.python.org/2/faq/windows.html). Default settings are perfect. + * Open the 'Visual Studio Command Prompt' and add Python to the path. + +#### Mac OS X + +Ensure that you have at a minimum the xCode Command Line Tools installed appropriate for your system configuration. If you recently upgraded the OS, it probably removed your installation of Command Line Tools, please verify before submitting a ticket. To compile `node-serialport` with Node.js 4.x+, you will need to use g++ v4.8 or higher. + +#### Ubuntu/Debian Linux + +The best way to install any version of NodeJS is to use the [NodeSource Node.js Binary Distributions](https://github.com/nodesource/distributions#installation-instructions). Older versions of Ubuntu install nodejs with the wrong version and binary name. If you node binary is `nodejs` not `node` or if your node version is [`v0.10.29`](https://github.com/fivdi/onoff/wiki/Node.js-v0.10.29-and-native-addons-on-the-Raspberry-Pi) then you should follow these instructions. + +The package `build-essential` is necessary to compile `serialport`. If there's a binary for your platform you won't need it. Keep rocking! + + +``` +# Using Ubuntu and node 6 +curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - +sudo apt-get install -y nodejs + +# Using Debian and node 6, as root +curl -sL https://deb.nodesource.com/setup_6.x | bash - +apt-get install -y nodejs +``` + +#### Alpine Linux + +[Alpine](http://www.alpinelinux.org/) is a (very) small distro, but it uses the musl standard library instead of glibc (that most other Linux distros use), so it requires compilation. + +``` +# If you don't have node/npm already, add that first +sudo apk add --no-cache nodejs + +# Add the necessary build and runtime dependencies +sudo apk add --no-cache make gcc g++ python linux-headers udev + +# Then we can install serialport, forcing it to compile +npm install serialport --build-from-source=serialport +``` + +#### Raspberry Pi Linux + +Follow the instructions for [setting up a Raspberry pi for use with Johnny-Five and Raspi IO](https://github.com/nebrius/raspi-io/wiki/Getting-a-Raspberry-Pi-ready-for-NodeBots). These projects use Node Serialport under the hood. + +| Revision | CPU | Arm Version | +| ---- | --- | --- | +| A, A+, B, B+ | 32-bit ARM1176JZF-S | ARMv6 | +| Compute Module | 32-bit ARM1176JZF-S | ARMv6 | +| Zero | 32-bit ARM1176JZF-S | ARMv6 | +| B2 | 32-bit ARM Cortex-A7 | ARMv7 | +| B3 | 32-bit ARM Cortex-A53 | ARMv8 | + + +#### Illegal Instruction + +The pre-compiled binaries assume a fully capable chip. The Galileo 2 for example lacks a few instruction sets from the `ia32` architecture. A few other platforms have similar issues. So if you get `Illegal Instruction` when trying to run serialport you'll need to rebuild the serialport binary by asking npm to rebuild it. + +```bash +# Will ask npm to build serialport during install time +npm install serialport --build-from-source + +# If you have a package that depends on serialport you can ask npm to rebuild it specifically. +npm rebuild serialport --build-from-source + +# Or leave out the package name to rebuild everything. +npm rebuild --build-from-source +``` + +## Usage + +Opening a serial port: + +```js +var SerialPort = require("serialport"); +var port = new SerialPort("/dev/tty-usbserial1", { + baudRate: 57600 +}); +``` + +When opening a serial port, you can specify (in this order). + +1. Path to Serial Port - required. +1. Options - optional and described below. + +### Opening a Port + +Constructing a `SerialPort` object will open a port on `nextTick`. You can bind events while the port is opening but you must wait until it is open to `write()` to it. (Most port functions require an open port.) You can call code when a port is opened in three ways. + + - The `open` event is always emitted when the port is opened + - The constructor's openCallback is passed to `.open()` when the `autoOpen` option hasn't been disabled, if you have disabled it the callback is ignored. + - The `.open()` function takes a callback that is called after the port is opened. This can be used if you disabled the `autoOpen` option or have previously closed an open port. + + +```js +var SerialPort = require('serialport'); +var port = new SerialPort('/dev/tty-usbserial1'); + +port.on('open', function() { + port.write('main screen turn on', function(err) { + if (err) { + return console.log('Error on write: ', err.message); + } + console.log('message written'); + }); +}); + +// open errors will be emitted as an error event +port.on('error', function(err) { + console.log('Error: ', err.message); +}) +``` + +This could be moved to the constructor's callback. +```js +var SerialPort = require('serialport'); +var port = new SerialPort('/dev/tty-usbserial1', function (err) { + if (err) { + return console.log('Error: ', err.message); + } + port.write('main screen turn on', function(err) { + if (err) { + return console.log('Error on write: ', err.message); + } + console.log('message written'); + }); +}); +``` + +When disabling the `autoOpen` option you'll need to open the port on your own. + +```js +var SerialPort = require('serialport'); +var port = new SerialPort('/dev/tty-usbserial1', { autoOpen: false }); + +port.open(function (err) { + if (err) { + return console.log('Error opening port: ', err.message); + } + + // write errors will be emitted on the port since there is no callback to write + port.write('main screen turn on'); +}); + +// the open event will always be emitted +port.on('open', function() { + // open logic +}); +``` + +### Listing Ports + +`.list(callback)` + +Retrieves a list of available serial ports with metadata. + +* `callback` is a required function that looks should look like: `function (err, ports) { ... }`. `ports` will be an array of objects with port info. Only the `comName` is guaranteed, all the other fields undefined if unavailable. The `comName` is either the path or identifier (eg `COM1`) used to open the serialport. + +```js +// example port information +{ + comName: '/dev/cu.usbmodem1421', + manufacturer: 'Arduino (www.arduino.cc)', + serialNumber: '757533138333964011C1', + pnpId: undefined, + locationId: '0x14200000', + vendorId: '0x2341', + productId: '0x0043' +} + +``` + +```js +var SerialPort = require('serialport'); +SerialPort.list(function (err, ports) { + ports.forEach(function(port) { + console.log(port.comName); + console.log(port.pnpId); + console.log(port.manufacturer); + }); +}); +``` + +### Parsers + +Out of the box, node-serialport provides four parsers: one that simply emits the raw buffer as a data event, one that emits a data event when a specfic byte sequence is received, one that emits a data event every 'length' bytes, and one which provides familiar "readline" style parsing. + +To use the readline parser, you must provide a delimiter as such: + +```js +var SerialPort = require('serialport'); + +var port = new SerialPort('/dev/tty-usbserial1', { + parser: SerialPort.parsers.readline('\n') +}); +``` + +To use the raw parser don't specify any parser, however if you really want to you can: + +```js +var SerialPort = require('serialport'); + +var port = new SerialPort('/dev/tty-usbserial1', { + parser: SerialPort.parsers.raw +}); +``` + +Note that the raw parser does not guarantee that all data it receives will come in a single event. + +To use the byte sequence parser, you must provide a delimiter as an array of bytes: +```js +var SerialPort = require('serialport'); + +var port = new SerialPort('/dev/tty-usbserial1', { + parser: SerialPort.parsers.byteDelimiter([10,13]) +}); +``` + +To use the byte length parser, you must provide a delimiter as a length in bytes: +```js +var SerialPort = require('serialport'); + +var port = new SerialPort('/dev/tty-usbserial1', { + parser: SerialPort.parsers.byteLength(5) +}); +``` + +You can get updates of new data from the Serial Port as follows: + +```js +port.on('data', function (data) { + console.log('Data: ' + data); +}); +``` + +You can write to the serial port by sending a string or buffer to the write method as follows: + +```js +port.write('Hi Mom!'); +port.write(new Buffer('Hi Mom!')); +``` + +Enjoy and do cool things with this code. + +## Methods + +### SerialPort (path, options, openCallback) + +Create a new serial port object for the `path`. In the case of invalid arguments or invalid options when constructing a new SerialPort it will throw an error. The port will open automatically by default which is the equivalent of calling `port.open(openCallback)` in the next tick. This can be disabled by setting the option `autoOpen` to false. + +**_path_** + +The system path of the serial port to open. For example, `/dev/tty` on Mac/Linux or `COM1` on Windows. + +**_options (optional)_** + +Port configuration options. + +* `autoOpen` Automatically opens the port on `nextTick`, defaults to `true`. +* `lock` Prevent other processes from opening the port, defaults to `true`. `false` is not currently supported on windows. +* `baudRate` Baud Rate, defaults to 9600. Should be one of: 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1800, 1200, 600, 300, 200, 150, 134, 110, 75, or 50. Custom rates as allowed by hardware is supported. Windows doesn't support custom baud rates. +* `dataBits` Data Bits, defaults to 8. Must be one of: 8, 7, 6, or 5. +* `stopBits` Stop Bits, defaults to 1. Must be one of: 1 or 2. +* `parity` Parity, defaults to 'none'. Must be one of: 'none', 'even', 'mark', 'odd', 'space' +* `rtscts` flow control, defaults to false +* `xon` flow control, defaults to false +* `xoff` flow control, defaults to false +* `xany` flow control, defaults to false +* `bufferSize` Size of read buffer, defaults to 65536. Must be an integer value. +* `parser` The parser engine to use with read data, defaults to rawPacket strategy which just emits the raw buffer as a "data" event. Can be any function that accepts EventEmitter as first parameter and the raw buffer as the second parameter. +* `platformOptions` - sets platform specific options, see below. + +#### Unix Platform Options + +These properties are ignored for windows. An object with the following properties: + +* `vmin` (default: 1) - see [`man termios`](http://linux.die.net/man/3/termios) +* `vtime` (default: 0) - see [`man termios`](http://linux.die.net/man/3/termios) + +**_`openCallback` (optional)_** + +This function is passed to `.open()` and called when a connection has been opened. The callback should be a function that looks like: `function (error) { ... }` + +**Note:** The callback will NOT be called if autoOpen is set to false as the open will not be performed. + +### .open (callback) + +Opens a connection to the given serial port. + +**_callback (optional)_** + +Called when a connection has been opened. The callback should be a function that looks like: `function (error) { ... }` + +### .isOpen() + +Returns `true` if the port is open. + +### .write (buffer, callback) + +Writes data to the given serial port. + +**_buffer_** + +The `buffer` parameter accepts a [`Buffer` ](http://nodejs.org/api/buffer.html) object, or a type that is accepted by the `Buffer` constructor (ex. an array of bytes or a string). + +**_callback (optional)_** + +Called once the write operation returns. The callback should be a function that looks like: `function (error) { ... }` + +**Note:** The write operation is non-blocking. When it returns, data may still have not actually been written to the serial port. See `drain()`. + +**Note:** Some devices like the Arduino reset when you open a connection to them. In these cases if you immediately write to the device they wont be ready to receive the data. This is often worked around by having the Arduino send a "ready" byte that your node program waits for before writing. You can also often get away with waiting around 400ms. + +### .pause () + +Pauses an open connection. + +### .resume () + +Resumes a paused connection. + +### .flush (callback) + +Flushes data received but not read. See [`tcflush()`](http://linux.die.net/man/3/tcflush) for Mac/Linux and [`FlushFileBuffers`](http://msdn.microsoft.com/en-us/library/windows/desktop/aa364439) for Windows. + +**_callback (optional)_** + +Called once the flush operation returns. The callback should be a function that looks like: `function (error) { ... }` + +### .drain (callback) + +Waits until all output data has been transmitted to the serial port. See [`tcdrain()`](http://linux.die.net/man/3/tcdrain) or [FlushFileBuffers()](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364439(v=vs.85).aspx) for more information. + +**_callback (optional)_** + +Called once the drain operation returns. The callback should be a function that looks like: `function (error) { ... }` + +**Example** + +Writes `data` and waits until it has finish transmitting to the target serial port before calling the callback. + +``` +function writeAndDrain (data, callback) { + sp.write(data, function () { + sp.drain(callback); + }); +} +``` + +### .close (callback) + +Closes an open connection. + +**_callback (optional)_** + +Called once a connection is closed. The callback should be a function that looks like: `function (error) { ... }` If called without an callback and there is an error, an error event will be emitted. + +### .set (options, callback) + +Sets flags on an open port. Uses [`SetCommMask`](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363257(v=vs.85).aspx) for windows and [`ioctl`](http://linux.die.net/man/4/tty_ioctl) for mac and linux. + +**_options (optional)_** + +All options are operating system default when the port is opened. Every flag is set on each call to the provided or default values. If options isn't provided default options will be used. + + * `brk` optional boolean, defaults to false + * `cts` optional boolean, defaults to false + * `dsr` optional boolean, defaults to false + * `dtr` optional boolean, defaults to true + * `rts` optional boolean, defaults to true + +**_callback (optional)_** + +`function(err) {}` + +Called once the port's flags have been set. If `.set` is called without an callback and there is an error, an error event will be emitted. + +### .update (options, callback) + +Changes the baudrate for an open port. Throws if you provide a bad argument. Emits an error or calls the callback if the baud rate isn't supported. + +**_options_** + + * `baudRate` Baud Rate should be one of: 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1800, 1200, 600, 300, 200, 150, 134, 110, 75, or 50. Custom rates as allowed by hardware is supported. + +**_callback (optional)_** + +`callback: function(err)` + +Called once the port's baud rate has been changed. If `.update` is called without an callback and there is an error, an error event will be emitted. + +## Events + +### .on('open', callback) +Callback is called with no arguments when the port is opened and ready for writing. This happens if you have the constructor open immediately (which opens in the next tick) or if you open the port manually with `open()`. See [Useage/Open Event](#open-event) for more information. + +### .on('data', callback) +Callback is called with data depending on your chosen parser. The default `raw` parser will have a `Buffer` object with a varying amount of data in it. The `readLine` parser will provide a string of your line. See the [parsers](#parsers) section for more information + +### .on('close', callback) +Callback is called with no arguments when the port is closed. In the event of an error, an error event will be triggered + +### .on('error', callback) +Callback is called with an error object whenever there is an error. + +### .on('disconnect', callback) +Callback is called with an error object. This will always happen before a `close` event if a disconnection is detected. + +## Command Line Tools +If you install `serialport` globally. (eg, `npm install -g serialport`) you'll receive two command line tools. + +### Serial Port List +`serialport-list` will list all available serial ports in different formats. + +```bash +$ serialport-list -h + + Usage: serialport-list [options] + + List available serial ports + + Options: + + -h, --help output usage information + -V, --version output the version number + -f, --format Format the output as text, json, or jsonline. default: text + + +$ serialport-list +/dev/cu.Bluetooth-Incoming-Port +/dev/cu.usbmodem1421 Arduino (www.arduino.cc) + +$ serialport-list -f json +[{"comName":"/dev/cu.Bluetooth-Incoming-Port"},{"comName":"/dev/cu.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"0x14200000","vendorId":"0x2341","productId":"0x0043"}] + +$ serialport-list -f jsonline +{"comName":"/dev/cu.Bluetooth-Incoming-Port"} +{"comName":"/dev/cu.usbmodem1421","manufacturer":"Arduino (www.arduino.cc)","serialNumber":"752303138333518011C1","locationId":"0x14200000","vendorId":"0x2341","productId":"0x0043"} +``` + +### Serial Port Terminal +`serialport-term provides a basic terminal interface for communicating over a serial port. `ctrl+c` will exit. + +```bash +$ serialport-term -h + + Usage: serialport-term -p [options] + + A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits. + + Options: + + -h, --help output usage information + -V, --version output the version number + -l --list List available ports then exit + -p, --port, --portname Path or Name of serial port + -b, --baud Baud rate default: 9600 + --databits Data bits default: 8 + --parity Parity default: none + --stopbits Stop bits default: 1 + --echo --localecho Print characters as you type them. + +$ serialport-term -l +/dev/cu.Bluetooth-Incoming-Port +/dev/cu.usbmodem1421 Arduino (www.arduino.cc) +``` diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-list.js b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-list.js new file mode 100644 index 0000000..070f68a --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-list.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node +'use strict'; + +var serialport = require('../'); +var version = require('../package.json').version; +var args = require('commander'); + +args + .version(version) + .description('List available serial ports') + .option('-f, --format ', 'Format the output as text, json, or jsonline. default: text', /^(text|json|jsonline)$/i, 'text') + .parse(process.argv); + +var formatters = { + text: function(err, ports) { + if (err) { + console.error(err); + process.exit(1); + } + ports.forEach(function(port) { + console.log(port.comName + '\t' + (port.pnpId || '') + '\t' + (port.manufacturer || '')); + }); + }, + json: function(err, ports) { + if (err) { + console.error(JSON.stringify(err)); + process.exit(1); + } + console.log(JSON.stringify(ports)); + }, + jsonline: function(err, ports) { + if (err) { + console.error(JSON.stringify(err)); + process.exit(1); + } + ports.forEach(function(port) { + console.log(JSON.stringify(port)); + }); + } +}; + +serialport.list(formatters[args.format]); + diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-terminal.js b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-terminal.js new file mode 100644 index 0000000..312b3b4 --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/bin/serialport-terminal.js @@ -0,0 +1,78 @@ +#!/usr/bin/env node +'use strict'; + +var SerialPort = require('../'); +var version = require('../package.json').version; +var args = require('commander'); + +args + .version(version) + .usage('-p [options]') + .description('A basic terminal interface for communicating over a serial port. Pressing ctrl+c exits.') + .option('-l --list', 'List available ports then exit') + // TODO make the port not a flag as it's always required + .option('-p, --port, --portname ', 'Path or Name of serial port') + .option('-b, --baud ', 'Baud rate default: 9600', parseInt, 9600) + .option('--databits ', 'Data bits default: 8', parseInt, 8) + .option('--parity ', 'Parity default: none', 'none') + .option('--stopbits ', 'Stop bits default: 1', parseInt, 1) + // TODO make this on by default + .option('--echo --localecho', 'Print characters as you type them.') + .parse(process.argv); + +function listPorts() { + SerialPort.list(function(err, ports) { + if (err) { + console.error('Error listing ports', err); + } else { + ports.forEach(function(port) { + console.log(port.comName + '\t' + (port.pnpId || '') + '\t' + (port.manufacturer || '')); + }); + } + }); +}; + +if (args.list) { + return listPorts(); +} + +if (!args.port) { + args.outputHelp(); + args.missingArgument('port'); + process.exit(-1); +} + +var openOptions = { + baudRate: args.baud, + dataBits: args.databits, + parity: args.parity, + stopBits: args.stopbits +}; + +var port = new SerialPort(args.port, openOptions); + +process.stdin.resume(); +process.stdin.setRawMode(true); +process.stdin.on('data', function(s) { + if (s[0] === 0x03) { + port.close(); + process.exit(0); + } + if (args.localecho) { + if (s[0] === 0x0d) { + process.stdout.write('\n'); + } else { + process.stdout.write(s); + } + } + port.write(s); +}); + +port.on('data', function(data) { + process.stdout.write(data.toString()); +}); + +port.on('error', function(err) { + console.log('Error', err); + process.exit(1); +}); diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/binding.gyp b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/binding.gyp new file mode 100644 index 0000000..d5bc26d --- /dev/null +++ b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/binding.gyp @@ -0,0 +1,51 @@ +{ + 'targets': [ + { + 'target_name': 'serialport', + 'sources': [ + 'src/serialport.cpp', + ], + 'include_dirs': [ + 'B)r+cXNjCPRvoinc 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 literal 0 HcmV?d00001 diff --git a/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_poller.o b/src/p29-arduino-server/server/node_modules/firmata/node_modules/serialport/build/Release/obj.target/serialport/src/serialport_poller.o new file mode 100644 index 0000000000000000000000000000000000000000..4d48da093999be2136b9388dcb96c9f5b98110eb GIT binary patch literal 245740 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