fix https://issues.apache.org/jira/browse/CB-257

the README.md in the weinre-node distribution is bogus

For some reason, the node_modules in weinre.server got munged.  A fresh
`npm install` got everything fixed up, but apparently auto-updated
formidable.  That's not great.  Presumably it updated due to a
"use version >= x.y.z" in one of weinre's (recursive) pre-reqs.

Beyond that, did some README.md fix ups.

Also changed the `weinre` command to load coffee-script via an
explicit path; this might not be needed (the package.json file
for coffeescript was munged, but then fixed later).
diff --git a/README.md b/README.md
index 253b2e1..5523b53 100644
--- a/README.md
+++ b/README.md
@@ -50,8 +50,8 @@
 ---------------
 
 The weinre build is currently run on a Mac OS X 10.7 laptop.  It also runs on Apache
-continuous integration servers running Linux.  It is not typically run on Windows,
-so if you issues with that, please log an issue.  
+continuous integration servers running Linux.  The build is not typically run on Windows,
+so if you have problems with that, please log an issue.  
 
 The weinre build pre-req's the following tools:
 
@@ -108,7 +108,7 @@
 ### to run the output of the development build: ###
 
 * run: `cd weinre.server`
-* run: `./weinre [your flavorite options]`
+* run: `node weinre [your flavorite options]`
 
 ### other fun development-time hacks ###
 
@@ -125,7 +125,7 @@
 completes.
 
 Putting this altogether, you can open two terminal windows, run `wr` in the `weinre.build`
-directory to have a development build run whenever you change the source, and then run `weinre.hot` in the `weinre.server` directory to have the weinre server restart whenever a build completes, getting a growl notification at that time.
+directory to have a development build run whenever you change the source, and then run `weinre-hot` in the `weinre.server` directory to have the weinre server restart whenever a build completes, getting a growl notification at that time.
 
 updating 3rd party libraries
 -----------------------------
@@ -137,7 +137,7 @@
 sure the license is acceptable, and add/update the license in the top-level `LICENSE`
 file.
 
-All of the 3rd party dependencies used with weinre are stored in two directories:
+All of the 3rd party dependencies used with weinre are stored in one of two directories:
 
 * `weinre.build/vendor` - contains libraries used in the client and/or target,
 as well as libraries used by the build itself
@@ -153,7 +153,7 @@
 
 To update the files in `weinre.server/node_modules`:
 
-* edit the file `weinre.build/package.json.template' as appropriate
+* edit the file `weinre.build/package.json.template` as appropriate
 * run a build (see above), so that the file `weinre.server/package.json` file is created
 from the template you edited above
 * run: `cd weinre.server`
diff --git a/weinre.server/README.md b/weinre.server/README.md
index fc2f570..935a407 100644
--- a/weinre.server/README.md
+++ b/weinre.server/README.md
@@ -17,31 +17,43 @@
  * under the License.
 -->
 
-The files contained in this directory are the source for the
-weinre server, implemented using the 
-[express package](http://expressjs.com/)
-on the 
-[node.js](http://nodejs.org) 
-runtime.
+weinre is WEb INspector REmote. 
+Pronounced like the word "winery". 
+Or maybe like the word "weiner". 
+Who knows, really.
 
-The weinre server uses numerous 3rd party libraries, installed in the
-`node_modules` directory, and stored in the SCM.  
-In case these need to be updated, the file
-`package.json` should be updated with the dependencies and versions
-needed, then run
+weinre is a debugger for web pages, 
+like FireBug (for FireFox) and Web Inspector (for WebKit-based browsers), 
+except it's designed to work remotely, and in particular, 
+to allow you debug web pages on a mobile device such as a phone.
 
-	rm -rf node_modules; npm install
+For more information on weinre:
+[http://http://incubator.apache.org/callback/](http://incubator.apache.org/callback/)
 
-to refresh the dependencies.
+running
+-------
 
+For more information about running weinre, you can start the server
+and browse the documentation online.
 
-before running the weinre server
---------------------------------
+Start the server with the following command
 
-Before running the weinre server, after downloading the source,
-you will need to run a 'build'.
+    node weinre
+    
+This will start the server, and display a message with the URL to the
+server.  Browse to that URL in your web browser, and then click on 
+'documentation' link, which will display weinre's online documentation.
+From there click on the 'Running' page to get more information about 
+running weinre.
 
+source
+------
 
-running the weinre server
--------------------------
+Follow the link for more information at the top of this file 
+for instructions on obtaining source.
+
+If you're reading this file as part of the source distribution of weinre,
+you will need to run a 'build' before being able to run weinre.  See the
+`README.md` file in the root directory of the weinre source distribution
+for more information.
 
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.gitignore b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.gitignore
deleted file mode 100644
index b72f74f..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/test/tmp
-*.upload
-*.un~
-/node_modules
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
index ca3c00a..3427514 100644
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md
@@ -22,6 +22,23 @@
 
 ## Changelog
 
+### v1.0.9
+
+* Emit progress when content length header parsed (Tim Koschützki)
+* Fix Readme syntax due to GitHub changes (goob)
+* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)
+
+### v1.0.8
+
+* Strip potentially unsafe characters when using `keepExtensions: true`.
+* Switch to utest / urun for testing
+* Add travis build
+
+### v1.0.7
+
+* Remove file from package that was causing problems when installing on windows. (#102)
+* Fix typos in Readme (Jason Davies).
+
 ### v1.0.6
 
 * Do not default to the default to the field name for file uploads where
@@ -125,7 +142,7 @@
     var formidable = require('formidable'),
         http = require('http'),
 
-        sys = require('sys');
+        util = require('util');
 
     http.createServer(function(req, res) {
       if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
@@ -134,7 +151,7 @@
         form.parse(req, function(err, fields, files) {
           res.writeHead(200, {'content-type': 'text/plain'});
           res.write('received upload:\n\n');
-          res.end(sys.inspect({fields: fields, files: files}));
+          res.end(util.inspect({fields: fields, files: files}));
         });
         return;
       }
@@ -154,43 +171,43 @@
 
 ### formidable.IncomingForm
 
-#### new formidable.IncomingForm()
+__new formidable.IncomingForm()__
 
 Creates a new incoming form.
 
-#### incomingForm.encoding = 'utf-8'
+__incomingForm.encoding = 'utf-8'__
 
 The encoding to use for incoming form fields.
 
-#### incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()
+__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__
 
 The directory for placing file uploads in. You can move them later on using
 `fs.rename()`. The default directory is picked at module load time depending on
 the first existing directory from those listed above.
 
-#### incomingForm.keepExtensions = false
+__incomingForm.keepExtensions = false__
 
 If you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`.
 
-#### incomingForm.type
+__incomingForm.type__
 
 Either 'multipart' or 'urlencoded' depending on the incoming request.
 
-#### incomingForm.maxFieldsSize = 2 * 1024 * 1024
+__incomingForm.maxFieldsSize = 2 * 1024 * 1024__
 
 Limits the amount of memory a field (not file) can allocate in bytes.
 If this value is exceeded, an `'error'` event is emitted. The default
 size is 2MB.
 
-#### incomingForm.bytesReceived
+__incomingForm.bytesReceived__
 
 The amount of bytes received for this form so far.
 
-#### incomingForm.bytesExpected
+__incomingForm.bytesExpected__
 
 The expected number of bytes in this form.
 
-#### incomingForm.parse(request, [cb])
+__incomingForm.parse(request, [cb])__
 
 Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:
 
@@ -198,7 +215,7 @@
       // ...
     });
 
-#### incomingForm.onPart(part)
+__incomingForm.onPart(part)__
 
 You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events  processing which would occur otherwise, making you fully responsible for handling the processing.
 
@@ -219,56 +236,56 @@
 
 Check the code in this method for further inspiration.
 
-#### Event: 'progress' (bytesReceived, bytesExpected)
+__Event: 'progress' (bytesReceived, bytesExpected)__
 
 Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.
 
-#### Event: 'field' (name, value)
+__Event: 'field' (name, value)__
 
 Emitted whenever a field / value pair has been received.
 
-#### Event: 'fileBegin' (name, file)
+__Event: 'fileBegin' (name, file)__
 
 Emitted whenever a new file is detected in the upload stream. Use this even if
 you want to stream the file to somewhere else while buffering the upload on
 the file system.
 
-#### Event: 'file' (name, file)
+__Event: 'file' (name, file)__
 
 Emitted whenever a field / file pair has been received. `file` is an instance of `File`.
 
-#### Event: 'error' (err)
+__Event: 'error' (err)__
 
 Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.
 
-#### Event: 'aborted'
+__Event: 'aborted'__
 
 Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).
 
-#### Event: 'end' ()
+__Event: 'end' ()__
 
 Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.
 
 ### formidable.File
 
-#### file.size = 0
+__file.size = 0__
 
 The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.
 
-#### file.path = null
+__file.path = null__
 
 The path this file is being written to. You can modify this in the `'fileBegin'` event in
 case you are unhappy with the way formidable generates a temporary path for your files.
 
-#### file.name = null
+__file.name = null__
 
 The name this file had according to the uploading client.
 
-#### file.type = null
+__file.type = null__
 
 The mime type of this file, according to the uploading client.
 
-#### file.lastModifiedDate = null
+__file.lastModifiedDate = null__
 
 A date object (or `null`) containing the time this file was last written to. Mostly
 here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
index 7b1ddaf..b1e2bfb 100644
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js
@@ -247,6 +247,7 @@
   if (this.headers['content-length']) {
     this.bytesReceived = 0;
     this.bytesExpected = parseInt(this.headers['content-length'], 10);
+    this.emit('progress', this.bytesReceived, this.bytesExpected);
   }
 };
 
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http
deleted file mode 100644
index e0dee27..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http
+++ /dev/null
@@ -1,13 +0,0 @@
-POST /upload HTTP/1.1

-Host: localhost:8080

-Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG

-Content-Length: 1000

-

-------WebKitFormBoundarytyE4wkKlZ5CQJVTG

-Content-Disposition: form-data; name="upload"; filename=""

-Content-Type: text/plain

-

-I am a plain text file
-

-------WebKitFormBoundarytyE4wkKlZ5CQJVTG--

-
diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http
deleted file mode 100644
index 4ef3917..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http
+++ /dev/null
@@ -1,26 +0,0 @@
-POST /upload HTTP/1.1

-Host: localhost:8080

-Connection: keep-alive

-Referer: http://localhost:8080/

-Content-Length: 383

-Cache-Control: max-age=0

-Origin: http://localhost:8080

-User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1

-Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG

-Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

-Accept-Encoding: gzip,deflate,sdch

-Accept-Language: en-US,en;q=0.8

-Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

-Cookie: jqCookieJar_tablesorter=%7B%22showListTable%22%3A%5B%5B5%2C1%5D%2C%5B1%2C0%5D%5D%7D

-

-------WebKitFormBoundarytyE4wkKlZ5CQJVTG

-Content-Disposition: form-data; name="title"

-

-Weird filename

-------WebKitFormBoundarytyE4wkKlZ5CQJVTG

-Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: text/plain

-

-I am a text file with a funky name!
-

-------WebKitFormBoundarytyE4wkKlZ5CQJVTG--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http
deleted file mode 100644
index bf49f85..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http
+++ /dev/null
@@ -1,24 +0,0 @@
-POST /upload HTTP/1.1

-Host: localhost:8080

-User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22

-Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

-Accept-Language: en-us,en;q=0.5

-Accept-Encoding: gzip,deflate

-Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

-Keep-Alive: 115

-Connection: keep-alive

-Referer: http://localhost:8080/

-Content-Type: multipart/form-data; boundary=---------------------------9849436581144108930470211272

-Content-Length: 438

-

------------------------------9849436581144108930470211272

-Content-Disposition: form-data; name="title"

-

-Weird filename

------------------------------9849436581144108930470211272

-Content-Disposition: form-data; name="upload"; filename=": \ ? % * | " < > . &#9731; ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: text/plain

-

-I am a text file with a funky name!
-

------------------------------9849436581144108930470211272--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http
deleted file mode 100644
index ff158a4..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http
+++ /dev/null
@@ -1,23 +0,0 @@
-POST /upload HTTP/1.1

-Host: localhost:8080

-Origin: http://localhost:8080

-Content-Length: 383

-User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1

-Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQJZ1gvhvdgfisJPJ

-Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

-Referer: http://localhost:8080/

-Accept-Language: en-us

-Accept-Encoding: gzip, deflate

-Connection: keep-alive

-

-------WebKitFormBoundaryQJZ1gvhvdgfisJPJ

-Content-Disposition: form-data; name="title"

-

-Weird filename

-------WebKitFormBoundaryQJZ1gvhvdgfisJPJ

-Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: text/plain

-

-I am a text file with a funky name!
-

-------WebKitFormBoundaryQJZ1gvhvdgfisJPJ--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http
deleted file mode 100644
index f0fc533..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http
+++ /dev/null
@@ -1,24 +0,0 @@
-POST /upload HTTP/1.1

-Host: 192.168.56.1:8080

-Connection: keep-alive

-Referer: http://192.168.56.1:8080/

-Content-Length: 344

-Cache-Control: max-age=0

-Origin: http://192.168.56.1:8080

-User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30

-Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEvqBNplR3ByrwQPa

-Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

-Accept-Encoding: gzip,deflate,sdch

-Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

-Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

-

-------WebKitFormBoundaryEvqBNplR3ByrwQPa

-Content-Disposition: form-data; name="title"

-

-Weird filename

-------WebKitFormBoundaryEvqBNplR3ByrwQPa

-Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: text/plain

-

-

-------WebKitFormBoundaryEvqBNplR3ByrwQPa--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http
deleted file mode 100644
index 2e2c61c..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http
+++ /dev/null
@@ -1,22 +0,0 @@
-POST /upload HTTP/1.1

-Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*

-Referer: http://192.168.56.1:8080/

-Accept-Language: de

-User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

-Content-Type: multipart/form-data; boundary=---------------------------7db1fe232017c

-Accept-Encoding: gzip, deflate

-Host: 192.168.56.1:8080

-Content-Length: 368

-Connection: Keep-Alive

-Cache-Control: no-cache

-

------------------------------7db1fe232017c

-Content-Disposition: form-data; name="title"

-

-Weird filename

------------------------------7db1fe232017c

-Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . &#9731; ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: application/octet-stream

-

-

------------------------------7db1fe232017c--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http
deleted file mode 100644
index e2b94fa..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http
+++ /dev/null
@@ -1,22 +0,0 @@
-POST /upload HTTP/1.1

-Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*

-Referer: http://192.168.56.1:8080/

-Accept-Language: de

-User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)

-Content-Type: multipart/form-data; boundary=---------------------------7db3a8372017c

-Accept-Encoding: gzip, deflate

-Host: 192.168.56.1:8080

-Content-Length: 368

-Connection: Keep-Alive

-Cache-Control: no-cache

-

------------------------------7db3a8372017c

-Content-Disposition: form-data; name="title"

-

-Weird filename

------------------------------7db3a8372017c

-Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . &#9731; ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: application/octet-stream

-

-

------------------------------7db3a8372017c--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http
deleted file mode 100644
index 6379ac0..0000000
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http
+++ /dev/null
@@ -1,22 +0,0 @@
-POST /upload HTTP/1.1

-Host: 192.168.56.1:8080

-Referer: http://192.168.56.1:8080/

-Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

-Accept-Language: en-US

-Origin: http://192.168.56.1:8080

-User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

-Accept-Encoding: gzip, deflate

-Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykmaWSUbu697WN9TM

-Content-Length: 344

-Connection: keep-alive

-

-------WebKitFormBoundarykmaWSUbu697WN9TM

-Content-Disposition: form-data; name="title"

-

-Weird filename

-------WebKitFormBoundarykmaWSUbu697WN9TM

-Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"

-Content-Type: text/plain

-

-

-------WebKitFormBoundarykmaWSUbu697WN9TM--

diff --git a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
index de2bd0c..b64df8b 100644
--- a/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
+++ b/weinre.server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js
@@ -372,15 +372,26 @@
 
   form.headers = {};
   form._parseContentLength();
+  assert.strictEqual(form.bytesReceived, null);
   assert.strictEqual(form.bytesExpected, null);
 
   form.headers['content-length'] = '8';
+  gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
+    assert.equal(event, 'progress');
+    assert.equal(bytesReceived, 0);
+    assert.equal(bytesExpected, 8);
+  });
   form._parseContentLength();
   assert.strictEqual(form.bytesReceived, 0);
   assert.strictEqual(form.bytesExpected, 8);
 
   // JS can be evil, lets make sure we are not
   form.headers['content-length'] = '08';
+  gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) {
+    assert.equal(event, 'progress');
+    assert.equal(bytesReceived, 0);
+    assert.equal(bytesExpected, 8);
+  });
   form._parseContentLength();
   assert.strictEqual(form.bytesExpected, 8);
 });
diff --git a/weinre.server/node_modules/express/node_modules/mime/README.md b/weinre.server/node_modules/express/node_modules/mime/README.md
index a157de1..d8b66a8 100644
--- a/weinre.server/node_modules/express/node_modules/mime/README.md
+++ b/weinre.server/node_modules/express/node_modules/mime/README.md
@@ -1,6 +1,6 @@
 # mime
 
-Support for mapping between file extensions and MIME types.  This module uses the latest version of the Apache "mime.types" file (maps over 620 types to 800+ extensions).  It is also trivially easy to add your own types and extensions, should you need to do that.
+Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.
 
 ## Install
 
@@ -11,30 +11,36 @@
 ## API - Queries
 
 ### mime.lookup(path)
-Get the mime type associated with a file. This is method is case-insensitive. Everything in path up to and including the last '/' or '.' is ignored, so you can pass it paths, filenames, or extensions, like so:
+Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.').  E.g.
 
     var mime = require('mime');
 
     mime.lookup('/path/to/file.txt');         // => 'text/plain'
     mime.lookup('file.txt');                  // => 'text/plain'
-    mime.lookup('.txt');                      // => 'text/plain'
+    mime.lookup('.TXT');                      // => 'text/plain'
     mime.lookup('htm');                       // => 'text/html'
 
-### mime.extension(type) - lookup the default extension for type
+### mime.extension(type)
+Get the default extension for `type`
 
     mime.extension('text/html');                 // => 'html'
     mime.extension('application/octet-stream');  // => 'bin'
 
-### mime.charsets.lookup() - map mime-type to charset
+### mime.charsets.lookup()
+
+Map mime-type to charset
 
     mime.charsets.lookup('text/plain');        // => 'UTF-8'
 
 (The logic for charset lookups is pretty rudimentary.  Feel free to suggest improvements.)
 
-## API - Customizing
+## API - Defining Custom Types
 
 The following APIs allow you to add your own type mappings within your project.  If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).
-### mime.define() - Add custom mime/extension mappings
+
+### mime.define()
+
+Add custom mime/extension mappings
 
     mime.define({
         'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
@@ -43,8 +49,15 @@
     });
 
     mime.lookup('x-sft');                 // => 'text/x-some-format'
+
+The first entry in the extensions array is returned by `mime.extension()`. E.g.
+
     mime.extension('text/x-some-format'); // => 'x-sf'
 
-### mime.load(filepath) - Load mappings from an Apache ".types" format file
+### mime.load(filepath)
+
+Load mappings from an Apache ".types" format file
 
     mime.load('./my_project.types');
+
+The .types file format is simple -  See the `types` dir for examples.
diff --git a/weinre.server/node_modules/express/node_modules/mime/mime.js b/weinre.server/node_modules/express/node_modules/mime/mime.js
index 5fac753..64dbeec 100644
--- a/weinre.server/node_modules/express/node_modules/mime/mime.js
+++ b/weinre.server/node_modules/express/node_modules/mime/mime.js
@@ -2,11 +2,11 @@
     fs = require('fs');
 
 var mime = module.exports = {
-  /** Map of extension to mime type */
-  types: {},
+  // Map of extension to mime type
+  types: Object.create(null),
 
-  /** Map of mime type to extension */
-  extensions :{},
+  // Map of mime type to extension
+  extensions :Object.create(null),
 
   /**
    * Define mimetype -> extension mappings.  Each key is a mime-type that maps
@@ -60,7 +60,8 @@
    */
   lookup: function(path, fallback) {
     var ext = path.replace(/.*[\.\/]/, '').toLowerCase();
-    return mime.types[ext] || fallback || mime.default_type;
+
+    return mime.types[ext] || fallback || mime.default_type
   },
 
   /**
diff --git a/weinre.server/node_modules/express/node_modules/mime/test.js b/weinre.server/node_modules/express/node_modules/mime/test.js
index b904895..8a8a5b1 100644
--- a/weinre.server/node_modules/express/node_modules/mime/test.js
+++ b/weinre.server/node_modules/express/node_modules/mime/test.js
@@ -1,79 +1,53 @@
 /**
- * Requires the async_testing module
- *
  * Usage: node test.js
  */
+
 var mime = require('./mime');
-exports["test mime lookup"] = function(test) {
-  // easy
-  test.equal('text/plain', mime.lookup('text.txt'));
+var assert = require('assert');
 
-  // hidden file or multiple periods
-  test.equal('text/plain', mime.lookup('.text.txt'));
-
-  // just an extension
-  test.equal('text/plain', mime.lookup('.txt'));
-
-  // just an extension without a dot
-  test.equal('text/plain', mime.lookup('txt'));
-
-  // default
-  test.equal('application/octet-stream', mime.lookup('text.nope'));
-
-  // fallback
-  test.equal('fallback', mime.lookup('text.fallback', 'fallback'));
-
-  test.finish();
-};
-
-exports["test extension lookup"] = function(test) {
-  // easy
-  test.equal('txt', mime.extension(mime.types.text));
-  test.equal('html', mime.extension(mime.types.htm));
-  test.equal('bin', mime.extension('application/octet-stream'));
-
-  test.finish();
-};
-
-exports["test mime lookup uppercase"] = function(test) {
-  // easy
-  test.equal('text/plain', mime.lookup('TEXT.TXT'));
-
-  // just an extension
-  test.equal('text/plain', mime.lookup('.TXT'));
-
-  // just an extension without a dot
-  test.equal('text/plain', mime.lookup('TXT'));
-
-  // default
-  test.equal('application/octet-stream', mime.lookup('TEXT.NOPE'));
-
-  // fallback
-  test.equal('fallback', mime.lookup('TEXT.FALLBACK', 'fallback'));
-
-  test.finish();
-};
-
-exports["test custom types"] = function(test) {
-  test.equal('application/octet-stream', mime.lookup('file.buffer'));
-  test.equal('audio/mp4', mime.lookup('file.m4a'));
-
-  test.finish();
-};
-
-exports["test charset lookup"] = function(test) {
-  // easy
-  test.equal('UTF-8', mime.charsets.lookup('text/plain'));
-
-  // none
-  test.ok(typeof mime.charsets.lookup(mime.types.js) == 'undefined');
-
-  // fallback
-  test.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
-
-  test.finish();
-};
-
-if (module == require.main) {
-  require('async_testing').run(__filename, process.ARGV);
+function eq(a, b) {
+  console.log('Test: ' + a + ' === ' + b);
+  assert.strictEqual.apply(null, arguments);
 }
+
+console.log(Object.keys(mime.extensions).length + ' types');
+console.log(Object.keys(mime.types).length + ' extensions\n');
+
+//
+// Test mime lookups
+//
+
+eq('text/plain', mime.lookup('text.txt'));
+eq('text/plain', mime.lookup('.text.txt'));
+eq('text/plain', mime.lookup('.txt'));
+eq('text/plain', mime.lookup('txt'));
+eq('application/octet-stream', mime.lookup('text.nope'));
+eq('fallback', mime.lookup('text.fallback', 'fallback'));
+eq('application/octet-stream', mime.lookup('constructor'));
+eq('text/plain', mime.lookup('TEXT.TXT'));
+
+//
+// Test extensions
+//
+
+eq('txt', mime.extension(mime.types.text));
+eq('html', mime.extension(mime.types.htm));
+eq('bin', mime.extension('application/octet-stream'));
+eq(undefined, mime.extension('constructor'));
+
+//
+// Test node types
+//
+
+eq('application/octet-stream', mime.lookup('file.buffer'));
+eq('audio/mp4', mime.lookup('file.m4a'));
+
+//
+// Test charsets
+//
+
+eq('UTF-8', mime.charsets.lookup('text/plain'));
+eq(undefined, mime.charsets.lookup(mime.types.js));
+eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
+
+console.log('\nOK');
diff --git a/weinre.server/node_modules/express/node_modules/mime/types/mime.types b/weinre.server/node_modules/express/node_modules/mime/types/mime.types
index 6a90929..b3cae2e 100644
--- a/weinre.server/node_modules/express/node_modules/mime/types/mime.types
+++ b/weinre.server/node_modules/express/node_modules/mime/types/mime.types
@@ -26,7 +26,9 @@
 # application/auth-policy+xml
 # application/batch-smtp
 # application/beep+xml
+# application/calendar+xml
 # application/cals-1840
+# application/ccmp+xml
 application/ccxml+xml				ccxml
 application/cdmi-capability			cdmia
 application/cdmi-container			cdmic
@@ -83,6 +85,7 @@
 # application/index.obj
 # application/index.response
 # application/index.vnd
+application/inkml+xml				ink inkml
 # application/iotp
 application/ipfix				ipfix
 # application/ipp
@@ -147,6 +150,7 @@
 application/oebps-package+xml			opf
 application/ogg					ogx
 application/onenote				onetoc onetoc2 onetmp onepkg
+application/oxps				oxps
 # application/parityfec
 application/patch-ops-error+xml			xer
 application/pdf					pdf
@@ -185,6 +189,10 @@
 # application/riscos
 # application/rlmi+xml
 application/rls-services+xml			rs
+application/rpki-ghostbusters			gbr
+application/rpki-manifest			mft
+application/rpki-roa				roa
+# application/rpki-updown
 application/rsd+xml				rsd
 application/rss+xml				rss
 application/rtf					rtf
@@ -238,6 +246,7 @@
 application/timestamped-data			tsd
 # application/tve-trigger
 # application/ulpfec
+# application/vcard+xml
 # application/vemmi
 # application/vividence.scriptfile
 # application/vnd.3gpp.bsf+xml
@@ -275,6 +284,7 @@
 application/vnd.apple.mpegurl			m3u8
 # application/vnd.arastra.swi
 application/vnd.aristanetworks.swi		swi
+application/vnd.astraea-software.iota		iota
 application/vnd.audiograph			aep
 # application/vnd.autopackage
 # application/vnd.avistar+xml
@@ -295,6 +305,7 @@
 application/vnd.clonk.c4group			c4g c4d c4f c4p c4u
 application/vnd.cluetrust.cartomobile-config		c11amc
 application/vnd.cluetrust.cartomobile-config-pkg	c11amz
+# application/vnd.collection+json
 # application/vnd.commerce-battelle
 application/vnd.commonspace			csp
 application/vnd.contact.cmsg			cdbcmsg
@@ -312,6 +323,7 @@
 application/vnd.cups-ppd			ppd
 # application/vnd.cups-raster
 # application/vnd.cups-raw
+# application/vnd.curl
 application/vnd.curl.car			car
 application/vnd.curl.pcurl			pcurl
 # application/vnd.cybank
@@ -319,6 +331,7 @@
 application/vnd.dece.data			uvf uvvf uvd uvvd
 application/vnd.dece.ttml+xml			uvt uvvt
 application/vnd.dece.unspecified		uvx uvvx
+application/vnd.dece.zip			uvz uvvz
 application/vnd.denovo.fcselayout-link		fe_launch
 # application/vnd.dir-bi.plate-dl-nosuffix
 application/vnd.dna				dna
@@ -358,6 +371,7 @@
 # application/vnd.ecowin.seriesupdate
 # application/vnd.emclient.accessrequest+xml
 application/vnd.enliven				nml
+# application/vnd.eprints.data+xml
 application/vnd.epson.esf			esf
 application/vnd.epson.msf			msf
 application/vnd.epson.quickanime		qam
@@ -433,6 +447,7 @@
 application/vnd.groove-tool-message		gtm
 application/vnd.groove-tool-template		tpl
 application/vnd.groove-vcard			vcg
+# application/vnd.hal+json
 application/vnd.hal+xml				hal
 application/vnd.handheld-entertainment+xml	zmm
 application/vnd.hbci				hbci
@@ -588,6 +603,7 @@
 # application/vnd.music-niff
 application/vnd.musician			mus
 application/vnd.muvee.style			msty
+application/vnd.mynfc				taglet
 # application/vnd.ncd.control
 # application/vnd.ncd.reference
 # application/vnd.nervana
@@ -636,6 +652,7 @@
 application/vnd.oasis.opendocument.text-template	ott
 application/vnd.oasis.opendocument.text-web		oth
 # application/vnd.obn
+# application/vnd.oftn.l10n+json
 # application/vnd.oipf.contentaccessdownload+xml
 # application/vnd.oipf.contentaccessstreaming+xml
 # application/vnd.oipf.cspg-hexbinary
@@ -665,12 +682,15 @@
 # application/vnd.oma.bcast.sprov+xml
 # application/vnd.oma.bcast.stkm
 # application/vnd.oma.cab-address-book+xml
+# application/vnd.oma.cab-feature-handler+xml
 # application/vnd.oma.cab-pcc+xml
+# application/vnd.oma.cab-user-prefs+xml
 # application/vnd.oma.dcd
 # application/vnd.oma.dcdc
 application/vnd.oma.dd2+xml			dd2
 # application/vnd.oma.drm.risd+xml
 # application/vnd.oma.group-usage-list+xml
+# application/vnd.oma.pal+xml
 # application/vnd.oma.poc.detailed-progress-report+xml
 # application/vnd.oma.poc.final-report+xml
 # application/vnd.oma.poc.groups+xml
@@ -857,6 +877,7 @@
 application/vnd.stardivision.math		smf
 application/vnd.stardivision.writer		sdw vor
 application/vnd.stardivision.writer-global	sgl
+application/vnd.stepmania.package		smzip
 application/vnd.stepmania.stepchart		sm
 # application/vnd.street-stream
 application/vnd.sun.xml.calc			sxc
@@ -880,6 +901,7 @@
 # application/vnd.syncml.dm.notification
 # application/vnd.syncml.ds.notification
 application/vnd.tao.intent-module-archive	tao
+application/vnd.tcpdump.pcap			pcap cap dmp
 application/vnd.tmobile-livetv			tmo
 application/vnd.trid.tpt			tpt
 application/vnd.triscape.mxs			mxs
@@ -949,6 +971,7 @@
 # application/vnd.yamaha.remote-setup
 application/vnd.yamaha.smaf-audio		saf
 application/vnd.yamaha.smaf-phrase		spf
+# application/vnd.yamaha.through-ngn
 # application/vnd.yamaha.tunnel-udpencap
 application/vnd.yellowriver-custom-menu		cmp
 application/vnd.zul				zir zirz
@@ -1096,6 +1119,7 @@
 # audio/dsr-es202050
 # audio/dsr-es202211
 # audio/dsr-es202212
+# audio/dv
 # audio/dvi4
 # audio/eac3
 # audio/evrc
@@ -1109,6 +1133,7 @@
 # audio/evrcwb0
 # audio/evrcwb1
 # audio/example
+# audio/fwdred
 # audio/g719
 # audio/g722
 # audio/g7221
@@ -1126,6 +1151,7 @@
 # audio/gsm-efr
 # audio/gsm-hr-08
 # audio/ilbc
+# audio/ip-mr_v2.5
 # audio/l16
 # audio/l20
 # audio/l24
@@ -1186,6 +1212,7 @@
 audio/vnd.dra					dra
 audio/vnd.dts					dts
 audio/vnd.dts.hd				dtshd
+# audio/vnd.dvb.file				dvb
 # audio/vnd.everad.plj
 # audio/vnd.hns.audio
 audio/vnd.lucent.voice				lvp
@@ -1337,6 +1364,7 @@
 # text/ecmascript
 # text/enriched
 # text/example
+# text/fwdred
 text/html					html htm
 # text/javascript
 text/n3						n3
@@ -1358,12 +1386,14 @@
 text/turtle					ttl
 # text/ulpfec
 text/uri-list					uri uris urls
+text/vcard					vcard
 # text/vnd.abc
 text/vnd.curl					curl
 text/vnd.curl.dcurl				dcurl
 text/vnd.curl.scurl				scurl
 text/vnd.curl.mcurl				mcurl
 # text/vnd.dmclientscript
+text/vnd.dvb.subtitle				sub
 # text/vnd.esmertec.theme-descriptor
 text/vnd.fly					fly
 text/vnd.fmi.flexstor				flx
@@ -1443,6 +1473,7 @@
 # video/vnd.directv.mpeg
 # video/vnd.directv.mpeg-tts
 # video/vnd.dlna.mpeg-tts
+video/vnd.dvb.file				dvb
 video/vnd.fvt					fvt
 # video/vnd.hns.video
 # video/vnd.iptvforum.1dparityfec-1010
diff --git a/weinre.server/node_modules/express/node_modules/mime/types/node.types b/weinre.server/node_modules/express/node_modules/mime/types/node.types
index fdabaa4..f7da49f 100644
--- a/weinre.server/node_modules/express/node_modules/mime/types/node.types
+++ b/weinre.server/node_modules/express/node_modules/mime/types/node.types
@@ -41,3 +41,8 @@
 # Why: See https://github.com/bentomas/node-mime/pull/6
 # Added by: mjrusso
 video/MP2T  ts
+
+# What: The FLAC lossless codec format
+# Why: Streaming and serving FLAC audio
+# Added by: jacobrask
+audio/flac  flac
\ No newline at end of file
diff --git a/weinre.server/weinre b/weinre.server/weinre
index d1b9904..55b7f65 100755
--- a/weinre.server/weinre
+++ b/weinre.server/weinre
@@ -25,9 +25,11 @@
 
 var path = require('path')
 var fs   = require('fs')
-var lib  = path.join(path.dirname(fs.realpathSync(__filename)), 'lib')
 
-require('coffee-script')
+var rootPath = path.dirname(fs.realpathSync(__filename))
 
-var cli = require(lib + '/cli')
-cli.run()
+var lib          = path.join(rootPath, 'lib')
+var node_modules = path.join(rootPath, 'node_modules')
+
+require(path.join(node_modules, 'coffee-script'))
+require(path.join(lib, '/cli')).run()
diff --git a/weinre.server/weinre-hot b/weinre.server/weinre-hot
index 2287149..cce978b 100755
--- a/weinre.server/weinre-hot
+++ b/weinre.server/weinre-hot
@@ -25,6 +25,6 @@
 # to determine whether to kill and restart the server.
 
 cd `dirname $0`
-supervisor -n -p 1 -e txt -w ../weinre.build/out/build-done.txt ./weinre
+supervisor -n -p 1 -e txt -w ../weinre.build/out/build-done.txt node weinre
 
 # supervisor: https://github.com/isaacs/node-supervisor
\ No newline at end of file