Description: Bundle ms module as patch.
 It is exported by debug as "humanize".
Author: Leo Iannacone <l3on@ubuntu.com>
Forwarded: not-needed

--- /dev/null
+++ b/node_modules/ms/.gitignore
@@ -0,0 +1 @@
+node_modules
diff --git a/node_modules/ms/.npmignore b/node_modules/ms/.npmignore
new file mode 100644
index 0000000..d1aa0ce
--- /dev/null
+++ b/node_modules/ms/.npmignore
@@ -0,0 +1,5 @@
+node_modules
+test
+History.md
+Makefile
+component.json
diff --git a/node_modules/ms/History.md b/node_modules/ms/History.md
new file mode 100644
index 0000000..a47a1c3
--- /dev/null
+++ b/node_modules/ms/History.md
@@ -0,0 +1,53 @@
+
+0.6.2 / 2013-12-05
+==================
+
+ * Adding repository section to package.json to suppress warning from NPM.
+
+0.6.1 / 2013-05-10
+==================
+
+  * fix singularization [visionmedia]
+
+0.6.0 / 2013-03-15
+==================
+
+  * fix minutes
+
+0.5.1 / 2013-02-24
+==================
+
+  * add component namespace
+
+0.5.0 / 2012-11-09
+==================
+
+  * add short formatting as default and .long option
+  * add .license property to component.json
+  * add version to component.json
+
+0.4.0 / 2012-10-22
+==================
+
+  * add rounding to fix crazy decimals
+
+0.3.0 / 2012-09-07
+==================
+
+  * fix `ms(<String>)` [visionmedia]
+
+0.2.0 / 2012-09-03
+==================
+
+  * add component.json [visionmedia]
+  * add days support [visionmedia]
+  * add hours support [visionmedia]
+  * add minutes support [visionmedia]
+  * add seconds support [visionmedia]
+  * add ms string support [visionmedia]
+  * refactor tests to facilitate ms(number) [visionmedia]
+
+0.1.0 / 2012-03-07
+==================
+
+  * Initial release
diff --git a/node_modules/ms/LICENSE b/node_modules/ms/LICENSE
new file mode 100644
index 0000000..6c07561
--- /dev/null
+++ b/node_modules/ms/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch <rauchg@gmail.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/node_modules/ms/Makefile b/node_modules/ms/Makefile
new file mode 100644
index 0000000..0ae97b3
--- /dev/null
+++ b/node_modules/ms/Makefile
@@ -0,0 +1,8 @@
+
+test:
+	@./node_modules/.bin/mocha test/test.js
+
+test-browser:
+	./node_modules/.bin/serve test/
+
+.PHONY: test
diff --git a/node_modules/ms/README.md b/node_modules/ms/README.md
new file mode 100644
index 0000000..0fd54fd
--- /dev/null
+++ b/node_modules/ms/README.md
@@ -0,0 +1,35 @@
+# ms.js: miliseconds conversion utility
+
+```js
+ms('2 days')  // 172800000
+ms('1d')      // 86400000
+ms('10h')     // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h')      // 7200000
+ms('1m')      // 60000
+ms('5s')      // 5000
+ms('100')     // 100
+```
+
+```js
+ms(60000)             // "1m"
+ms(2 * 60000)         // "2m"
+ms(ms('10 hours'))    // "10h"
+```
+
+```js
+ms(60000, { long: true })             // "1 minute"
+ms(2 * 60000, { long: true })         // "2 minutes"
+ms(ms('10 hours'), { long: true })    // "10 hours"
+```
+
+- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](nodejs.org/download).
+- If a number is supplied to `ms`, a string with a unit is returned.
+- If a string that contains the number is supplied, it returns it as
+a number (e.g: it returns `100` for `'100'`).
+- If you pass a string with a number and a valid unit, the number of
+equivalent ms is returned.
+
+## License
+
+MIT
diff --git a/node_modules/ms/component.json b/node_modules/ms/component.json
new file mode 100644
index 0000000..2d7bbff
--- /dev/null
+++ b/node_modules/ms/component.json
@@ -0,0 +1,15 @@
+{
+  "name": "ms",
+  "repo": "guille/ms.js",
+  "version": "0.6.1",
+  "description": "ms parsing / formatting",
+  "keywords": [
+    "ms",
+    "parse",
+    "format"
+  ],
+  "scripts": [
+    "index.js"
+  ],
+  "license": "MIT"
+}
diff --git a/node_modules/ms/index.js b/node_modules/ms/index.js
new file mode 100644
index 0000000..e79bfa1
--- /dev/null
+++ b/node_modules/ms/index.js
@@ -0,0 +1,123 @@
+/**
+ * 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
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options){
+  options = options || {};
+  if ('string' == typeof val) return parse(val);
+  return options.long
+    ? long(val)
+    : short(val);
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+  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;
+  }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function short(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 long(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';
+}
diff --git a/node_modules/ms/package.json b/node_modules/ms/package.json
new file mode 100644
index 0000000..f21f90f
--- /dev/null
+++ b/node_modules/ms/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "ms",
+  "version": "0.6.2",
+  "description": "Tiny ms conversion utility",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/guille/ms.js.git"
+  },
+  "main": "./index",
+  "devDependencies": {
+    "mocha": "*",
+    "expect.js": "*",
+    "serve": "*"
+  },
+  "component": {
+    "scripts": {
+      "ms/index.js": "index.js"
+    }
+  }
+}
diff --git a/node_modules/ms/test/test.js b/node_modules/ms/test/test.js
new file mode 100644
index 0000000..d7aa8d1
--- /dev/null
+++ b/node_modules/ms/test/test.js
@@ -0,0 +1,157 @@
+
+/**
+ * Dependencies.
+ */
+
+if ('undefined' != typeof require) {
+  expect = require('expect.js');
+  ms = require('../');
+}
+
+// strings
+
+describe('ms(string)', function(){
+  it('should preserve ms', function () {
+    expect(ms('100')).to.be(100);
+  });
+
+  it('should convert from m to ms', function () {
+    expect(ms('1m')).to.be(60000);
+  });
+
+  it('should convert from h to ms', function () {
+    expect(ms('1h')).to.be(3600000);
+  });
+
+  it('should convert d to ms', function () {
+    expect(ms('2d')).to.be(172800000);
+  });
+
+  it('should convert s to ms', function () {
+    expect(ms('1s')).to.be(1000);
+  });
+
+  it('should convert ms to ms', function () {
+    expect(ms('100ms')).to.be(100);
+  });
+
+  it('should work with decimals', function () {
+    expect(ms('1.5h')).to.be(5400000);
+  });
+
+  it('should work with multiple spaces', function () {
+    expect(ms('1   s')).to.be(1000);
+  });
+
+  it('should return NaN if invalid', function () {
+    expect(isNaN(ms('☃'))).to.be(true);
+  });
+
+  it('should be case-insensitive', function () {
+    expect(ms('1.5H')).to.be(5400000);
+  });
+
+  it('should work with numbers starting with .', function () {
+    expect(ms('.5ms')).to.be(.5);
+  });
+})
+
+// long strings
+
+describe('ms(long string)', function(){
+  it('should convert milliseconds to ms', function () {
+    expect(ms('53 milliseconds')).to.be(53);
+  });
+
+  it('should convert msecs to ms', function () {
+    expect(ms('17 msecs')).to.be(17);
+  });
+
+  it('should convert sec to ms', function () {
+    expect(ms('1 sec')).to.be(1000);
+  });
+
+  it('should convert from min to ms', function () {
+    expect(ms('1 min')).to.be(60000);
+  });
+
+  it('should convert from hr to ms', function () {
+    expect(ms('1 hr')).to.be(3600000);
+  });
+
+  it('should convert days to ms', function () {
+    expect(ms('2 days')).to.be(172800000);
+  });
+
+  it('should work with decimals', function () {
+    expect(ms('1.5 hours')).to.be(5400000);
+  });
+})
+
+// numbers
+
+describe('ms(number, { long: true })', function(){
+  it('should support milliseconds', function(){
+    expect(ms(500, { long: true })).to.be('500 ms');
+  })
+
+  it('should support seconds', function(){
+    expect(ms(1000, { long: true })).to.be('1 second');
+    expect(ms(1200, { long: true })).to.be('1 second');
+    expect(ms(10000, { long: true })).to.be('10 seconds');
+  })
+
+  it('should support minutes', function(){
+    expect(ms(60 * 1000, { long: true })).to.be('1 minute');
+    expect(ms(60 * 1200, { long: true })).to.be('1 minute');
+    expect(ms(60 * 10000, { long: true })).to.be('10 minutes');
+  })
+
+  it('should support hours', function(){
+    expect(ms(60 * 60 * 1000, { long: true })).to.be('1 hour');
+    expect(ms(60 * 60 * 1200, { long: true })).to.be('1 hour');
+    expect(ms(60 * 60 * 10000, { long: true })).to.be('10 hours');
+  })
+
+  it('should support days', function(){
+    expect(ms(24 * 60 * 60 * 1000, { long: true })).to.be('1 day');
+    expect(ms(24 * 60 * 60 * 1200, { long: true })).to.be('1 day');
+    expect(ms(24 * 60 * 60 * 10000, { long: true })).to.be('10 days');
+  })
+
+  it('should round', function(){
+    expect(ms(234234234, { long: true })).to.be('3 days');
+  })
+})
+
+// numbers
+
+describe('ms(number)', function(){
+  it('should support milliseconds', function(){
+    expect(ms(500)).to.be('500ms');
+  })
+
+  it('should support seconds', function(){
+    expect(ms(1000)).to.be('1s');
+    expect(ms(10000)).to.be('10s');
+  })
+
+  it('should support minutes', function(){
+    expect(ms(60 * 1000)).to.be('1m');
+    expect(ms(60 * 10000)).to.be('10m');
+  })
+
+  it('should support hours', function(){
+    expect(ms(60 * 60 * 1000)).to.be('1h');
+    expect(ms(60 * 60 * 10000)).to.be('10h');
+  })
+
+  it('should support days', function(){
+    expect(ms(24 * 60 * 60 * 1000)).to.be('1d');
+    expect(ms(24 * 60 * 60 * 10000)).to.be('10d');
+  })
+
+  it('should round', function(){
+    expect(ms(234234234)).to.be('3d');
+  })
+})
